private IEnumerator AsteroidWaveControllerCoroutine()
    {
        var spawner = FindObjectOfType <AsteroidSpawner>();

        while (true)
        {
            if (OnWaveStarted != null)
            {
                OnWaveStarted.Invoke(CurrentWaveNumber);
            }

            spawner.AsteroidTypeLevel = CurrentWaveNumber;
            spawner.Spawning          = true;

            yield return(new WaitForSeconds(WaveDuration));

            spawner.Spawning = false;

            yield return(new WaitForSeconds(CooldownDuration));

            if (OnWaveEnded != null)
            {
                OnWaveEnded.Invoke(CurrentWaveNumber);
            }

            yield return(new WaitForSeconds(BreakDuration));

            CurrentWaveNumber += 1;
        }
    }
    private IEnumerator StartNewWave(float secs)
    {
        Debug.Log("starting");
        yield return(new WaitForSeconds(secs));

        currentEnemyCount = spawner.SpawnNewWave(Wave);
        OnWaveStarted?.Invoke(Wave);

        Wave++;
    }
Esempio n. 3
0
        private bool StartWave(int wave)
        {
            ChangeState(RoundState.InProgress);
            WaveTimeline timeline = GetWave(wave);

            Debug.Log("Starting next wave!");

            if (timeline != null)
            {
                WaveHandler handler = Instantiate(WaveHandlerPrefab).GetComponent <WaveHandler>();
                handler.Assign(wave, timeline);
                AddWave(handler);

                handler.BeginWave();
                OnWaveStarted?.Invoke(wave, handler);
            }

            return(timeline != null);
        }
    private IEnumerator AsteroidWaveControllerCoroutine()
    {
        var spawner = FindObjectOfType <AsteroidSpawner>();

        while (true)
        {
            // 1 sec for preparation
            if (OnPrepareStarted != null)
            {
                OnPrepareStarted.Invoke();
            }
            yield return(new WaitForSeconds(1f));

            // START
            if (OnWaveStarted != null)
            {
                OnWaveStarted.Invoke(CurrentWaveNumber);
            }

            spawner.AsteroidTypeLevel = CurrentWaveNumber;

            spawner.Spawning = true;
            yield return(new WaitForSeconds(_waveDuration));

            spawner.Spawning = false;

            yield return(new WaitForSeconds(_cooldownDuration));

            CurrentWaveNumber++;
            if (OnBreakStarted != null)
            {
                OnBreakStarted.Invoke(CurrentWaveNumber);
            }
            yield return(new WaitForSeconds(_breakDuration));

            _asteroidSpawner.IncreaseAsteroidsSpeed();
        }
    }
Esempio n. 5
0
    private IEnumerator AsteroidWaveControllerCoroutine()
    {
        var spawner = FindObjectOfType <AsteroidSpawner>();

        //  var spawningTime = FindObjectOfType<AsteroidSpawner>().AsteroidSpawningTime;



        while (true)
        {
            if (OnWaveStarted != null)
            {
                OnWaveStarted.Invoke(CurrentWaveNumber);
            }

            spawner.AsteroidTypeLevel = CurrentWaveNumber - 1;



            spawner.Spawning = true;                        //włączamy tworzenie asteroidów tzn 'Wave"

            yield return(new WaitForSeconds(WaveDuration)); //czas trwania Wave

            spawner.Spawning = false;                       //koniec fali

            yield return(new WaitForSeconds(CooldownDuration));

            if (OnWaveEnded != null)
            {
                OnWaveEnded.Invoke(CurrentWaveNumber);
            }
            yield return(new WaitForSeconds(BreakDuration)); // czas trwania przerwy

            CurrentWaveNumber++;
            //spawningTime = spawningTime + 3f;
        }
    }
 public void StartWave()
 {
     StartCoroutine(SpawnWave());
     OnWaveStarted?.Invoke();
 }
Esempio n. 7
0
 public void WaveStarted() => OnWaveStarted?.Invoke();