예제 #1
0
    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;
        }
    }
예제 #2
0
 public void StartSpawner()
 {
     SpawnEnabled           = true;
     _waveTimer             = 0;
     _currentWave           = Waves[0];
     _currentWaveEnemyIndex = 0;
     _currentEnemy          = _currentWave.Spawns[0];
     _addTimeout            = _currentWave.AdditionalDelay;
 }
예제 #3
0
    // 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();
            }
        }
    }