Add line of sight

This commit is contained in:
Catalin Constantin Mititiuc 2025-06-16 22:41:28 -07:00
parent 6349c58123
commit df2be3d36a
2 changed files with 41 additions and 0 deletions

View File

@ -164,6 +164,37 @@ POINTS.forEach((row, index) => row.forEach(([x, y]) => {
).forEach(el => el.remove()); ).forEach(el => el.remove());
}); });
counter.addEventListener('mouseenter', e => {
let selectedSoldier = document.querySelector('.soldier-record.selected');
if (selectedSoldier) {
let {troopNumber, troopAllegiance} = selectedSoldier.dataset,
source = document.querySelector(
`circle.counter[data-troop-number="${troopNumber}"][data-troop-allegiance="${troopAllegiance}"]`
),
sourceAndTargetAreNotTheSame = [
troopNumber != e.target.dataset.troopNumber,
troopAllegiance != e.target.dataset.troopAllegiance
].some(el => el);
if (source && sourceAndTargetAreNotTheSame) {
let sightLine = document.createElementNS(svgns, 'line');
sightLine.classList.add('sight-line');
sightLine.setAttributeNS(null, 'x1', source.getAttribute('cx'));
sightLine.setAttributeNS(null, 'y1', source.getAttribute('cy'));
sightLine.setAttributeNS(null, 'x2', e.target.getAttribute('cx'));
sightLine.setAttributeNS(null, 'y2', e.target.getAttribute('cy'));
svg.appendChild(sightLine);
}
}
});
counter.addEventListener('mouseleave', e => {
document.querySelectorAll('.sight-line').forEach(el => el.remove());
});
svg.appendChild(counter); svg.appendChild(counter);
svg.appendChild(text); svg.appendChild(text);
} }

View File

@ -20,6 +20,11 @@ use[href="#point"].active {
opacity: 1; opacity: 1;
} }
circle.counter {
stroke: transparent;
stroke-width: 0.5in;
}
circle.counter[data-troop-allegiance="liao"] { circle.counter[data-troop-allegiance="liao"] {
fill: green; fill: green;
} }
@ -66,6 +71,11 @@ line.ruler {
stroke-width: 0.25in; stroke-width: 0.25in;
} }
.sight-line {
stroke: black;
stroke-width: 3px;
}
.soldier-record { .soldier-record {
display: inline-block; display: inline-block;
} }