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++; }
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(); } }
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(); }
public void WaveStarted() => OnWaveStarted?.Invoke();