void HandleWave() { if (stateSystem.IsWaitingNextWave()) { if (waveSystem.IsLastWave()) { stateSystem.SetWaveState(StateSystem.WaveState.Done); } } else if (stateSystem.IsWaitingWaveClear()) { if (enemies.Count == 0) { playerHealth.ResetFullHealth(); playerAction.ResetAllCooldowns(); hud.ResetAllCooldownIndicators(); //player1.GetComponent<PlayerController>().AllowAttack(false); stateSystem.SetWaveState(StateSystem.WaveState.WaitingNextWave); // Reset monster spawn sort order spawnSortOrder = defaultSpawnSortOrder; hud.ShowNextWaveBtn(); } } else if (stateSystem.IsWaitingWaveSpawn()) { if (enemies.Count < 40) { if (getNewSpawn) { if (waveSystem.IsWaveOver()) { stateSystem.SetWaveState(StateSystem.WaveState.WaitingWaveClear); return; } spawn = waveSystem.GetSpawn(); spawnReadyTime = Time.timeSinceLevelLoad + spawn.spawnDelay; getNewSpawn = false; } if (Time.timeSinceLevelLoad > spawnReadyTime) { Spawn(); getNewSpawn = true; } } } }