diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2014-10-31 15:45:58 +0100 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2014-10-31 15:45:58 +0100 |
commit | ea211dc3b942c26874fecf6812d4894a364dfc07 (patch) | |
tree | 18b70d9191ca4e042c57bdf6fab5fa74a9621342 /core/src/ch/asynk/tankontank | |
parent | f2b3e093d2602bafa0669ef90a376a75cf4b7489 (diff) | |
download | RustAndDust-ea211dc3b942c26874fecf6812d4894a364dfc07.zip RustAndDust-ea211dc3b942c26874fecf6812d4894a364dfc07.tar.gz |
Map,States: implement infantry move after successfull attack
Diffstat (limited to 'core/src/ch/asynk/tankontank')
-rw-r--r-- | core/src/ch/asynk/tankontank/game/Ctrl.java | 6 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/game/Map.java | 12 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/game/State.java | 1 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/game/states/StateAttack.java | 7 |
4 files changed, 23 insertions, 3 deletions
diff --git a/core/src/ch/asynk/tankontank/game/Ctrl.java b/core/src/ch/asynk/tankontank/game/Ctrl.java index 3ecb455..bbc18a3 100644 --- a/core/src/ch/asynk/tankontank/game/Ctrl.java +++ b/core/src/ch/asynk/tankontank/game/Ctrl.java @@ -9,6 +9,7 @@ import ch.asynk.tankontank.game.states.StateMove; import ch.asynk.tankontank.game.states.StateRotate; import ch.asynk.tankontank.game.states.StatePromote; import ch.asynk.tankontank.game.states.StateAttack; +import ch.asynk.tankontank.game.states.StateBreak; import ch.asynk.tankontank.game.states.StateAnimation; public class Ctrl implements Disposable @@ -26,6 +27,7 @@ public class Ctrl implements Disposable private State rotateState; private State promoteState; private State attackState; + private State breakState; private State animationState; private int animationCount = 0; @@ -48,6 +50,7 @@ public class Ctrl implements Disposable this.rotateState = new StateRotate(); this.promoteState = new StatePromote(); this.attackState = new StateAttack(); + this.breakState = new StateBreak(); this.animationState = new StateAnimation(); this.state = selectState; @@ -141,6 +144,9 @@ public class Ctrl implements Disposable case ATTACK: this.state = attackState; break; + case BREAK: + this.state = breakState; + break; case ANIMATION: this.state = animationState; break; diff --git a/core/src/ch/asynk/tankontank/game/Map.java b/core/src/ch/asynk/tankontank/game/Map.java index f391076..db0f6b6 100644 --- a/core/src/ch/asynk/tankontank/game/Map.java +++ b/core/src/ch/asynk/tankontank/game/Map.java @@ -32,6 +32,7 @@ public abstract class Map extends Board public final Board.PawnCollection possibleTargets; public final Board.PawnCollection attackAssists; public final Board.PawnCollection activatedPawns; + public final Board.PawnCollection breakPawns; private final SpriteAnimation explosion; private final SpriteAnimation explosions; @@ -59,8 +60,8 @@ public abstract class Map extends Board possibleTargets = new PawnSet(this, 10); attackAssists = new PawnSet(this, 6); - activatedPawns = new PawnSet(this, 7); + breakPawns = new PawnSet(this, 4); } @Override @@ -82,6 +83,7 @@ public abstract class Map extends Board moveablePawns.clear(); attackAssists.clear(); activatedPawns.clear(); + breakPawns.clear(); } public Hex getHexAt(float x, float y) @@ -269,8 +271,12 @@ public abstract class Map extends Board } })); - for (Pawn p : activatedPawns) + breakPawns.clear(); + for (Pawn p : activatedPawns) { p.attack(target); + if (p.isA(Unit.UnitType.INFANTRY)) + breakPawns.add(p); + } if ((activatedPawns.size() == 1) && pawn.isA(Unit.UnitType.AT_GUN) && target.isHardTarget()) activatedPawns.clear(); @@ -304,6 +310,8 @@ public abstract class Map extends Board public void showAttackAssists() { attackAssists.enable(Unit.ATTACK_ASSIST, true); } public void hideAttackAssists() { attackAssists.enable(Unit.ATTACK, false); attackAssists.enable(Unit.ATTACK_ASSIST, false); } + public void showBreakPawns() { breakPawns.enable(Unit.MOVE, true); } + public void hideBreakPawns() { breakPawns.enable(Unit.MOVE, false); } public void selectHex(Hex hex) { enableOverlayOn(hex, Hex.SELECT, true); } diff --git a/core/src/ch/asynk/tankontank/game/State.java b/core/src/ch/asynk/tankontank/game/State.java index 8f004c4..d1d64ef 100644 --- a/core/src/ch/asynk/tankontank/game/State.java +++ b/core/src/ch/asynk/tankontank/game/State.java @@ -7,6 +7,7 @@ public interface State MOVE, ROTATE, ATTACK, + BREAK, PROMOTE, ANIMATION }; diff --git a/core/src/ch/asynk/tankontank/game/states/StateAttack.java b/core/src/ch/asynk/tankontank/game/states/StateAttack.java index 84ee3d8..34f7d61 100644 --- a/core/src/ch/asynk/tankontank/game/states/StateAttack.java +++ b/core/src/ch/asynk/tankontank/game/states/StateAttack.java @@ -81,8 +81,13 @@ public class StateAttack extends StateCommon int d1 = ctrl.player.d6(); int d2 = ctrl.player.d6(); System.err.print(" attack (" + selectedHex.getCol() + ";" + selectedHex.getRow() + ") -> (" + to.getCol() + ";" + to.getRow() + ") : 2D6 -> (" + d1 + " + " + d2 + ")"); - if (map.attackPawn(selectedUnit, activeUnit, d1 + d2)) + if (map.attackPawn(selectedUnit, activeUnit, d1 + d2)) { ctrl.player.casualty(activeUnit); + if (map.breakPawns.size() > 0) + setNextState(StateType.BREAK); + } + + activeUnit.showTarget(); ctrl.setState(StateType.ANIMATION); |