index : btroops | |
Virtual board game-aid for BattleTroops, an infantry combat simulator wargame published by FASA in 1989. |
aboutsummaryrefslogtreecommitdiff |
diff options
author | Catalin Mititiuc <webdevcat@proton.me> | 2024-04-27 15:58:11 -0700 |
---|---|---|
committer | Catalin Mititiuc <webdevcat@proton.me> | 2024-04-27 15:58:11 -0700 |
commit | ce98e325656b8419b80d8c248e0469f3a9708322 (patch) | |
tree | 293c5e23601195be80161912275277554fcfb07e /src/modules/game/counter.js | |
parent | 75a0c37ea5e5a9fa395690984c373536e8efccfa (diff) |
Rename some files
Diffstat (limited to 'src/modules/game/counter.js')
-rw-r--r-- | src/modules/game/counter.js | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/src/modules/game/counter.js b/src/modules/game/counter.js deleted file mode 100644 index 0d75fc6..0000000 --- a/src/modules/game/counter.js +++ /dev/null @@ -1,133 +0,0 @@ -const selectedClass = 'selected'; - -function dataSelector({ dataset: { allegiance, number }}) { - return `[data-number="${number}"][data-allegiance="${allegiance}"]`; -} - -function traceSelector(counter) { - return `polyline.move-trace${dataSelector(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); - - transform = getComputedStyle(cell.parentElement).transform.match(/-?\d+\.?\d*/g); - mtx = new DOMMatrix(transform); - pt = pt.matrixTransform(mtx); - - return pt; -} - -function getClones(svg, counter) { - return svg.querySelectorAll(`.counter.clone${dataSelector(counter)}`); -} - -function getCounterAndClones(svg, counter) { - return svg.querySelectorAll(`.counter${dataSelector(counter)}`); -} - -export function getCounter(svg, selected) { - return svg.querySelector(`.counter${dataSelector(selected)}:not(.clone)`); -} - -export function getTrace(svg, counter) { - return svg.querySelector(traceSelector(counter)); -} - -export function place(svg, selected, cell) { - let points, - counterNodeList = getCounterAndClones(svg, selected); - - if (counterNodeList.length > 0 && selected.parentElement.hasAttribute('data-x')) { - let trace = svg.querySelector(traceSelector(selected)); - - let prevCoords = [ - selected.parentElement.dataset.x, - selected.parentElement.parentElement.dataset.y - ] - - let clone = selected.cloneNode(true); - clone.classList.remove(selectedClass); - clone.classList.add('clone'); - - selected.dataset.previous = prevCoords; - selected.parentElement.appendChild(clone); - cell.appendChild(selected); - - selected.childNodes.forEach(n => { - if (n.classList.contains('removed')) { - n.remove(); - } else if ('preexisting' in n.dataset) { - delete n.dataset.preexisting; - } - }); - - let previous = getCellPosition(clone.parentElement), - current = getCellPosition(selected.parentElement); - - if (!trace) { - trace = document.createElementNS(svgns, 'polyline'); - - points = `${previous.x},${previous.y} ${current.x},${current.y}`; - - trace.dataset.number = selected.dataset.number; - trace.dataset.allegiance = selected.dataset.allegiance; - trace.classList.add('move-trace'); - - svg.querySelector('.board').prepend(trace); - } else { - points = `${trace.getAttribute('points')} ${current.x},${current.y}`; - } - - trace.setAttributeNS(null, 'points', points); - } else { - selected.removeAttribute('data-x'); - cell.appendChild(selected); - } -} - -export function removeClones(svg, counter) { - getClones(svg, counter).forEach(c => c.remove()); -} - -export function endMove(svg, counter) { - const trace = svg.querySelector(traceSelector(counter)), - proneCounter = counter.querySelector('[href="#counter-prone"]'); - - if (trace) { - trace.remove(); - } - - delete counter.dataset.previous; - - if (proneCounter) { - proneCounter.dataset.preexisting = ''; - } - - removeClones(counter); -} - -export function hasProne(counter) { - return !!counter.querySelector('[href="#counter-prone"]'); -} - -export function toggleProne(counter) { - let proneCounter = counter.querySelector('[href="#counter-prone"]'); - - if (!proneCounter) { - proneCounter = document.createElementNS(svgns, 'use'); - proneCounter.setAttributeNS(null, 'href', '#counter-prone'); - counter.appendChild(proneCounter); - } else if ('preexisting' in proneCounter.dataset) { - proneCounter.classList.toggle('removed'); - } else { - proneCounter.remove(); - } -} - -export function getSelectedClass() { - return selectedClass; -} |