public void Advance() { if (_currentWaveIndex >= _spawnWaves.Count) { return; } Debug.Log("Advancing NPC wave spawner..."); // stop the current wave timers if (_currentWaveIndex >= 0) { CurrentWave.Stop(); WaveCompleteEvent?.Invoke(this, new SpawnWaveEventArgs(_currentWaveIndex, _currentWaveIndex >= _spawnWaves.Count - 1)); } // advance the wave _currentWaveIndex++; if (_currentWaveIndex >= _spawnWaves.Count) { return; } // start the next wave of timers CurrentWave.Start(); WaveStartEvent?.Invoke(this, new SpawnWaveEventArgs(_currentWaveIndex, _currentWaveIndex >= _spawnWaves.Count - 1)); }
private void Run() { if (_currentWaveIndex >= _spawnWaves.Count) { return; } // stop the current wave timers if (_currentWaveIndex >= 0) { CurrentWave.Stop(); WaveCompleteEvent?.Invoke(this, new SpawnWaveEventArgs(_currentWaveIndex, _currentWaveIndex >= _spawnWaves.Count - 1)); } // advance the wave _currentWaveIndex++; if (_currentWaveIndex >= _spawnWaves.Count) { return; } // start the next wave of timers CurrentWave.Start(); _waveTimer.Start(CurrentWave.Duration); WaveStartEvent?.Invoke(this, new SpawnWaveEventArgs(_currentWaveIndex, _currentWaveIndex >= _spawnWaves.Count - 1)); }
void onWaveStart(WaveStartEvent waveStartEvent) { GameObject CrystalFragment = waveStartEvent.CrystalFragment; int AmountOfEnemies = waveStartEvent.AmountOfEnemies; spawner.SpawnMultipleObjects(Enemy, CrystalFragment.transform.position, CrystalFragment.transform.rotation, AmountOfEnemies, cooldownTime, timeOffset); }
void StartWave() { //check for remaining waves if (cur_wave_index >= wave_list.Count) { Debug.Log("StartWave() fail @ index"); } //check for wave in progress else if (flag_wave_in_progress) { Debug.Log("StartWave() fail @ flag"); } else { Debug.Log("Wave manager: starting wave"); flag_wave_in_progress = true; //I'll bet its safer to leave this here WaveStartEvent?.Invoke(this, System.EventArgs.Empty); StartCoroutine(ContinueWave(wave_list[cur_wave_index])); } }
private void Update() { GameObject[] list = GameObject.FindGameObjectsWithTag("Enemy"); if (list.Length <= 0) { if (timer <= 0) { waveN++; timer = wavePause; for (int i = 0; i < Mathf.RoundToInt(waveCount); i++) { Spawn(); } WaveStartEvent.Invoke(waveN, Mathf.RoundToInt(waveCount)); waveCount = waveCount * waveMod; } else { timer -= Time.deltaTime; } } }
void Start() { spawner = gameObject.GetComponent <Spawner>(); WaveStartEvent.Register(onWaveStart); }
public void OnWaveStart(WaveStartEvent waveStart) { enemiesLeftToKill = waveStart.numberOfEnemiesInWave; }