diff options
Diffstat (limited to 'core/src/ch/asynk/tankontank')
-rw-r--r-- | core/src/ch/asynk/tankontank/engine/PossiblePaths.java | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/PossiblePaths.java b/core/src/ch/asynk/tankontank/engine/PossiblePaths.java index 55a5cd9..bcda72b 100644 --- a/core/src/ch/asynk/tankontank/engine/PossiblePaths.java +++ b/core/src/ch/asynk/tankontank/engine/PossiblePaths.java @@ -13,6 +13,7 @@ public class PossiblePaths implements Iterable<Vector3> private final Board board; public Pawn pawn; + public Tile from; public Tile to; public Orientation orientation; private List<Tile> stack; @@ -34,15 +35,21 @@ public class PossiblePaths implements Iterable<Vector3> this.orientation = Orientation.KEEP; } - public int init(Pawn pawn, Tile to) + public int init(Pawn pawn, Tile from, Tile to) { clear(); this.pawn = pawn; + this.from = from; this.to = to; return build(); } + public int init(Pawn pawn, Tile to) + { + return init(pawn, pawn.getTile(), to); + } + public void clear() { for (List<Tile> tiles : this.paths) tiles.clear(); @@ -78,7 +85,6 @@ public class PossiblePaths implements Iterable<Vector3> private int build() { // from and to are not part of the path - Tile from = pawn.getTile(); if (board.distance(from, to) == 1) { ArrayList<Tile> temp = new ArrayList<Tile>(0); // temp.add(from); @@ -199,7 +205,7 @@ public class PossiblePaths implements Iterable<Vector3> { int steps = 0; - Tile tile = pawn.getTile(); + Tile tile = from; Orientation o = pawn.getOrientation(); for (Tile next : getPath(idx)) { Orientation nextO = Orientation.fromMove(tile.col, tile.row, next.col, next.row); @@ -221,7 +227,7 @@ public class PossiblePaths implements Iterable<Vector3> @Override public Iterator<Vector3> iterator() { - return new Vector3Iterator(pawn, to, orientation, getPath(0)); + return new Vector3Iterator(pawn, from, to, orientation, getPath(0)); } private void printToErr(String what, List<ArrayList<Tile>> paths) @@ -248,13 +254,13 @@ class Vector3Iterator implements Iterator<Vector3> private int i; private List<Tile> path; - public Vector3Iterator(Pawn pawn, Tile to, Orientation orientation, List<Tile> path) + public Vector3Iterator(Pawn pawn, Tile from, Tile to, Orientation orientation, List<Tile> path) { this.pawn = pawn; this.to = to; + this.tile = from; this.orientation = orientation; this.path = path; - this.tile = pawn.getTile(); this.o = pawn.getOrientation(); this.v.set(pawn.getPosition().x, pawn.getPosition().y, o.r()); this.i = 0; |