protected virtual IEnumerator StartGameCycle()
        {
            waves = gameManager.waveGenerator.GenerateAllWaves();
            foreach (var wave in waves)
            {
                gameManager.viewSoloGame.RefreshWaveStatus();
                currentCash += wave.initCash;
                GainWaveCashEvent?.Invoke(wave, wave.initCash);
                currentShield = 0;
                RefreshShieldEvent?.Invoke();
                maxWaveShield  = currentShield;
                enemyWaveCount = 0;
                gameManager.viewSoloGame.RefreshWaveStatus();
                yield return(new WaitForSeconds(wave.waveInterval));

                //begin spawning enemies
                enemyWaveCount  = wave.enemies.Count;
                enemyAliveCount = enemyWaveCount;
                currentWave++;
                gameManager.viewSoloGame.RefreshWaveStatus();
                yield return(StartCoroutine(gameManager.enemySpawner.SpawnEnemy(wave)));

                while (enemyAliveCount > 0)
                {
                    yield return(0);
                }
                gameManager.viewSoloGame.RefreshWaveStatus();
            }
            VictoryEvent?.Invoke();
        }
示例#2
0
 private void Victory()
 {
     Time.timeScale = 0;
     if (VictoryEvent != null)
     {
         VictoryEvent.Invoke();
     }
     enabled = false;
 }
示例#3
0
    void OnVictory(VictoryEvent e)
    {
        if (m_started)
        {
            return;
        }

        m_started = true;
        SoundSystem.Instance().play(m_victorySong);
        //DOVirtual.DelayedCall(m_stateDelay, () => { SceneSystem.changeScene("WinMenu"); });
        SceneSystem.changeScene("WinMenu");
    }