diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/src/ch/asynk/tankontank/engine/SearchBoard.java | 25 | 
1 files changed, 11 insertions, 14 deletions
| diff --git a/core/src/ch/asynk/tankontank/engine/SearchBoard.java b/core/src/ch/asynk/tankontank/engine/SearchBoard.java index bd1ce2b..583c2c8 100644 --- a/core/src/ch/asynk/tankontank/engine/SearchBoard.java +++ b/core/src/ch/asynk/tankontank/engine/SearchBoard.java @@ -32,6 +32,7 @@ public class SearchBoard      private ArrayDeque<Node> stack;      private ArrayDeque<Node> roadMarch;      private List<Node> result; +    private List<Node> los;      private Node adjacents[];      private Board.Orientation directions[]; @@ -51,6 +52,7 @@ public class SearchBoard          this.stack = new ArrayDeque<Node>(20);          this.roadMarch = new ArrayDeque<Node>(5);          this.result = new Vector<Node>(10); +        this.los = new Vector<Node>(10);          this.adjacents = new Node[6];          this.directions = new Board.Orientation[6];          directions[0] = Board.Orientation.NORTH; @@ -291,7 +293,7 @@ public class SearchBoard      public List<Node> lineOfSight(int x0, int y0, int x1, int y1, boolean check)      { -        result.clear(); +        los.clear();          // orthogonal axis          int ox0 = x0 - ((y0 +1) / 2); @@ -329,8 +331,7 @@ public class SearchBoard          boolean flat = (dx > (3 * dy));          boolean diag = (dx == (3 * dy)); -        int step = 0; -        result.add(getNode(x, y)); +        los.add(getNode(x, y));          while((x != x1) || (y != y1)) {              if (e > 0) {                  e -= (dy3 + dx3); @@ -354,14 +355,10 @@ public class SearchBoard                      x += xs;                  }              } -            result.add(getNode(x, y)); -            step += 1; -            if (step > 20) { -                return result; -            } +            los.add(getNode(x, y));          } -        return result; +        return los;      }      private List<Node> verticalLineOfSight(int x0, int y0, int x1, int y1, boolean check) @@ -371,21 +368,21 @@ public class SearchBoard          int y = y0;          Tile t = null; -        result.add(getNode(x, y)); +        los.add(getNode(x, y));          while((x != x1) || (y != y1)) {              y += d;              t = board.getTile(x, y); -            if (!t.isOffMap()) result.add(getNode(x, y)); +            if (!t.isOffMap()) los.add(getNode(x, y));              x += d;              t = board.getTile(x, y); -            if (!t.isOffMap()) result.add(getNode(x, y)); +            if (!t.isOffMap()) los.add(getNode(x, y));              y += d;              t = board.getTile(x, y); -            if (!t.isOffMap()) result.add(getNode(x, y)); +            if (!t.isOffMap()) los.add(getNode(x, y));          } -        return result; +        return los;      }  } | 
