diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2014-11-14 17:01:47 +0100 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2014-11-14 17:01:47 +0100 |
commit | 8e5f602c0368ea074355cf032c034f10fddde9c3 (patch) | |
tree | ed0d7a6981a707815dd446782f14ac3e64855e26 /core/src/ch/asynk/tankontank/game | |
parent | ae6ee1006b0ed8829fae2ee24ca1ab24a1c96343 (diff) | |
download | RustAndDust-8e5f602c0368ea074355cf032c034f10fddde9c3.zip RustAndDust-8e5f602c0368ea074355cf032c034f10fddde9c3.tar.gz |
Pawn,Board,Map,StateRotate: use regular move for rotation
Diffstat (limited to 'core/src/ch/asynk/tankontank/game')
-rw-r--r-- | core/src/ch/asynk/tankontank/game/Map.java | 7 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/game/states/StateRotate.java | 35 |
2 files changed, 19 insertions, 23 deletions
diff --git a/core/src/ch/asynk/tankontank/game/Map.java b/core/src/ch/asynk/tankontank/game/Map.java index 3735d40..089c93b 100644 --- a/core/src/ch/asynk/tankontank/game/Map.java +++ b/core/src/ch/asynk/tankontank/game/Map.java @@ -198,13 +198,6 @@ public abstract class Map extends Board return startMove(pawn); } - public int rotatePawn(Pawn pawn, Orientation o) - { - rotatePawn(pawn, o, notifyDoneAnimation(pawn)); - - return startMove(pawn); - } - public void revertMoves() { TankOnTank.debug(" revertMoves()"); diff --git a/core/src/ch/asynk/tankontank/game/states/StateRotate.java b/core/src/ch/asynk/tankontank/game/states/StateRotate.java index ec085b0..814f90f 100644 --- a/core/src/ch/asynk/tankontank/game/states/StateRotate.java +++ b/core/src/ch/asynk/tankontank/game/states/StateRotate.java @@ -17,16 +17,23 @@ public class StateRotate extends StateCommon ctrl.hud.actionButtons.show(Buttons.ROTATE.b | ((ctrl.cfg.canCancel) ? Buttons.ABORT.b : 0)); ctrl.hud.actionButtons.setOn(Buttons.ROTATE); - if (prevState == StateType.MOVE) { - rotateOnly = false; - if (to == null) - TankOnTank.debug("to is null but should not be"); - map.showFinalPath(to); - } else { - rotateOnly = true; + if (activeUnit == null) + activeUnit = selectedUnit; + if (to == null) to = activeUnit.getHex(); + + if (!map.possiblePaths.isSet()) { + map.possiblePaths.init(activeUnit); + map.possiblePaths.build(to); } + if (map.possiblePaths.size() != 1) + TankOnTank.debug("ERROR: possiblePaths.size() == " + map.possiblePaths.size()); + + rotateOnly = (to == activeUnit.getHex()); + + if (!rotateOnly) + map.showFinalPath(to); map.selectHex(activeUnit.getHex()); map.showDirections(to); @@ -40,6 +47,8 @@ public class StateRotate extends StateCommon map.hideFinalPath(to); map.hideDirections(to); map.hideOrientation(to); + map.possiblePaths.clear(); + to = null; } @Override @@ -105,15 +114,9 @@ public class StateRotate extends StateCommon StateType whenDone = StateType.DONE; ctrl.hud.notify("Move " + activeUnit); - if (rotateOnly) { - ctrl.setAnimationCount(1); - if (map.rotatePawn(activeUnit, o) > 0) - whenDone = StateType.MOVE; - } else { - ctrl.setAnimationCount(1); - if (map.movePawn(activeUnit, o) > 0) - whenDone = StateType.MOVE; - } + ctrl.setAnimationCount(1); + if (map.movePawn(activeUnit, o) > 0) + whenDone = StateType.MOVE; ctrl.setState(StateType.ANIMATION, whenDone); } |