Rev 676 |
Rev 690 |
Go to most recent revision |
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/testcase04.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
; }
}