From d15fa5c8cafe8e69ffbc3180446b6ec9b2e052c3 Mon Sep 17 00:00:00 2001
From: mikeleo03 <leonmichael463@gmail.com>
Date: Mon, 29 Apr 2024 13:05:59 +0700
Subject: [PATCH] feat : base game over scheme

---
 Assets/Scripts/Managers/GameOverManager.cs | 43 ++++++++++------------
 1 file changed, 19 insertions(+), 24 deletions(-)

diff --git a/Assets/Scripts/Managers/GameOverManager.cs b/Assets/Scripts/Managers/GameOverManager.cs
index 1ff72d8..d5564ca 100644
--- a/Assets/Scripts/Managers/GameOverManager.cs
+++ b/Assets/Scripts/Managers/GameOverManager.cs
@@ -1,44 +1,39 @@
 using System.Collections;
 using UnityEngine;
 using UnityEngine.Events;
+using UnityEngine.SceneManagement;
 
-namespace Nightmare
-{
-    public class GameOverManager : MonoBehaviour
-    {
+namespace Nightmare {
+    public class GameOverManager : MonoBehaviour {
         private PlayerHealth playerHealth;
         [SerializeField] private TimerManager timerManager;
         Animator anim;
-
         LevelManager lm;
-        private UnityEvent listener;
 
-        void Awake ()
-        {
+        public float restartDelay = 10f;
+        float restartTimer;
+
+        void Awake () {
             playerHealth = FindObjectOfType<PlayerHealth>();
-            anim = GetComponent <Animator> ();
+            anim = GetComponent<Animator>();
             lm = FindObjectOfType<LevelManager>();
-            EventManager.StartListening("GameOver", ShowGameOver);
         }
 
-        void OnDestroy()
-        {
-            EventManager.StopListening("GameOver", ShowGameOver);
-        }
+        void Update() {
+            if (playerHealth.currentHealth <= 0) {
+                anim.SetTrigger("GameOver");
+                restartTimer += Time.deltaTime;
 
-        void ShowGameOver()
-        {
-            anim.SetBool("GameOver", true);
-            timerManager.ResetTimer();
+                if (restartTimer >= restartDelay) {
+                    SceneManager.LoadScene("Menu");
+                    anim.SetBool("GameOver", false);
+                }
+            }
         }
 
-        private void ResetLevel()
-        {
+        private void ResetLevel() {
             ScoreManager.score = 0;
-            LevelManager lm = FindObjectOfType<LevelManager>();
-            lm.LoadInitialLevel();
-            anim.SetBool("GameOver", false);
-            playerHealth.ResetPlayer();
+            timerManager.ResetTimer();
         }
     }
 }
\ No newline at end of file
-- 
GitLab