From 0b57bfb1840d0020634c413ef6d4a0f2d88ced99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Mon, 19 Jan 2015 12:24:25 +0100 Subject: PossiblePaths: add boolean canExit(Orientation o) --- .../ch/asynk/tankontank/engine/PossiblePaths.java | 21 +++++++++++++++++++++ .../ch/asynk/tankontank/game/states/StateMove.java | 6 +----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/core/src/ch/asynk/tankontank/engine/PossiblePaths.java b/core/src/ch/asynk/tankontank/engine/PossiblePaths.java index f45b3ac..49a317f 100644 --- a/core/src/ch/asynk/tankontank/engine/PossiblePaths.java +++ b/core/src/ch/asynk/tankontank/engine/PossiblePaths.java @@ -207,6 +207,27 @@ public class PossiblePaths implements Disposable return move; } + public boolean canExit(Orientation o) + { + List ps; + if (ctrlTiles.size() == 0) + ps = paths; + else + ps = filteredPaths; + + int mvt = pawn.getMovementPoints(); + int rBonus = pawn.getRoadMarchBonus(); + boolean road = to.road(o); + int cost = to.exitCost(); + + for (Path p : ps) { + int c = (p.cost + cost); + if ((c <= mvt) || (p.roadMarch && road && (c <= (mvt + rBonus)))) + return true; + } + return false; + } + public Path getPath(int i) { if (ctrlTiles.size() == 0) diff --git a/core/src/ch/asynk/tankontank/game/states/StateMove.java b/core/src/ch/asynk/tankontank/game/states/StateMove.java index 7f2767b..b388862 100644 --- a/core/src/ch/asynk/tankontank/game/states/StateMove.java +++ b/core/src/ch/asynk/tankontank/game/states/StateMove.java @@ -184,12 +184,8 @@ public class StateMove extends StateCommon Zone exitZone = ctrl.battle.getExitZone(unit); if ((exitZone == null) || !exitZone.contains(hex)) return false; - if (map.possiblePaths.size() == 1) { - // TODO pathCost called with applayToPawn from Board it updates Pawn.move - int left = (unit.getMovementPoints() - map.possiblePaths.pathCost(0)); - if (left < 1) + if (!map.possiblePaths.canExit(exitZone.orientation)) return false; - } ctrl.setState(StateType.ESCAPE); return true; } -- cgit v1.1-2-g2b99