summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2016-01-04 12:19:54 +0100
committerJérémy Zurcher <jeremy@asynk.ch>2016-01-04 12:19:54 +0100
commit77714a9d5cb226889e820279f73e3444a38a17f3 (patch)
tree7c34fe7b1cbc5c680ed53019ffa8f3e1bda711b2 /core
parent2d90eee737b2762d202152c720d34eebf34d0e96 (diff)
downloadRustAndDust-77714a9d5cb226889e820279f73e3444a38a17f3.zip
RustAndDust-77714a9d5cb226889e820279f73e3444a38a17f3.tar.gz
PathBuilder: fix for at least one move
Diffstat (limited to 'core')
-rw-r--r--core/src/ch/asynk/rustanddust/engine/PathBuilder.java23
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);