diff options
Diffstat (limited to 'core/src/ch/asynk/rustanddust/game')
-rw-r--r-- | core/src/ch/asynk/rustanddust/game/ctrl/Solo.java | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/core/src/ch/asynk/rustanddust/game/ctrl/Solo.java b/core/src/ch/asynk/rustanddust/game/ctrl/Solo.java index 0d29d6d..19dd390 100644 --- a/core/src/ch/asynk/rustanddust/game/ctrl/Solo.java +++ b/core/src/ch/asynk/rustanddust/game/ctrl/Solo.java @@ -15,8 +15,7 @@ public class Solo extends Ctrl @Override public void init() { - GameRecord r = loadState(); - if (r == null) { + if (!loadState()) { int me = game.backend.getMyId(); int other = game.backend.getOpponentId(); gameId = game.db.storeGameGetId(other, battle.getId(), game.config.gameMode.i); @@ -24,29 +23,38 @@ public class Solo extends Ctrl battle.getOpponent().id = other; battle.initialDeployment(this); synched = true; - } else { - load(Marshal.Mode.MAP, r.map); - load(Marshal.Mode.PLAYERS, r.players); - load(Marshal.Mode.ORDERS, r.orders); - battle.getMap().clearMarshalUnits(); - synched = r.synched; - r.dispose(); } } - private GameRecord loadState() + private boolean loadState() { GameRecord r = null; gameId = game.config.gameId; + switch (game.config.loadMode) { - case NEW: break; - case RESUME: r = game.db.loadGame(gameId); break; - case REPLAY_LAST: r = game.db.loadLastTurn(gameId); break; - case REPLAY_BATTLE: - // TODO REPLAY_BATTLE + case NEW: break; + case RESUME: r = game.db.loadGame(gameId); break; + case REPLAY_LAST: r = game.db.loadLastTurn(gameId); break; + case REPLAY_BATTLE: r = game.db.loadTurn(gameId, 0); break; + } + + if (r == null) + return false; + + load(Marshal.Mode.MAP, r.map); + load(Marshal.Mode.PLAYERS, r.players); + load(Marshal.Mode.ORDERS, r.orders); + switch (game.config.loadMode) + { + case REPLAY_BATTLE: break; + default: + battle.getMap().clearMarshalUnits(); break; } - return r; + synched = r.synched; + r.dispose(); + + return true; } } |