diff options
| -rw-r--r-- | core/src/ch/asynk/tankontank/engine/Board.java | 24 | 
1 files changed, 22 insertions, 2 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/Board.java b/core/src/ch/asynk/tankontank/engine/Board.java index 3d8afd5..8884b0f 100644 --- a/core/src/ch/asynk/tankontank/engine/Board.java +++ b/core/src/ch/asynk/tankontank/engine/Board.java @@ -1,5 +1,6 @@  package ch.asynk.tankontank.engine; +import java.util.Set;  import java.util.List;  import java.util.Vector;  import java.util.Iterator; @@ -335,16 +336,35 @@ public abstract class Board implements Disposable      public void possibleMovesFrom(Pawn pawn, int col, int row, Vector<GridPoint2> moves)      { -        List <SearchBoard.Node> nodes = searchBoard.possibleMovesFrom(pawn, col, row); +        List<SearchBoard.Node> nodes = searchBoard.possibleMovesFrom(pawn, col, row);          nodesToPoints(nodes, moves);      }      public void possibleTargetsFrom(Pawn pawn, int col, int row, Vector<GridPoint2> targets)      { -        List <SearchBoard.Node> nodes = searchBoard.possibleTargetsFrom(pawn, col, row); +        List<SearchBoard.Node> nodes = searchBoard.possibleTargetsFrom(pawn, col, row);          nodesToPoints(nodes, targets);      } +    public void possiblePaths(Pawn pawn, int col0, int row0, int col1, int row1, Set<GridPoint2> points) +    { +        // FIXME : optimize this +        for (GridPoint2 point : points) +            gridPoint2Pool.free(point); +        points.clear(); + +        List<Vector<SearchBoard.Node>> paths = searchBoard.possiblePaths(pawn, col0, row0, col1, row1); +        for (Vector<SearchBoard.Node> path : paths) { +            for (int i = 0, n = path.size(); i < n; i++) { +                GridPoint2 point = gridPoint2Pool.obtain(); +                SearchBoard.Node node = path.get(i); +                point.set(node.col, node.row); +                if (!points.add(point)) +                    gridPoint2Pool.free(point); +            } +        } +    } +      public void disableOverlaysOn(int col, int row)      {          disableOverlaysOn(getTile(col, row));  | 
