diff options
4 files changed, 51 insertions, 45 deletions
diff --git a/core/src/ch/asynk/rustanddust/game/Battle.java b/core/src/ch/asynk/rustanddust/game/Battle.java index 7cd3b37..27a5079 100644 --- a/core/src/ch/asynk/rustanddust/game/Battle.java +++ b/core/src/ch/asynk/rustanddust/game/Battle.java @@ -15,10 +15,12 @@ public interface Battle public MapType getMapType(); - public void changePlayer(); - public Player getVictor(); + public void start(); + + public boolean turnDone(); + public boolean hasReinforcement(); public Zone getEntryZone(Unit unit); diff --git a/core/src/ch/asynk/rustanddust/game/Ctrl.java b/core/src/ch/asynk/rustanddust/game/Ctrl.java index 2f92542..2129f22 100644 --- a/core/src/ch/asynk/rustanddust/game/Ctrl.java +++ b/core/src/ch/asynk/rustanddust/game/Ctrl.java @@ -55,8 +55,6 @@ public class Ctrl implements Disposable this.battle = battle; game.ctrl = this; - this.map = battle.setup(); - this.selectState = new StateSelect(); this.pathState = new StateMove(); this.rotateState = new StateRotate(); @@ -70,14 +68,19 @@ public class Ctrl implements Disposable this.state = selectState; this.stateType = StateType.DONE; - StateCommon.set(game); - this.hud = new Hud(game); this.blockMap = false; this.blockHud = false; - hud.notify(battle.toString(), 2, Position.MIDDLE_CENTER, false); - startPlayerTurn(); + this.map = battle.setup(); + this.hud = new Hud(game); + StateCommon.set(game); + + battle.start(); + hud.update(); + setState(battle.getState()); + + this.hud.notify(battle.toString(), 2, Position.MIDDLE_CENTER, false); } @Override @@ -87,6 +90,18 @@ public class Ctrl implements Disposable map.dispose(); } + private void turnDone() + { + if (battle.turnDone()) + hud.victory(battle.getPlayer(), battle.getOpponent()); + else { + hud.update(); + if (battle.hasReinforcement()) + hud.notify("You have reinforcement", 2, Position.MIDDLE_CENTER, true); + setState(battle.getState()); + } + } + public void animationsOver() { if (hud.dialogActive()) @@ -97,30 +112,11 @@ public class Ctrl implements Disposable private void leaveAnimationState() { - StateType tmp = stateAfterAnimation; stateAfterAnimation = StateType.DONE; setState(tmp); } - private void startPlayerTurn() - { - battle.getPlayer().turnStart(); - // hud.notify(battle.getPlayer().getName() + "'s turn", 2, Position.MIDDLE_CENTER, true); - if (battle.hasReinforcement()) - hud.notify("You have reinforcement", 2, Position.MIDDLE_CENTER, true); - hud.update(); - setState(battle.getState()); - } - - private void endPlayerTurn() - { - battle.getPlayer().turnEnd(); - Player winner = battle.getVictor(); - if (winner != null) - hud.victory(winner, ((winner == battle.getPlayer()) ? battle.getOpponent() : battle.getPlayer())); - } - private StateType actionAborted() { hud.notify("Action canceled"); @@ -132,14 +128,6 @@ public class Ctrl implements Disposable return nextState; } - private void turnDone() - { - map.turnDone(); - endPlayerTurn(); - battle.changePlayer(); - startPlayerTurn(); - } - private StateType actionDone() { StateType nextState = this.state.execute(); diff --git a/core/src/ch/asynk/rustanddust/game/battles/BattleCommon.java b/core/src/ch/asynk/rustanddust/game/battles/BattleCommon.java index 10534c8..b1c5192 100644 --- a/core/src/ch/asynk/rustanddust/game/battles/BattleCommon.java +++ b/core/src/ch/asynk/rustanddust/game/battles/BattleCommon.java @@ -71,21 +71,31 @@ public abstract class BattleCommon implements Battle } @Override - public Player getPlayer() + public boolean turnDone() { - return currentPlayer; + map.turnDone(); + currentPlayer.turnEnd(); + Player winner = getVictor(); + if (winner != null) { + currentPlayer = winner; + return true; + } else { + currentPlayer = getOpponent(); + currentPlayer.turnStart(); + return false; + } } @Override - public Player getOpponent() + public Player getPlayer() { - return ((currentPlayer == usPlayer) ? gePlayer : usPlayer); + return currentPlayer; } @Override - public void changePlayer() + public Player getOpponent() { - currentPlayer = getOpponent(); + return ((currentPlayer == usPlayer) ? gePlayer : usPlayer); } @Override diff --git a/core/src/ch/asynk/rustanddust/game/battles/BattleTest.java b/core/src/ch/asynk/rustanddust/game/battles/BattleTest.java index b9b6333..f161a36 100644 --- a/core/src/ch/asynk/rustanddust/game/battles/BattleTest.java +++ b/core/src/ch/asynk/rustanddust/game/battles/BattleTest.java @@ -27,6 +27,16 @@ public class BattleTest extends BattleCommon } @Override + public void start() + { + map.actionDone(); + map.turnDone(); + usPlayer.turnEnd(); + gePlayer.turnEnd(); + currentPlayer = gePlayer; + } + + @Override public Player getVictor() { if (usPlayer.getTurnDone() > 2) @@ -93,10 +103,6 @@ public class BattleTest extends BattleCommon setUnit(map, usPlayer, UnitId.US_PERSHING, 6, 5, Orientation.SOUTH, usExit); setUnit(map, usPlayer, UnitId.US_INFANTRY, 5, 3, Orientation.NORTH_EAST, usExit); setUnit(map, usPlayer, UnitId.US_AT_GUN, 6, 1, Orientation.SOUTH, usExit); - usPlayer.turnEnd(); - map.init(); - map.turnDone(); - currentPlayer = gePlayer; return this.map; } |