public void EnemyDied()
 {
     enemiesAlive--;
     if (enemiesAlive == 0)
     {
         WaveComplete?.Invoke();
         wave++;
         StartCoroutine(DelayStartWave());
     }
 }
示例#2
0
        void OnAllEnemiesKilled(WaveEnemyGroup enemyGroup)
        {
            Log.Info("All enemies in current group killed");
            enemyGroup.AllEnemiesKilled -= OnAllEnemiesKilled;

            if (enemyGroups.TrueForAll(x => x.AllEnemiesDead))
            {
                WaveCompleted = true;
                WaveComplete?.Invoke();
            }
        }
 private void HandleNextWaveSpawn()
 {
     if (_currentWave >= levelDetailsScriptableObject.waves.Length)
     {
         AllWavesComplete?.Invoke(this, EventArgs.Empty);
     }
     else
     {
         WaveComplete?.Invoke(this, new WaveClearedEvent {
             ClearedWave = _currentWave
         });
         SpawnWave();
     }
 }
示例#4
0
        void OnWaveComplete()
        {
            var completedWave = waves[currentWave];

            completedWave.WaveComplete     -= OnWaveComplete;
            completedWave.EnemyReachedBase -= OnEnemyReachedBase;
            completedWave.EnemyKilled      -= OnEnemyKilled;

            WaveComplete?.Invoke(completedWave);

            if (waves.TrueForAll(x => x.WaveCompleted))
            {
                Log.Info("All Waves Complete!");
                AllWavesComplete?.Invoke();
            }
            else
            {
                delayTimer = new Timer(delayBetweenWaves, () => MoveToNextWave());
            }
        }
示例#5
0
 public void End()
 {
     WaveComplete?.Invoke();
 }