Files
HexTowerDefense/dist/Simulation/Actions/SimActionMoveProjectiles.js
2026-04-19 01:16:27 +02:00

32 lines
1.3 KiB
JavaScript

export class SimActionMoveProjectiles {
execute(simMain) {
const simLevel = simMain.currentLevel;
const deadProjectiles = [];
simLevel.simProjectiles.forEach((simProjectile, idx) => {
if (simProjectile.dead)
deadProjectiles.push(idx);
});
for (const idx of deadProjectiles) {
simLevel.simProjectiles.splice(idx, 1);
}
simLevel.simProjectiles.forEach((simProjectile) => {
const target = simLevel.simEnemies[simProjectile.targetEnemyIdx];
if (!target || target.dead) {
simProjectile.dead = true;
return;
}
const pos1 = simProjectile.position;
const pos2 = target.position;
const dir = pos2.subtract(pos1);
const len = dir.magnitude();
let duration = simProjectile.speed / simMain.gdRoot.simulation.stepsPerSecond;
if (len < duration) {
duration = len;
simProjectile.dead = true;
target.suffer(simProjectile.gdEffect);
}
simProjectile.position = pos1.add(dir.normalized().multiplyScalar(duration));
});
}
}
//# sourceMappingURL=SimActionMoveProjectiles.js.map