fix enemy speed
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user