Пример #1
0
 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);
        }
Пример #3
0
        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);
            }
        }