RoguelikeKit/Assets/Common/Scripts/Wave/MaintainWaveBehavior.cs

32 lines
949 B
C#

using UnityEngine.Playables;
namespace OctoberStudio.Timeline
{
public class MaintainWaveBehavior : WaveBehavior
{
private int keepAliveCount = -1;
private int aliveEnemiesCounter;
public override void OnBehaviourPlay(Playable playable, FrameData info)
{
keepAliveCount = EnemiesCount;
aliveEnemiesCounter = 0;
}
public override void ProcessFrame(Playable playable, FrameData info, object playerData)
{
if (aliveEnemiesCounter < keepAliveCount)
{
StageController.EnemiesSpawner.Spawn(EnemyType, WaveOverride, CircularSpawn, keepAliveCount - aliveEnemiesCounter, OnEnemyDied);
aliveEnemiesCounter = keepAliveCount;
}
}
private void OnEnemyDied(EnemyBehavior enemy)
{
enemy.onEnemyDied -= OnEnemyDied;
aliveEnemiesCounter--;
}
}
}