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 12:24:51 -0700 |
---|---|---|
committer | Catalin Mititiuc <webdevcat@proton.me> | 2024-04-27 12:24:51 -0700 |
commit | 25c74d9a8eafe35abd92fa3bdb6b3146614e7fa1 (patch) | |
tree | a5ce4597437c4779b97fb19554624ebd189b5915 /src/modules/game | |
parent | 77f9f8afa41b56d4b3be3e3390ff7c24ff224d9e (diff) |
Remove 'reveal pattern' from sight line module
Diffstat (limited to 'src/modules/game')
-rw-r--r-- | src/modules/game/sightLine.js | 118 |
1 files changed, 53 insertions, 65 deletions
diff --git a/src/modules/game/sightLine.js b/src/modules/game/sightLine.js index f5f52c0..2da99d4 100644 --- a/src/modules/game/sightLine.js +++ b/src/modules/game/sightLine.js @@ -65,7 +65,39 @@ function axial_lerp(q1, r1, q2, r2, t) { return { q: lerp(q1, q2, t), r: lerp(r1, r2, t) }; } -function calcIndexes(x1, y1, x2, y2) { +function lock(sightLine, cell) { + sightLine.classList.remove(activeClassName); + cell.classList.add(targetClassName); + + return cell; +} + +function unlock(sightLine, lockTarget) { + sightLine.classList.add(activeClassName); + lockTarget.classList.remove(targetClassName); + + return null; +} + +let sightLine, lockTarget, + activeHexes = []; + +export function create({ x: x1, y: y1 }, { x: x2, y: y2 }) { + const line = document.createElementNS(svgns, 'line'); + + line.classList.add('sight-line'); + line.classList.add(activeClassName); + line.setAttributeNS(null, 'x1', x1); + line.setAttributeNS(null, 'y1', y1); + line.setAttributeNS(null, 'x2', x2); + line.setAttributeNS(null, 'y2', y2); + + sightLine = line; + + return line; +} + +export function calcIndexes(x1, y1, x2, y2) { const axial1 = evenr_to_axial(x1, y1), axial2 = evenr_to_axial(x2, y2), n = offset_distance(x1, y1, x2, y2), @@ -82,77 +114,33 @@ function calcIndexes(x1, y1, x2, y2) { return results; } -function create({ x: x1, y: y1 }, { x: x2, y: y2 }) { - const sightLine = document.createElementNS(svgns, 'line'); - - sightLine.classList.add('sight-line'); - sightLine.classList.add(activeClassName); - sightLine.setAttributeNS(null, 'x1', x1); - sightLine.setAttributeNS(null, 'y1', y1); - sightLine.setAttributeNS(null, 'x2', x2); - sightLine.setAttributeNS(null, 'y2', y2); +export function clear() { + sightLine && sightLine.remove(); + sightLine = null; - return sightLine; + lockTarget && lockTarget.classList.remove(targetClassName); + lockTarget = null; } -function lock(sightLine, cell) { - sightLine.classList.remove(activeClassName); - cell.classList.add(targetClassName); - - return cell; +export function update({ x, y }) { + sightLine.setAttributeNS(null, 'x1', x); + sightLine.setAttributeNS(null, 'y1', y); } -function unlock(sightLine, lockTarget) { - sightLine.classList.add(activeClassName); - lockTarget.classList.remove(targetClassName); - - return null; +export function toggleLock(cell) { + lockTarget = lockTarget ? unlock(sightLine, lockTarget) : lock(sightLine, cell); } -export default function (board) { - let sightLine, - lockTarget, - activeHexes = []; - - return { - calcIndexes, - - drawLine: function (...positions) { - this.clear(); - - sightLine = create(...positions); - board.appendChild(sightLine); - }, - - clear: function () { - sightLine && sightLine.remove(); - sightLine = null; - - lockTarget && lockTarget.classList.remove(targetClassName); - lockTarget = null; - }, - - update: function ({ x, y }) { - sightLine.setAttributeNS(null, 'x1', x); - sightLine.setAttributeNS(null, 'y1', y); - }, - - toggleLock: function (cell) { - lockTarget = lockTarget ? unlock(sightLine, lockTarget) : lock(sightLine, cell); - }, - - get sightLine() { - return sightLine; - }, +export function getSightLine() { + return sightLine; +} - get lockTarget() { - return lockTarget; - }, +export function getLockTarget() { + return lockTarget; +} - set hexes(hexes) { - activeHexes.forEach(h => h.classList.remove(activeClassName)); - hexes.forEach(h => h.classList.add(activeClassName)); - activeHexes = hexes; - } - }; +export function setHexes(hexes) { + activeHexes.forEach(h => h.classList.remove(activeClassName)); + hexes.forEach(h => h.classList.add(activeClassName)); + activeHexes = hexes; } |