summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/tankontank/engine
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/ch/asynk/tankontank/engine')
-rw-r--r--core/src/ch/asynk/tankontank/engine/Board.java35
1 files changed, 11 insertions, 24 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/Board.java b/core/src/ch/asynk/tankontank/engine/Board.java
index b33fad4..93274eb 100644
--- a/core/src/ch/asynk/tankontank/engine/Board.java
+++ b/core/src/ch/asynk/tankontank/engine/Board.java
@@ -27,7 +27,7 @@ import ch.asynk.tankontank.engine.gfx.animations.RunnableAnimation;
public abstract class Board implements Disposable
{
- private final GridPoint2 neighbours[] = new GridPoint2[6];
+ private final Tile neighbours[] = new Tile[6];
protected List<ArrayList<SearchBoard.Node>> paths;
public interface TileBuilder
@@ -81,8 +81,6 @@ public abstract class Board implements Disposable
protected Board(int cols, int rows)
{
- for (int i = 0; i < 6; i++)
- neighbours[i] = new GridPoint2(-1, -1);
searchBoard = new SearchBoard(this, cols, rows);
}
@@ -107,9 +105,6 @@ public abstract class Board implements Disposable
y += cfg.h;
evenRow = !evenRow;
}
-
- for (int i = 0; i < 6; i++)
- neighbours[i] = new GridPoint2(-1, -1);
}
@Override
@@ -177,24 +172,14 @@ public abstract class Board implements Disposable
private void getAdjacentTiles(GridPoint2 coords, Tile tiles[])
{
- tiles[0] = getTileSafe((coords.x - 1), coords.y);
- tiles[1] = getTileSafe(coords.x, (coords.y + 1));
+ tiles[0] = getTileSafe((coords.x - 1), (coords.y));
+ tiles[1] = getTileSafe((coords.x), (coords.y + 1));
tiles[2] = getTileSafe((coords.x + 1), (coords.y + 1));
- tiles[3] = getTileSafe((coords.x + 1), coords.y);
- tiles[4] = getTileSafe(coords.x, (coords.y - 1));
+ tiles[3] = getTileSafe((coords.x + 1), (coords.y));
+ tiles[4] = getTileSafe((coords.x), (coords.y - 1));
tiles[5] = getTileSafe((coords.x - 1), (coords.y - 1));
}
- private void buildNeighboursFor(GridPoint2 coords)
- {
- neighbours[0].set((coords.x - 1), coords.y);
- neighbours[1].set(coords.x, (coords.y + 1));
- neighbours[2].set((coords.x + 1), (coords.y + 1));
- neighbours[3].set((coords.x + 1), coords.y);
- neighbours[4].set(coords.x, (coords.y - 1));
- neighbours[5].set((coords.x - 1), (coords.y - 1));
- }
-
public void addAnimation(Animation a)
{
nextAnimations.add(a);
@@ -343,14 +328,16 @@ public abstract class Board implements Disposable
protected int buildMoveAssists(Pawn pawn, GridPoint2 coords, List<GridPoint2> assists)
{
assists.clear();
- buildNeighboursFor(coords);
+ getAdjacentTiles(coords, neighbours);
for (int i = 0; i < 6; i++) {
- GridPoint2 neighbour = neighbours[i];
- Tile t = getTileSafe(neighbour);
+ Tile t = neighbours[i];
if (t != null) {
+ // FIXME should support may pawns per tile
Pawn p = t.getTopPawn();
if ((p != null) && p.canMove() && !pawn.isEnemy(p)) {
- assists.add(neighbour);
+ GridPoint2 assist = gridPoint2Pool.obtain();
+ assist.set(t.getCol(), t.getRow());
+ assists.add(assist);
}
}
}