summaryrefslogtreecommitdiffstats
path: root/core/src
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2014-11-14 16:53:07 +0100
committerJérémy Zurcher <jeremy@asynk.ch>2014-11-14 16:53:07 +0100
commit14223fe9fd30832ddfc2798ad6f287a5888592ea (patch)
tree905bef4906e131d3f1dbf3cf2565f300c5a63dbc /core/src
parent944d1d2729b898f92083c4981a919116e6d0baa9 (diff)
downloadRustAndDust-14223fe9fd30832ddfc2798ad6f287a5888592ea.zip
RustAndDust-14223fe9fd30832ddfc2798ad6f287a5888592ea.tar.gz
PossiblePaths: support rotation has moves of distance 0 and cost 0
Diffstat (limited to 'core/src')
-rw-r--r--core/src/ch/asynk/tankontank/engine/PossiblePaths.java31
1 files changed, 17 insertions, 14 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/PossiblePaths.java b/core/src/ch/asynk/tankontank/engine/PossiblePaths.java
index 0e10d81..2cf45eb 100644
--- a/core/src/ch/asynk/tankontank/engine/PossiblePaths.java
+++ b/core/src/ch/asynk/tankontank/engine/PossiblePaths.java
@@ -87,7 +87,7 @@ public class PossiblePaths implements Iterable<Vector3>
clear();
this.to = to;
// from and to are not part of the path
- if (board.distance(from, to) == 1) {
+ if (board.distance(from, to) < 2) {
ArrayList<Tile> temp = new ArrayList<Tile>(0);
// temp.add(from);
// temp.add(to);
@@ -187,23 +187,26 @@ public class PossiblePaths implements Iterable<Vector3>
boolean roadMarch = true;
Tile prev = from;
- for (Tile next : paths.get(i)) {
- Orientation o = Orientation.fromMove(next.col, next.row, prev.col, prev.row);
- cost += next.costFrom(pawn, o);
- roadMarch &= next.road(o);
- prev = next;
- }
- Orientation o = Orientation.fromMove(to.col, to.row, prev.col, prev.row);
- cost += to.costFrom(pawn, o);
+ pawn.movement.distance = board.distance(from, to);
+
+ if (pawn.movement.distance > 0) {
+ for (Tile next : paths.get(i)) {
+ Orientation o = Orientation.fromMove(next.col, next.row, prev.col, prev.row);
+ cost += next.costFrom(pawn, o);
+ roadMarch &= next.road(o);
+ prev = next;
+ }
+ Orientation o = Orientation.fromMove(to.col, to.row, prev.col, prev.row);
+ cost += to.costFrom(pawn, o);
- if (roadMarch)
- cost -= pawn.getRoadMarchBonus();
- if (cost < 1)
- cost = 1;
+ if (roadMarch)
+ cost -= pawn.getRoadMarchBonus();
+ if (cost < 1)
+ cost = 1;
+ }
pawn.movement.cost = cost;
pawn.movement.roadMarch = roadMarch;
- pawn.movement.distance = (1 + paths.get(i).size());
return cost;
}