fix enemy speed

This commit is contained in:
2025-06-14 20:58:42 +02:00
parent c61a10d79a
commit 9b81bef804
2 changed files with 36 additions and 36 deletions

View File

@@ -1,43 +1,42 @@
import { Hex } from "../../util/Hex"; import { Hex } from '../../util/Hex';
import { Vector2 } from "../../util/Vector2"; import { Vector2 } from '../../util/Vector2';
import { SimEnemy } from "../SimEnemy"; import { SimEnemy } from '../SimEnemy';
import { SimMain } from "../SimMain"; import { SimMain } from '../SimMain';
import { ISimAction } from "./ISimAction"; import { ISimAction } from './ISimAction';
export class SimActionMoveEnemies implements ISimAction { export class SimActionMoveEnemies implements ISimAction {
public execute(simMain: SimMain) { public execute(simMain: SimMain) {
const level = simMain.currentLevel; const level = simMain.currentLevel;
if (!level) return; if (!level) return;
const deadEnemies: number[] = []; const deadEnemies: number[] = [];
level.enemies.forEach((enemy: SimEnemy, idx: number) => { level.enemies.forEach((enemy: SimEnemy, idx: number) => {
if (enemy.dead) if (enemy.dead) deadEnemies.push(idx);
deadEnemies.push(idx); });
});
for (const idx of deadEnemies) { for (const idx of deadEnemies) {
level.enemies.splice(idx, 1); level.enemies.splice(idx, 1);
} }
for (const simEnemy of level.enemies) { for (const simEnemy of level.enemies) {
const duration = simEnemy.speed / simMain.gdRoot.simulation.stepsPerSecond; const duration = simEnemy.speed / simMain.gdRoot.simulation.stepsPerSecond;
const t = (level.currentStep - simEnemy.currentPathStep) * duration; const t = (level.currentStep - simEnemy.currentPathStep) * duration;
const path2 = level.cells[simEnemy.path[simEnemy.currentPathIndex + 1]]; const path2 = level.cells[simEnemy.path[simEnemy.currentPathIndex + 1]];
if (!path2) { if (!path2) {
simEnemy.dead = true; simEnemy.dead = true;
return; return;
} }
const hex2 = path2.hex; const hex2 = path2.hex;
const pos1 = simEnemy.currentPathPosition; const pos1 = simEnemy.currentPathPosition;
const pos2 = Hex.toWorld(hex2); const pos2 = Hex.toWorld(hex2);
simEnemy.prevPosition = simEnemy.position; simEnemy.prevPosition = simEnemy.position;
simEnemy.position = Vector2.lerp(pos1, pos2, t); simEnemy.position = Vector2.lerp(pos1, pos2, t);
if (t >= 1) { if (t >= 1) {
simEnemy.currentPathIndex += 1; simEnemy.currentPathIndex += 1;
simEnemy.currentPathStep = level.currentStep; simEnemy.currentPathStep = level.currentStep;
simEnemy.onPathUpdated(level); simEnemy.onPathUpdated(level);
} }
} }
} }
} }

View File

@@ -44,6 +44,7 @@ export class SimActionSpawnEnemies implements ISimAction {
const path = PathFinding.bfs(level, startIndex, endIndex); const path = PathFinding.bfs(level, startIndex, endIndex);
simEnemy.path = path!; simEnemy.path = path!;
simEnemy.currentPathIndex = 0; simEnemy.currentPathIndex = 0;
simEnemy.speed = simMain.gdRoot.enemies[gdWave.enemy].speed;
simEnemy.onPathUpdated(level); simEnemy.onPathUpdated(level);
level.enemies.push(simEnemy); level.enemies.push(simEnemy);
} }