diff options
Diffstat (limited to 'core/src/ch/asynk/tankontank')
-rw-r--r-- | core/src/ch/asynk/tankontank/engine/Board.java | 4 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/engine/SearchBoard.java | 13 |
2 files changed, 11 insertions, 6 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/Board.java b/core/src/ch/asynk/tankontank/engine/Board.java index 36df6bd..7099326 100644 --- a/core/src/ch/asynk/tankontank/engine/Board.java +++ b/core/src/ch/asynk/tankontank/engine/Board.java @@ -373,9 +373,9 @@ public abstract class Board implements Disposable return nodesToSet(paths, points); } - public int possiblePathsFilterAdd(int col, int row, Set<GridPoint2> points) + public int possiblePathsFilterToggle(int col, int row, Set<GridPoint2> points) { - List<Vector<SearchBoard.Node>> paths = searchBoard.possiblePathsFilterAdd(col, row); + List<Vector<SearchBoard.Node>> paths = searchBoard.possiblePathsFilterToggle(col, row); return nodesToSet(paths, points); } diff --git a/core/src/ch/asynk/tankontank/engine/SearchBoard.java b/core/src/ch/asynk/tankontank/engine/SearchBoard.java index 9a11835..68a2f51 100644 --- a/core/src/ch/asynk/tankontank/engine/SearchBoard.java +++ b/core/src/ch/asynk/tankontank/engine/SearchBoard.java @@ -497,10 +497,15 @@ public class SearchBoard possiblePathsFilters.clear(); } - public List<Vector<Node>> possiblePathsFilterAdd(int col, int row) + public List<Vector<Node>> possiblePathsFilterToggle(int col, int row) { - possiblePathsFilters.add(getNode(col, row)); - int n = possiblePathsFilters.size(); + Node n = getNode(col, row); + if (possiblePathsFilters.contains(n)) + possiblePathsFilters.remove(n); + else + possiblePathsFilters.add(n); + + int s = possiblePathsFilters.size(); List<Vector<Node>> paths = new LinkedList<Vector<Node>>(); for (Vector<Node> path : possiblePaths) { @@ -509,7 +514,7 @@ public class SearchBoard if (path.contains(filter)) ok += 1; } - if (ok == n) + if (ok == s) paths.add(path); } |