diff --git a/Assets/Scripts/Managers/GameOverManager.cs b/Assets/Scripts/Managers/GameOverManager.cs index 97acf057982d6aa98312634b02139fcfbab096f0..37bc7de3ae6c270609976970a1345a4a07465857 100644 --- a/Assets/Scripts/Managers/GameOverManager.cs +++ b/Assets/Scripts/Managers/GameOverManager.cs @@ -58,6 +58,7 @@ namespace Nightmare LevelManager.Instance.Exit(); isGameOver = false; statsManager.SaveStats(); + SceneManager.LoadScene("MainMenu", LoadSceneMode.Single); } public void ShowGameOverButtons() diff --git a/Assets/Scripts/Managers/LevelManager.cs b/Assets/Scripts/Managers/LevelManager.cs index cadf0f6db285e03a42a364ffcfdc38b9a9a105c4..fcb5fc786c758ba17032913f249389d6e90e52f4 100644 --- a/Assets/Scripts/Managers/LevelManager.cs +++ b/Assets/Scripts/Managers/LevelManager.cs @@ -608,10 +608,41 @@ namespace Nightmare public void Exit() { - currentIndex = 0; - currentQuest = 0; - ResetAtt(); - SceneManager.LoadScene(levels[currentIndex], LoadSceneMode.Single); + // Kill Player + GameObject player = GameObject.FindGameObjectWithTag("Player"); + PlayerHealth health = player.GetComponent<PlayerHealth>(); + health.currentHealth = 0; + health.Death(); + + Scene currentLevel = SceneManager.GetSceneAt(0); + for (int i = 0; i < SceneManager.sceneCount; i++) + { + Scene scene = SceneManager.GetSceneAt(i); + if (!scene.name.StartsWith("Cutscene")) + { + currentLevel = scene; + } + else if (SceneManager.sceneCount > 1) + { + SceneManager.UnloadSceneAsync(scene); + } + } + + var audioSources = new List<AudioSource>(); + + foreach (var root in currentLevel.GetRootGameObjects()) + { + audioSources.AddRange(root.GetComponentsInChildren<AudioSource>(true)); + } + + foreach (var source in audioSources) + { + source.mute = false; + } + + isCinematic = false; + + EventManager.TriggerEvent("GameOver"); } public void ResetLevel()