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

#19 Saving game state of Robbery game

parent 85cf8361
No related branches found
No related tags found
No related merge requests found
......@@ -256,8 +256,7 @@ public class GameScreen extends AbstractTablexiaScreen<Void> {
private float creatureMiddle2PositionY;
private float creatureFinishPositionX;
private float creatureFinishPositionY;
private int creatureNumber = -1;
private boolean running;
......@@ -330,10 +329,10 @@ public class GameScreen extends AbstractTablexiaScreen<Void> {
}
private void showNextCreature(final List<CreatureRoot> creatures) {
creatureNumber++;
if ((creatureNumber < creatures.size()) && (getNumberOfMistakesInGame() < 3)) {
final float duration = getCreatureMoveDurationForCreatureNumber(creatureNumber);
final CreatureRoot creature = creatures.get(creatureNumber);
if ((RobberyGame.getRobberyActualCreatureNumber() < creatures.size()) && (getNumberOfMistakesInGame() < 3)) {
printScreenInfo("Character", (RobberyGame.getRobberyActualCreatureNumber() + 1) + "/" + creatures.size());
final float duration = getCreatureMoveDurationForCreatureNumber(RobberyGame.getRobberyActualCreatureNumber());
final CreatureRoot creature = creatures.get(RobberyGame.getRobberyActualCreatureNumber());
float creatureRatio = (getStage().getHeight() * CREATURE_SIZE_RATIO) / creature.getHeight();
creature.setSize(creature.getWidth() * creatureRatio, creature.getHeight() * creatureRatio);
creature.setOrigin(Align.center);
......@@ -382,7 +381,8 @@ public class GameScreen extends AbstractTablexiaScreen<Void> {
InfoItem.ALARM.show();
// getGameManager().setExtraInt2AndSave(getGameManager().getExtraInt2() + 1);
}
if (running) {
if (running) {
RobberyGame.setRobberyActualCreatureNumber(RobberyGame.getRobberyActualCreatureNumber() + 1);
showNextCreature(creatures);
}
}
......@@ -437,6 +437,6 @@ public class GameScreen extends AbstractTablexiaScreen<Void> {
// });
} else {
RobberyGame.gameRobberyComplete();
}
}
}
}
......@@ -18,10 +18,12 @@ import cz.nic.tablexia.game.games.robbery.rules.GameRulesDefinition;
import cz.nic.tablexia.screen.AbstractTablexiaScreen;
public class RobberyGame extends AbstractTablexiaGame<GameRule> {
private static int CREATURES_COUNT = 50;
private static int THIEVES_COUNT = 8;
public static final String ACTUAL_CREATURE_NUMBER = "actualCreatureNumber";
private static RobberyGame instance = null;
private InputMultiplexer inputMultiplexer;
......@@ -29,6 +31,8 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
private boolean isRootScreenVisible;
private boolean isComponentScreenVisible;
private static int actualCreatureNumber;
//////////////////////////// SCREEN LOADERS
......@@ -46,6 +50,12 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
GameRule gameRule = rule.getGameRuleInstance(getRandom(), CREATURES_COUNT, THIEVES_COUNT);
gameRule.generateCreatures();
if (gameState != null && gameState.containsKey(ACTUAL_CREATURE_NUMBER)) {
actualCreatureNumber = Integer.valueOf(gameState.get(ACTUAL_CREATURE_NUMBER));
} else {
actualCreatureNumber = 0;
}
printScreenInfo("Game Rule", gameRule.getGameRuleDefinition().name());
return gameRule;
......@@ -73,7 +83,11 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
@Override
protected void gameLoaded(Map<String, String> gameState) {
showRuleScreen(false);
if (actualCreatureNumber > 0) {
showGameScreen(false);
} else {
showRuleScreen(false);
}
}
@Override
......@@ -95,7 +109,12 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
actualScreen.render(delta);
}
}
@Override
protected void gamePaused(Map<String, String> gameState) {
gameState.put(ACTUAL_CREATURE_NUMBER, String.valueOf(actualCreatureNumber));
}
@Override
protected void screenDisposed() {
actualScreen.dispose();
......@@ -105,7 +124,7 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
//////////////////////////// COMPONENT SCREENS
private void showScreen(final AbstractTablexiaScreen<Void> newScreen, boolean transaction) {
isComponentScreenVisible = false;
if (transaction) {
......@@ -149,10 +168,10 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
lastScreen.dispose();
}
}
private void showGameScreen(final boolean transaction) {
Gdx.app.postRunnable(new Runnable() {
@Override
public void run() {
showScreen(new GameScreen(), transaction);
......@@ -162,7 +181,7 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
private void showRuleScreen(final boolean transaction) {
Gdx.app.postRunnable(new Runnable() {
@Override
public void run() {
showScreen(new RuleScreen(), transaction);
......@@ -173,6 +192,14 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
//////////////////////////// LOADERS ACCESS
public static int getRobberyActualCreatureNumber() {
return actualCreatureNumber;
}
public static void setRobberyActualCreatureNumber(int actualCreatureNumber) {
RobberyGame.actualCreatureNumber = actualCreatureNumber;
}
public static TextureRegion getRobberyTextureRegion(String regionName) {
if (instance != null) {
return instance.getScreenTextureRegion(regionName);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment