//spawn enemies over time IEnumerator SpawnWave(Wave _wave) { state = SpawnPhase.SPAWNING; for (int i = 0; i < _wave.numberOfEnemies; i++) { enemyManager.SpawnEnemy(transform); yield return(new WaitForSeconds(1f / _wave.delayBetweenEnemySpawn)); } state = SpawnPhase.WAITING; yield break; }
private void CheckPahse() { if (phase == SpawnPhase.FIST && enemiesDestroyed >= 3) { phase = SpawnPhase.SECOND; } else if (phase == SpawnPhase.SECOND && enemiesSpawned == 10 && enemiesDestroyed >= 7) { phase = SpawnPhase.THIRD; } }
private void waveEndStuff() { if (waves.Count > currentWaveIndex + 1) { previousWave = currentWave; currentWaveIndex++; currentWave = waves[currentWaveIndex]; phase = SpawnPhase.Spawning; } else { //end } }
//switch state to count down //notfiy player //call win condition if passed wave 10 void WaveCompleted() { state = SpawnPhase.COUNTING; waveState.text = "Time to restock and repair!"; wavesCountDown = timeBetweenWaves; if (nextWave + 1 > waves.Length - 1) { SceneManager.LoadScene(5); } else { nextWave++; } }
void Update() { if (currentWaveIndex == waves.Count - 1 && phase != SpawnPhase.Spawning) { bool finished = true; foreach (var go in GameObject.FindGameObjectsWithTag("Goblin")) { Goblin goblin = go.GetComponent <Goblin>(); if (goblin.IsAlive()) { finished = false; break; } } if (finished) { UIManager.main.ShowTheEnd(); } } if (currentWaveIndex == waves.Count - 1) { UIManager.main.HideIntermissionInfo(); UIManager.main.HideIntermissionTimer(); } if (phase == SpawnPhase.Spawning) { //Debug.Log("Starting to spawn " + Time.fixedTime); if (!spawningOnGoing) { for (int i = 0; i < 4; i++) { WaveSpawn wave = currentWave.GetSpawn(i); //Batch batch = currentBatch[i]; if (wave.batches.Count > 0) { spawnPoints[i].SetWaveSpawn(wave); } } spawningOnGoing = true; } // next wave when all the spawners have spawned their enemies if (spawnPoints.Aggregate(true, (prod, next) => prod && next.GetHasEnded())) { spawningOnGoing = false; phase = SpawnPhase.Waiting; waitStarted = Time.fixedTime; } } else if (phase == SpawnPhase.Waiting && (Time.fixedTime - waitStarted > currentWave.WaveEndWaitTime)) { phase = SpawnPhase.Ended; UIManager.main.HideIntermissionInfo(); } else if (phase == SpawnPhase.Waiting) { if (Input.GetKeyDown(KeyCode.Space) && TutorialManager.main.GetFinished()) { skipWaveWaitingPeriod(); UIManager.main.HideIntermissionInfo(); } else { UIManager.main.UpdateIntermissionInfo("Wave " + (currentWaveIndex + 2) + " spawns in:"); UIManager.main.UpdateIntermissionTimer(currentWave.WaveEndWaitTime - (Time.fixedTime - waitStarted)); } } else if (phase == SpawnPhase.Ended) { waveEndStuff(); } }
private void StartSpawn() { SpawnPlayer(); phase = SpawnPhase.FIST; }