Skip to content
Snippets Groups Projects
Commit e590450b authored by Matyáš Latner's avatar Matyáš Latner
Browse files

#19 AbstractTablexiaGame state API

parent fe88d05b
Branches
Tags
No related merge requests found
......@@ -47,6 +47,8 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T>
public static final String VICTORYSCREEN_RATINGSTAR_DISABLED = "ratingstar_disabled";
public static final String VICTORYSCREEN_RATINGSTAR_ENABLED = "ratingstar_enabled";
public static final String GAME_STATE_RANDOM_SEED = "randomSeed";
private TablexiaRandom random;
private GameDifficulty gameDifficulty;
private Actor screenDimmer;
......@@ -77,6 +79,12 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T>
//////////////////////////// ABSTRACT TABLEXIA SCREEN LIFECYCLE
@Override
protected final void screenPaused(Map<String, String> screenState) {
gamePaused(screenState);
screenState.put(GAME_STATE_RANDOM_SEED, String.valueOf(getRandom().getSeed()));
}
@Override
protected final void screenLoaded(Map<String, String> screenState) {
performShowTransaction(new Runnable() {
......@@ -85,7 +93,7 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T>
screenVisible();
}
});
gameLoaded();
gameLoaded(screenState);
}
@Override
......@@ -96,7 +104,13 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T>
@Override
protected final T prepareScreenData(Map<String, String> screenState) {
random = new TablexiaRandom();
String randomSeedString = screenState.get(GAME_STATE_RANDOM_SEED);
if (randomSeedString != null && randomSeedString.length() > 0) {
random = new TablexiaRandom(Long.valueOf(randomSeedString));
} else {
random = new TablexiaRandom();
}
printScreenInfo(RANDOM_SEED_SCREEN_INFO_LABEL, "" + getRandom().getSeed());
gameDifficulty = TablexiaSettings.getInstance().getGameDifficulty(GameDefinition.getGameDefinitionForClass((Class<? extends AbstractTablexiaGame<?>>) getClass()));
......@@ -104,7 +118,7 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T>
Log.info(getClass(), "Start game data loading with: " + getRandom().toString() + " and difficulty: " + getGameDifficulty());
return prepareGameData();
return prepareGameData(screenState);
}
@Override
......@@ -127,7 +141,10 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T>
//////////////////////////// ABSTRACT TABLEXIA GAME LIFECYCLE
protected T prepareGameData() {
protected void gamePaused(Map<String, String> gameState) {
}
protected T prepareGameData(Map<String, String> gameState) {
return null;
}
......@@ -135,7 +152,8 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T>
return getTextureRegionForAtlas(GLOBAL_ATLAS_NAME, regionName);
}
protected void gameLoaded() {};
protected void gameLoaded(Map<String, String> gameState) {
}
//////////////////////////// ABSTRACT TABLEXIA GAME
......
......@@ -48,16 +48,14 @@ public class KidnappingGame extends AbstractTablexiaGame<GameState> {
}
@Override
protected GameState prepareGameData() {
protected GameState prepareGameData(java.util.Map<String, String> gameState) {
GameState gs = GameState.GameStateFactory.createInstance(getRandom(), getGameDifficulty(), Properties.MAP_WIDTH, Properties.MAP_HEIGHT, Properties.GAME_STOPS, Properties.MAP_WIDTH / 2, Properties.MAP_HEIGHT / 2);
Log.info(getClass(), "Game State: " + gs.toString());
return gs;
}
@Override
protected void gameLoaded() {
super.gameLoaded();
protected void gameLoaded(java.util.Map<String, String> gameState) {
// TODO show rule screen
// TODO show sub-rule screen
getStage().setDebugAll(TablexiaSettings.getInstance().isShowBoundingBoxes());
......
......@@ -56,7 +56,7 @@ public class NightWatchGame extends AbstractTablexiaGame<int[][]> {
private TextureRegion clickmap;
@Override
protected void gameLoaded() {
protected void gameLoaded(Map<String, String> gameState) {
contentGroup = new Group();
contentGroup.setSize(SCREEN_WIDTH, SCREEN_MIN_HEIGHT);
getStage().addActor(contentGroup);
......@@ -75,7 +75,7 @@ public class NightWatchGame extends AbstractTablexiaGame<int[][]> {
}
@Override
protected int[][] prepareGameData() {
protected int[][] prepareGameData(Map<String, String> gameState) {
clickmap = getScreenTextureRegion(TextureHelper.getClickMapPath(difficulty));
if (!clickmap.getTexture().getTextureData().isPrepared()) {
clickmap.getTexture().getTextureData().prepare();
......
......@@ -8,6 +8,7 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import java.util.List;
import java.util.Map;
import cz.nic.tablexia.game.AbstractTablexiaGame;
import cz.nic.tablexia.game.games.robbery.assets.RobberyAssets;
......@@ -40,7 +41,7 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
}
@Override
protected GameRule prepareGameData() {
protected GameRule prepareGameData(Map<String, String> gameState) {
GameRulesDefinition rule = GameRulesDefinition.getRandomGameRuleForDifficulty(getGameDifficulty(), getRandom());
GameRule gameRule = rule.getGameRuleInstance(getRandom(), CREATURES_COUNT, THIEVES_COUNT);
gameRule.generateCreatures();
......@@ -71,7 +72,7 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
}
@Override
protected void gameLoaded() {
protected void gameLoaded(Map<String, String> gameState) {
showRuleScreen(false);
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment