diff options
Diffstat (limited to 'core/src/ch/asynk/tankontank/engine')
-rw-r--r-- | core/src/ch/asynk/tankontank/engine/Board.java | 19 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/engine/Tile.java | 2 |
2 files changed, 18 insertions, 3 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/Board.java b/core/src/ch/asynk/tankontank/engine/Board.java index dc6ce63..a78e3b0 100644 --- a/core/src/ch/asynk/tankontank/engine/Board.java +++ b/core/src/ch/asynk/tankontank/engine/Board.java @@ -58,7 +58,7 @@ public abstract class Board extends Image implements Disposable } private Config cfg; - private Tile[][] board; + protected Tile[][] board; boolean transform; private Matrix4 prevTransform; @@ -72,11 +72,24 @@ public abstract class Board extends Image implements Disposable private final LinkedHashSet<Tile> tilesToDraw = new LinkedHashSet<Tile>(); protected final LinkedHashSet<Pawn> pawnsToDraw = new LinkedHashSet<Pawn>(); - public Board(Config cfg, Tile[][] board, Texture texture) + public Board(Config cfg, Texture texture, Tile tileBuilder) { super(texture); this.cfg = cfg; - this.board = board; + + this.board = new Tile[cfg.rows][]; + boolean evenRow = true; + for (int i = 0; i < cfg.rows; i++) { + float y = cfg.y0 + (i * cfg.h) - cfg.dh; + int c = (evenRow ? cfg.cols : cfg.cols - 1); + this.board[i] = new Tile[c]; + for ( int j = 0; j < c; j ++) { + float x = cfg.x0 + (j * cfg.w); + if (!evenRow) x += cfg.dw; + this.board[i][j] = tileBuilder.getNewAt(x, y); + } + evenRow = !evenRow; + } } @Override diff --git a/core/src/ch/asynk/tankontank/engine/Tile.java b/core/src/ch/asynk/tankontank/engine/Tile.java index d517b27..85987d6 100644 --- a/core/src/ch/asynk/tankontank/engine/Tile.java +++ b/core/src/ch/asynk/tankontank/engine/Tile.java @@ -15,6 +15,8 @@ public abstract class Tile implements BasicDrawable private StackedImages overlays; private ArrayDeque<Pawn> stack; + public abstract Tile getNewAt(float x, float y); + public Tile(TextureAtlas atlas) { this.stack = null; |