Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

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;
        }

}