summaryrefslogtreecommitdiff
path: root/src/link.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/link.js')
-rw-r--r--src/link.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/link.js b/src/link.js
new file mode 100644
index 0000000..7d10413
--- /dev/null
+++ b/src/link.js
@@ -0,0 +1,57 @@
+import { placeOnBoard } from "./engine/visual/placeOnBoard.js"
+import { Vector2 } from "./engine/visual/vector2.js"
+import { board } from "./board.js"
+import { ASSETS_BLACK, ASSETS_WHITE, PLAYER } from "./constants.js"
+import { Stone } from "./stone.js"
+import { nextTurn, turn } from "./engine/turns.js"
+
+
+
+export class Link {
+ constructor({
+ position = new Vector2(0, 0),
+ }) {
+ this.team = turn
+ this.position = position
+
+ this.createSpan()
+ board.links[position.y][position.x] = this
+
+ this.span.addEventListener("click", _ => {
+ new Stone({
+ position: position,
+ team: this.team
+ })
+ nextTurn()
+ });
+
+ this.update()
+ }
+
+ createSpan() {
+ this.span = document.createElement("span")
+ this.span.className = `link`
+
+ let img = document.createElement("img")
+ img.src = this.team == PLAYER.BLACK ? ASSETS_BLACK : ASSETS_WHITE
+ this.span.appendChild(img)
+
+ document.body.appendChild(this.span)
+ }
+
+ update() {
+ let response = placeOnBoard({
+ position: this.position,
+ board_size: board.size,
+ use_real_size: true,
+ })
+
+ this.span.style.left = response.left
+ this.span.style.top = response.top
+ this.span.style.width = this.span.style.height = response.size
+ }
+
+ removeLink() {
+ this.span.remove()
+ }
+}