package com.gebauz.pingk.entities;
import com.gebauz.pingk.game.GameConsts;
import com.gebauz.pingk.game.GameLogic;
/** Manages the logic behind the powerups. */
public class PowerUpLogic
extends Entity
{
private float mConcaveTime = 0.0f
;
private float mMosaicTime = 0.0f
;
private float mFlowerTime = 0.0f
;
private float mSlowMoTime = 0.0f
;
private int mCrystalActiveCount =
0;
public PowerUpLogic
(GameLogic gameLogic
)
{
super(gameLogic
);
}
@
Override
public void init
()
{
}
@
Override
public void exit
()
{
}
public void update
(float deltaTime
)
{
// PowerUpEffect should be unaffected by slo mo
if (isSlowMoActive
())
deltaTime /= GameConsts.
POWERUP_SLOWMO_FACTOR;
if (mConcaveTime
>= 0.0f
)
mConcaveTime -= deltaTime
;
if (mMosaicTime
>= 0.0f
)
mMosaicTime -= deltaTime
;
if (mFlowerTime
>= 0.0f
)
mFlowerTime -= deltaTime
;
if (mSlowMoTime
>= 0.0f
)
mSlowMoTime -= deltaTime
;
//Log.v(GameConsts.LOG_TAG, "ConcaveTime=" + mConcaveTime);
}
public void render
()
{
}
public boolean isConcaveActive
()
{
return (mConcaveTime
> 0.0f
);
}
public void activateConcave
()
{
mConcaveTime = GameConsts.
POWERUP_CONCAVE_TIME;
}
public boolean isMosaicActive
()
{
return (mMosaicTime
> 0.0f
);
}
public float getMoasicTime
()
{
return mMosaicTime
;
}
public boolean isMosaicFading
()
{
if (mMosaicTime
< GameConsts.
POWERUP_MOSAIC_FADE_TIME)
return true;
else if (mMosaicTime
> (GameConsts.
POWERUP_MOSAIC_TIME - GameConsts.
POWERUP_MOSAIC_FADE_TIME))
return true;
return false;
}
public void activateMosaic
()
{
if (isMosaicActive
())
mMosaicTime = GameConsts.
POWERUP_MOSAIC_TIME - GameConsts.
POWERUP_MOSAIC_FADE_TIME;
else
mMosaicTime = GameConsts.
POWERUP_MOSAIC_TIME;
}
public boolean isFlowerActive
()
{
return (mFlowerTime
> 0.0f
);
}
public boolean isFlowerFading
()
{
if (mFlowerTime
< GameConsts.
POWERUP_FLOWER_TIME)
return true;
else if (mFlowerTime
> (GameConsts.
POWERUP_FLOWER_TIME - GameConsts.
POWERUP_FLOWER_FADE_TIME))
return true;
return false;
}
public float getFlowerTime
()
{
return mFlowerTime
;
}
public void activateFlower
()
{
if (isFlowerActive
())
mFlowerTime = GameConsts.
POWERUP_FLOWER_TIME - GameConsts.
POWERUP_FLOWER_FADE_TIME;
else
mFlowerTime = GameConsts.
POWERUP_FLOWER_TIME;
}
public boolean isSlowMoActive
()
{
return (mSlowMoTime
> 0.0f
);
}
public void activateSlowMo
()
{
mSlowMoTime = GameConsts.
POWERUP_SLOWMO_TIME;
}
public boolean isCrystalActive
()
{
return (mCrystalActiveCount
> 0);
}
public void activateCrystal
()
{
mCrystalActiveCount++
;
}
public void deactivateCrystal
()
{
mCrystalActiveCount--
;
if (mCrystalActiveCount
< 0)
mCrystalActiveCount =
0;
}
}