Subversion Repositories AndroidProjects

Rev

Rev 690 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.gebauz.PonPonChun.game;

import com.gebauz.Bauzoid.gamestates.GameStateManager;
import com.gebauz.Bauzoid.parser.ScanException;
import com.gebauz.Bauzoid.parser.Tokenizer;
import com.gebauz.PonPonChun.game.entities.Block;

public class GameModeLogicEndless extends GameModeLogic
{

        // Constants========================================================================================
       
        public static final int MAX_SPEED = 10;
        public static final int MAX_ROWS = 10;
        public static final int MIN_SPEED = 1;
        public static final int MIN_ROWS = 0;
        public static final int DEFAULT_SPEED = 1;
        public static final int DEFAULT_ROWS = 3;
       
        public static final int SPEEDUP_THRESHOLD = 1000;
        public static final float SPEEDUP_AMOUNT = 0.05f;
       
       
       
        // Embedded Types===================================================================================

        // Members==========================================================================================
       
        private int mLastScore = 0;
        private int mBaseSpeedLevel = 1;

        // Methods==========================================================================================

        public GameModeLogicEndless(GameLogic gameLogic)
        {
                super(gameLogic, GameLogic.GameMode.ENDLESS);
        }

        @Override
        public void init(String param)
        {
                mBlockRandomizer.addEntry(Block.TYPE_BLACK, 20);
                mBlockRandomizer.addEntry(Block.TYPE_WHITE, 20);
                mBlockRandomizer.addEntry(Block.TYPE_RED, 20);
                mBlockRandomizer.addEntry(Block.TYPE_GREEN, 20);
                mBlockRandomizer.addEntry(Block.TYPE_BLUE, 20);
                mBlockRandomizer.addEntry(Block.TYPE_YELLOW, 20);
                mBlockRandomizer.addEntry(Block.TYPE_BOMB, 15);
                mBlockRandomizer.addEntry(Block.TYPE_CRYSTAL, 10);
                mBlockRandomizer.addEntry(Block.TYPE_JOKER, 20);
                mBlockRandomizer.addEntry(Block.TYPE_CLOCK, 20);
                mBlockRandomizer.addEntry(Block.TYPE_CHERRY, 20);
                mBlockRandomizer.addEntry(Block.TYPE_BANANA, 15);
                mBlockRandomizer.addEntry(Block.TYPE_APPLE, 10);
                mBlockRandomizer.addEntry(Block.TYPE_GRAPES, 5);
               
                // interpret param for level/stage/speed
                int speed = 3;
                int rows = 3;
                try
                {
                        Tokenizer t = new Tokenizer(param);
                        speed = (int)t.readNumber();
                        t.readToken(":");
                        rows = (int)t.readNumber();            
                }
                catch (ScanException ex)
                {
                        ex.log(GameConsts.LOG_TAG);
                }
               
                randomizeInitialLevel(rows);
               
                mBaseSpeedLevel = speed;
               
                //getGameLogic().getPlayField().loadPlayField(com.badlogic.gdx.Gdx.files.internal("data/levels/testcase07.txt"));
                getGameLogic().getPlayField().setAdvanceSpeed(SPEEDUP_AMOUNT * mBaseSpeedLevel);
                getGameLogic().getHeadsUpDisplay().getLabelB().getTextElement().setCaption(String.format("LV. %02d", mBaseSpeedLevel));
               
                mLastScore = 0;
        }
       
        @Override
        public void restart()
        {
                GameStateManager gs = getGameLogic().getGameStateManager();
                gs.switchTo(gs.getCurrentState().getClass(), gs.getCurrentParam());
        }
       
        @Override
        public void exit()
        {

        }

        @Override
        public void update(float deltaTime)
        {
                // speed up at every SPEEDUP_THRESHOLD points
                int scoreDelta = getGameLogic().getScore() - mLastScore;
                if (scoreDelta > SPEEDUP_THRESHOLD)
                {
                        mLastScore += SPEEDUP_THRESHOLD;
                        mBaseSpeedLevel++;
                        getGameLogic().getPlayField().setAdvanceSpeed(SPEEDUP_AMOUNT * mBaseSpeedLevel);
                        getGameLogic().getHeadsUpDisplay().getLabelB().getTextElement().setCaption(String.format("LV. %02d", mBaseSpeedLevel));
                }
        }

        @Override
        public void render()
        {
                //if (getGameLogic().getPlayField().isGameOver())
                        //PonPonChunCustomServices.getInstance().getScoringFont().drawText("GAME OVER", 100, 300, GameConsts.WHITE_COLOR, 4);
        }
       
        // Getters/Setters==================================================================================
       
        public int getDifficulty() { return mBaseSpeedLevel; }
}