Slash-The-Hordes/assets/Scripts/Game/Unit/Enemy/CircularEnemySpawner.ts

24 lines
1.0 KiB
TypeScript
Raw Normal View History

2022-12-05 12:19:46 +01:00
import { GameTimer } from "../../../Services/GameTimer";
import { roundToOneDecimal } from "../../../Services/Utils/MathUtils";
2022-12-05 15:13:42 +01:00
import { EnemyMovementType } from "./EnemyMovementType";
2022-12-05 12:19:46 +01:00
import { EnemySpawner } from "./EnemySpawner";
import { EnemyType } from "./EnemyType";
export class CircularEnemySpawner {
private spawnTimer: GameTimer = new GameTimer(10);
public constructor(private enemySpawner: EnemySpawner, private enemiesToSpawn: number, private enemyType: EnemyType) {}
public gameTick(deltaTime: number): void {
this.spawnTimer.gameTick(deltaTime);
if (this.spawnTimer.tryFinishPeriod()) {
const angle: number = (2 * Math.PI) / this.enemiesToSpawn;
for (let i = 0; i < this.enemiesToSpawn; i++) {
const posX: number = roundToOneDecimal(Math.sin(angle * i)) * 500;
const posY: number = roundToOneDecimal(Math.cos(angle * i)) * 500;
2022-12-05 15:13:42 +01:00
this.enemySpawner.spawnNewEnemy(posX, posY, EnemyMovementType.Follow);
2022-12-05 12:19:46 +01:00
}
}
}
}