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

31 lines
1.4 KiB
JavaScript

import { EEnemySize } from "../../GameData/index.js";
import { SimCommandStartNextWave, SimEnemy } from "../index.js";
export class SimActionSpawnEnemies {
execute(simMain) {
const simLevel = simMain.currentLevel;
const gdLevel = simLevel.gdLevel;
const step = simLevel.currentStep;
const wave = gdLevel.waves[simLevel.currentWave];
let spawnDelay = simMain.gdRoot.simulation.spawnDelay;
switch (wave.size) {
case EEnemySize.Huge:
spawnDelay *= 2;
break;
case EEnemySize.Tiny:
spawnDelay *= 0.5;
break;
}
if (simLevel.enemiesLeftToSpawn > 0 && simLevel.lastEnemySpawnStep + spawnDelay * simMain.gdRoot.simulation.stepsPerSecond <= simLevel.currentStep) {
simLevel.enemiesLeftToSpawn -= 1;
simLevel.lastEnemySpawnStep = step;
const route = Math.floor(Math.random() * gdLevel.enemyRoutes.length);
const enemy = new SimEnemy(simMain.gdRoot, wave, route, simLevel);
enemy.onPathUpdated();
simLevel.simEnemies.push(enemy);
}
if (simLevel.nextWaveStep == step && !!gdLevel.waves[simLevel.currentWave + 1]) {
simMain.addCommand(new SimCommandStartNextWave(simMain.gdRoot, simLevel));
}
}
}
//# sourceMappingURL=SimActionSpawnEnemies.js.map