diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2016-01-04 12:19:54 +0100 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2016-01-04 12:19:54 +0100 |
commit | 77714a9d5cb226889e820279f73e3444a38a17f3 (patch) | |
tree | 7c34fe7b1cbc5c680ed53019ffa8f3e1bda711b2 /core/src/ch/asynk | |
parent | 2d90eee737b2762d202152c720d34eebf34d0e96 (diff) | |
download | RustAndDust-77714a9d5cb226889e820279f73e3444a38a17f3.zip RustAndDust-77714a9d5cb226889e820279f73e3444a38a17f3.tar.gz |
PathBuilder: fix for at least one move
Diffstat (limited to 'core/src/ch/asynk')
-rw-r--r-- | core/src/ch/asynk/rustanddust/engine/PathBuilder.java | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/core/src/ch/asynk/rustanddust/engine/PathBuilder.java b/core/src/ch/asynk/rustanddust/engine/PathBuilder.java index c458369..16c2f86 100644 --- a/core/src/ch/asynk/rustanddust/engine/PathBuilder.java +++ b/core/src/ch/asynk/rustanddust/engine/PathBuilder.java @@ -154,18 +154,19 @@ public class PathBuilder implements Disposable int l = (m + (r ? pawn.getRoadMarchBonus() : 0)); - if (board.distance(next, to) <= l) { - if (next == to) { - Path path = Path.get(stack.size() + 1); - for (Tile t: stack) { - path.tiles.add(t); - tiles.add(t); - } - path.roadMarch = r; - path.fitness = f; - path.cost = (pawn.getMovementPoints() - m); - paths.add(path); + if ((next == to) && ((l >= 0) || ((stack.size() == 0) && next.atLeastOneMove(pawn)))) { + Path path = Path.get(stack.size() + 1); + for (Tile t: stack) { + path.tiles.add(t); + tiles.add(t); } + path.roadMarch = r; + path.fitness = f; + path.cost = (pawn.getMovementPoints() - m); + paths.add(path); + } + + if (l >= board.distance(next, to)) { stack.add(next); findAllPaths(next, m, f, r); stack.remove(stack.size() - 1); |