diff options
Diffstat (limited to 'core')
4 files changed, 12 insertions, 14 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/PossiblePaths.java b/core/src/ch/asynk/tankontank/engine/PossiblePaths.java index 417856e..55a5cd9 100644 --- a/core/src/ch/asynk/tankontank/engine/PossiblePaths.java +++ b/core/src/ch/asynk/tankontank/engine/PossiblePaths.java @@ -104,10 +104,10 @@ public class PossiblePaths implements Iterable<Vector3> Tile next = moves[i]; if (next == null) continue; - boolean road = next.road(board.getSide(i)); - int cost = next.costFrom(pawn, board.getSide(i), road); + int cost = next.costFrom(pawn, board.getSide(i)); int r = (mvtLeft - cost); - if (roadMarch & road) r += pawn.getRoadMarchBonus(); + roadMarch &= next.road(board.getSide(i)); + if (roadMarch) r += pawn.getRoadMarchBonus(); if ((board.distance(next, to) <= r)) { if (next == to) { @@ -119,7 +119,7 @@ public class PossiblePaths implements Iterable<Vector3> for (Tile tile : temp) tiles.add(tile); } else { stack.add(next); - findAllPaths(next, (mvtLeft - cost), (roadMarch & road)); + findAllPaths(next, (mvtLeft - cost), roadMarch); stack.remove(stack.size() - 1); } } @@ -174,9 +174,8 @@ public class PossiblePaths implements Iterable<Vector3> for (Tile next : paths.get(i)) { if (prev != null) { Orientation o = Orientation.fromMove(next.col, next.row, prev.col, prev.row); - boolean road = next.road(o); - cost += next.costFrom(pawn, o, road); - roadMarch &= road; + cost += next.costFrom(pawn, o); + roadMarch &= next.road(o); } prev = next; } diff --git a/core/src/ch/asynk/tankontank/engine/SearchBoard.java b/core/src/ch/asynk/tankontank/engine/SearchBoard.java index 840650c..2c5e326 100644 --- a/core/src/ch/asynk/tankontank/engine/SearchBoard.java +++ b/core/src/ch/asynk/tankontank/engine/SearchBoard.java @@ -149,11 +149,10 @@ public class SearchBoard if (dst != null) { Tile t = getTile(dst); - boolean road = t.road(board.getSide(i)); - int cost = t.costFrom(pawn, board.getSide(i), road); + int cost = t.costFrom(pawn, board.getSide(i)); boolean mayMoveOne = first && t.atLeastOneMove(pawn); int r = src.remaining - cost; - boolean roadMarch = road && src.roadMarch; + boolean roadMarch = (src.roadMarch && t.road(board.getSide(i))); if (dst.search == searchCount) { if ((r >= 0) && ((r > dst.remaining) || (roadMarch && ((r + roadMarchBonus) >= dst.remaining)))) { @@ -194,7 +193,7 @@ public class SearchBoard Tile t = getTile(dst); if (!t.road(board.getSide(i))) continue; - int cost = t.costFrom(pawn, board.getSide(i), true); + int cost = t.costFrom(pawn, board.getSide(i)); int r = src.remaining - cost; if (dst.search == searchCount) { diff --git a/core/src/ch/asynk/tankontank/engine/Tile.java b/core/src/ch/asynk/tankontank/engine/Tile.java index 539725b..4065346 100644 --- a/core/src/ch/asynk/tankontank/engine/Tile.java +++ b/core/src/ch/asynk/tankontank/engine/Tile.java @@ -25,7 +25,7 @@ public abstract class Tile implements Drawable, Disposable, Iterable<Pawn> private ArrayDeque<Pawn> stack; public abstract int defenseFor(Pawn pawn, Pawn target, Board.PawnCollection foes); - public abstract int costFrom(Pawn pawn, Orientation side, boolean road); + public abstract int costFrom(Pawn pawn, Orientation side); public abstract boolean isOffMap(); public abstract boolean road(Orientation side); diff --git a/core/src/ch/asynk/tankontank/game/Hex.java b/core/src/ch/asynk/tankontank/game/Hex.java index 7c23392..302dc86 100644 --- a/core/src/ch/asynk/tankontank/game/Hex.java +++ b/core/src/ch/asynk/tankontank/game/Hex.java @@ -84,10 +84,10 @@ public class Hex extends Tile } @Override - public int costFrom(Pawn pawn, Orientation side, boolean road) + public int costFrom(Pawn pawn, Orientation side) { if (hasUnits()) return Integer.MAX_VALUE; - if (road) return 1; + if (road(side)) return 1; int c = 0; switch(terrain) { |