Web Dev Solutions

Catalin Mititiuc

From 83457c5218047584d2d9e8210060b64b10739de0 Mon Sep 17 00:00:00 2001 From: Catalin Mititiuc Date: Fri, 28 Jun 2024 15:10:28 -0700 Subject: Update deleteClone for cube coords --- src/modules/game/soldier.js | 18 ++++-------------- src/modules/gameboard.js | 15 ++++++++------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/modules/game/soldier.js b/src/modules/game/soldier.js index 12adf6b..f9c67db 100644 --- a/src/modules/game/soldier.js +++ b/src/modules/game/soldier.js @@ -9,16 +9,9 @@ function traceSelector(counter) { } function getCellPosition(cell) { - let pt = new DOMPoint(0, 0), - transform = getComputedStyle(cell).transform.match(/-?\d+\.?\d*/g), - mtx = new DOMMatrix(transform); - pt = pt.matrixTransform(mtx); + const [x, y] = cell.getAttributeNS(null, 'transform').match(/-?\d+\.?\d*/g); - transform = getComputedStyle(cell.parentElement).transform.match(/-?\d+\.?\d*/g); - mtx = new DOMMatrix(transform); - pt = pt.matrixTransform(mtx); - - return pt; + return { x, y }; } function getClones(svg, counter) { @@ -35,12 +28,9 @@ function addMoveToHistory(selected) { } function updatePlacement(cell, selected, clone) { - const prevCoords = [ - clone.parentElement.dataset.x, - clone.parentElement.parentElement.dataset.y - ] + const { q, r, s, t } = clone.parentElement.dataset; - selected.dataset.previous = prevCoords; + selected.dataset.previous = [q, r, s, t]; cell.appendChild(selected); Array.from(selected.children).forEach(n => { diff --git a/src/modules/gameboard.js b/src/modules/gameboard.js index 66b493b..81d71a3 100644 --- a/src/modules/gameboard.js +++ b/src/modules/gameboard.js @@ -10,8 +10,8 @@ function getCellContents(cell) { return cell.querySelectorAll('*:not(use[href="#hex"])'); } -function getGridIndex({ parentElement: { dataset: { x }, parentElement: { dataset: { y }}}}) { - return { x: +x, y: +y }; +function getGridIndex({ parentElement: { dataset: { q, r, s, t }}}) { + return { q: +q, r: +r, s: +s, t: +t }; } function getHex(cell) { @@ -56,12 +56,12 @@ function getCellPosition(cell) { return { x, y }; } -function getCell(x, y) { - return svg.querySelector(`g.grid > g[data-y="${y}"] > g[data-x="${x}"]`); +function getCell(q, r, s, t) { + return svg.querySelector(`g[data-q="${q}"][data-r="${r}"][data-s="${s}"][data-t="${t}"]`); } -function getCounterAtGridIndex(x, y) { - return getCell(x, y).querySelector('.counter'); +function getCounterAtGridIndex(...coords) { + return getCell(...coords).querySelector('.counter'); } function getSelected() { @@ -155,7 +155,7 @@ function deleteClone(occupant, counter, cell) { let current = counter; trace.setAttributeNS(null, 'points', points); - while (current.dataset.previous != `${index.x},${index.y}`) { + while (current.dataset.previous != `${index.q},${index.r},${index.s},${index.t}`) { current = getCounterAtGridIndex(...current.dataset.previous.split(',')); } @@ -296,6 +296,7 @@ export function start(el) { // debug // const c = soldier.createCounter({ dataset: { allegiance: 'attacker', number: 1, squad: 1 }}); soldier.place(svg, c, svg.querySelector('[data-q="0"][data-r="0"][data-s="0"][data-t="0"]')); + // soldier.place(svg, c, svg.querySelector('[data-q="-2"][data-r="-3"][data-s="5"][data-t="0"]')); /////////// Observable.subscribe('select', select); -- cgit v1.2.3