public void Kill() { _deathFeedback?.PlayAll(); _currentHealth = 0; SetInvulnerable(false); gameObject.SetActive(false); if (_character.CharacterType == CharacterType.Player) { GenericEvent.Trigger(GenericEventType.PlayerDied, gameObject); } else { GenericEvent.Trigger(GenericEventType.EnemyDestroyed, gameObject); } }
public override IEnumerator Initialization() { _spawnerManager = ManagerProvider.Get <SpawnerManager>(); _gameManager = ManagerProvider.Get <GameManager>(); _spawnerManager.CreateEnemyPools(); _gameManager.SetupLevel(3); // Instantiate player ship AsyncOperationHandle <GameObject> handle = _playerReference.InstantiateAsync(_playerHolder, false); handle.Completed += OnPlayerInstantiatedCallback; _waveSequence.Initialize(); yield return(new WaitForEndOfFrame()); GenericEvent.Trigger(GenericEventType.LevelStarted, null); }
private void Transition() { // Transition wave _currentWave++; // Reset timers for next wave _timer[0] = _timer[1] = 0; _currentWaveSpawn = 0; GenericEvent.Trigger(GenericEventType.WaveFinished, null); // Cycle option if (_cycle) { _currentWave %= _wavesConfig.Waves.Length; _nextState = WaveSequenceState.ProcessWave; } else { _active = false; // Trigger level completed GenericEvent.Trigger(GenericEventType.LevelCompleted, null); } }