mirror of
https://github.com/MartinKral/Slash-The-Hordes
synced 2025-09-24 04:39:05 +00:00
Start stop spawner delay
This commit is contained in:
@@ -1,13 +1,17 @@
|
||||
import { GameTimer } from "../../../../Services/GameTimer";
|
||||
import { roundToOneDecimal } from "../../../../Services/Utils/MathUtils";
|
||||
|
||||
import { DelayedEnemySpawner } from "./DelayedEnemySpawner";
|
||||
import { EnemySpawner } from "./EnemySpawner";
|
||||
|
||||
export class CircularEnemySpawner {
|
||||
export class CircularEnemySpawner extends DelayedEnemySpawner {
|
||||
private spawnTimer: GameTimer = new GameTimer(10);
|
||||
|
||||
public constructor(private enemySpawner: EnemySpawner, private enemiesToSpawn: number, private enemyId: string) {}
|
||||
public constructor(private enemySpawner: EnemySpawner, private enemiesToSpawn: number, private enemyId: string, startDelay = 0, stopDelay = 100) {
|
||||
super(startDelay, stopDelay);
|
||||
}
|
||||
|
||||
public gameTick(deltaTime: number): void {
|
||||
public delayedGameTick(deltaTime: number): void {
|
||||
this.spawnTimer.gameTick(deltaTime);
|
||||
|
||||
if (this.spawnTimer.tryFinishPeriod()) {
|
||||
|
@@ -0,0 +1,13 @@
|
||||
export abstract class DelayedEnemySpawner {
|
||||
private currentTime = 0;
|
||||
public constructor(private startDelay: number, private stopDelay: number) {}
|
||||
|
||||
public gameTick(deltaTime: number): void {
|
||||
this.currentTime += deltaTime;
|
||||
if (this.startDelay <= this.currentTime && this.currentTime <= this.stopDelay) {
|
||||
this.delayedGameTick(deltaTime);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract delayedGameTick(deltaTime: number): void;
|
||||
}
|
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "4.0.23",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "98291995-7dbb-40da-bce6-4ca9dd7cc45f",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
@@ -4,7 +4,6 @@ import { Signal } from "../../../../Services/EventSystem/Signal";
|
||||
import { ObjectPool } from "../../../../Services/ObjectPool";
|
||||
import { EnemySettings } from "../../../Data/GameSettings";
|
||||
import { Enemy } from "../Enemy";
|
||||
import { EnemyMovementType } from "../EnemyMovementType";
|
||||
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
|
@@ -1,14 +1,17 @@
|
||||
import { randomRange } from "cc";
|
||||
import { GameTimer } from "../../../../Services/GameTimer";
|
||||
import { randomPositiveOrNegative } from "../../../../Services/Utils/MathUtils";
|
||||
import { DelayedEnemySpawner } from "./DelayedEnemySpawner";
|
||||
import { EnemySpawner } from "./EnemySpawner";
|
||||
|
||||
export class IndividualEnemySpawner {
|
||||
export class IndividualEnemySpawner extends DelayedEnemySpawner {
|
||||
private spawnTimer: GameTimer = new GameTimer(1);
|
||||
|
||||
public constructor(private enemySpawner: EnemySpawner, private enemyId: string) {}
|
||||
public constructor(private enemySpawner: EnemySpawner, private enemyId: string, startDelay = 0, stopDelay = 100) {
|
||||
super(startDelay, stopDelay);
|
||||
}
|
||||
|
||||
public gameTick(deltaTime: number): void {
|
||||
public delayedGameTick(deltaTime: number): void {
|
||||
this.spawnTimer.gameTick(deltaTime);
|
||||
if (this.spawnTimer.tryFinishPeriod()) {
|
||||
const posX: number = randomRange(300, 600) * randomPositiveOrNegative();
|
||||
|
@@ -3,9 +3,10 @@ import { GameTimer } from "../../../../Services/GameTimer";
|
||||
import { randomPositiveOrNegative } from "../../../../Services/Utils/MathUtils";
|
||||
import { WaveEnemySpawnerSettings } from "../../../Data/GameSettings";
|
||||
import { Enemy } from "../Enemy";
|
||||
import { DelayedEnemySpawner } from "./DelayedEnemySpawner";
|
||||
import { EnemySpawner } from "./EnemySpawner";
|
||||
|
||||
export class WaveEnemySpawner {
|
||||
export class WaveEnemySpawner extends DelayedEnemySpawner {
|
||||
private enemiesPerWave: number;
|
||||
private waveLifetime: number;
|
||||
private enemyId: string;
|
||||
@@ -14,13 +15,15 @@ export class WaveEnemySpawner {
|
||||
private waves: EnemyWave[] = [];
|
||||
|
||||
public constructor(private enemySpawner: EnemySpawner, settings: WaveEnemySpawnerSettings) {
|
||||
super(settings.startDelay, settings.stopDelay);
|
||||
|
||||
this.spawnTimer = new GameTimer(settings.cooldown);
|
||||
this.enemiesPerWave = settings.enemiesPerWave;
|
||||
this.waveLifetime = settings.waveLifetime;
|
||||
this.enemyId = settings.enemyId;
|
||||
}
|
||||
|
||||
public gameTick(deltaTime: number): void {
|
||||
public delayedGameTick(deltaTime: number): void {
|
||||
this.spawnTimer.gameTick(deltaTime);
|
||||
|
||||
this.tryRemoveExpiredEnemies(deltaTime);
|
||||
|
Reference in New Issue
Block a user