Shot ships fall with gravity

This commit is contained in:
2026-02-10 19:27:50 -08:00
parent 22ab464f5d
commit 96153b9a74

View File

@@ -43,6 +43,16 @@
opacity: 0;
}
.explosion {
r: 5px;
transition: r 0.01s ease-in;
opacity: 0.7;
}
.explosion.flash {
r: 0px;
}
#triangles polygon {
fill-opacity: 0.2;
stroke-width: 1px;
@@ -299,7 +309,7 @@ const Combat = (() => {
target.x = pt.x;
target.y = pt.y;
const hitShips = Ships.find(({ entity_id: id }) => {
const hitShips = Ships.filter(({ entity_id: id }) => {
const node = Nodes[id];
const p = Position[id];
const body = node.querySelector(".body");
@@ -311,8 +321,10 @@ const Combat = (() => {
const offBg = !bg.isPointInFill(pt);
const wallHits = [...wallElements].find(el => el.isPointInFill(pt));
hitShips.forEach(({ entity_id }) => GravityEffect[entity_id] = true);
i += 1;
if (hitShips || offBg || wallHits) break;
if (hitShips.length || offBg || wallHits) break;
}
return {
@@ -335,6 +347,7 @@ const Draw = (() => {
shot: ({ entity_id }, shot) => {
const gun = CannonNodes[entity_id];
const lineEl = document.createElementNS(namespaceURIsvg, 'line');
lineEl.classList.add('bullet');
lineEl.setAttribute('x1', shot.origin.x);
@@ -343,11 +356,24 @@ const Draw = (() => {
lineEl.setAttribute('y2', shot.target.y);
lineEl.addEventListener('transitionend', e => e.target.remove());
setTimeout(() => lineEl.classList.add('fade'), 1000);
const tipEl = gun.querySelector(".tip")
tipEl.classList.remove("recoil");
setTimeout(() => tipEl.classList.add('recoil'), 0);
return bulletsContainer.appendChild(lineEl);
const explosionEl = document.createElementNS(namespaceURIsvg, 'circle');
explosionEl.classList.add('explosion');
explosionEl.setAttribute('cx', shot.target.x);
explosionEl.setAttribute('cy', shot.target.y);
explosionEl.setAttribute('fill', 'orange');
explosionEl.addEventListener('transitionend', e => e.target.remove());
setTimeout(() => explosionEl.classList.add('flash'), 100);
const le = bulletsContainer.appendChild(lineEl);
bulletsContainer.appendChild(explosionEl);
return le;
}
};
})();

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 54 KiB