void SpawnWave() { if (_currentEnemy == null) { return; } _waveTimer = _currentEnemy.Delay; for (int i = 0; i < _currentEnemy.Count; i++) { var e = SpawnEnemy(_currentEnemy.EnemyType, (int)_currentEnemy.SpawnGroup); if (e != null) { CurrentSpawnedEnemies.Add(e); } } SpawnGroups[(int)_currentEnemy.SpawnGroup].Clear(); _currentWaveEnemyIndex++; if (_currentWaveEnemyIndex < _currentWave.Spawns.Count) { _currentEnemy = _currentWave.Spawns[_currentWaveEnemyIndex]; } else { _currentEnemy = null; } }
public void StartSpawner() { SpawnEnabled = true; _waveTimer = 0; _currentWave = Waves[0]; _currentWaveEnemyIndex = 0; _currentEnemy = _currentWave.Spawns[0]; _addTimeout = _currentWave.AdditionalDelay; }
// Update is called once per frame void Update() { if (_addTimeout >= 0) { _addTimeout -= Time.deltaTime; } if (_waveTimer >= 0) { _waveTimer -= Time.deltaTime; } if (!SpawnEnabled) { return; } if (WaveCompleted()) { Bonus.SpawnBonus(_currentWave.FinalBonus, Vector3.zero); GameManager.Instance.WavePassed(_currentWaveIndex); _currentWaveIndex++; if (_currentWaveIndex >= Waves.Count) { GameManager.Instance.GameEnded(false); Debug.Log("Finished game"); SpawnEnabled = false; return; } else { _currentWave = Waves[_currentWaveIndex]; _addTimeout = _currentWave.AdditionalDelay; _currentEnemy = _currentWave.Spawns[0]; _currentWaveEnemyIndex = 0; } } else { if (_waveTimer <= 0) { SpawnWave(); } if (CanSpawnAdditionalEnemy()) { SpawnAdditionalEnemy(); } } }