aboutsummaryrefslogtreecommitdiff
path: root/src/Board/Board.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/Board/Board.ts')
-rw-r--r--src/Board/Board.ts33
1 files changed, 30 insertions, 3 deletions
diff --git a/src/Board/Board.ts b/src/Board/Board.ts
index 2c4a215..4ba7a4c 100644
--- a/src/Board/Board.ts
+++ b/src/Board/Board.ts
@@ -1,8 +1,9 @@
import _ from 'lodash';
-import Tile, { Feature } from '../Tile/Tile';
-import TileOnBoard from '../Tile/TileOnBoard';
+import Tile, { Feature, Direction } from '../Tile/Tile';
+import TileOnBoard, { Attachment } from '../Tile/TileOnBoard';
const { Road, Town, Grass } = Feature;
+const { North, East, South, West } = Direction;
export default class Board {
tiles: TileOnBoard[];
@@ -16,10 +17,36 @@ export default class Board {
this.tiles.forEach(tile => tile.print());
}
- getAttachments(tile: Tile) {
+ getAttachments(tile: Tile): Attachment[] {
return _.flatten(this.tiles.map(attachTo => attachTo.getAttachments(tile)));
}
+ attach(attachment: Attachment) {
+ const { tile, attachTo, side } = attachment;
+
+ const xIncrement = {
+ [East]: 1,
+ [West]: -1,
+ };
+
+ const yIncrement = {
+ [North]: 1,
+ [South]: -1,
+ };
+
+ const tileOnBoard = new TileOnBoard(
+ tile.center,
+ tile.sides,
+ tile.shield,
+ {
+ x: attachTo.position.x + (xIncrement[side] || 0),
+ y: attachTo.position.y + (yIncrement[side] || 0),
+ },
+ );
+
+ this.tiles.push(tileOnBoard);
+ }
+
getLegalMoves(tile: Tile) {
const attachments = this.getAttachments(tile);
console.log(attachments);