diff --git a/Assets/Scripts/GameFlowManager.cs b/Assets/Scripts/GameFlowManager.cs index 6928c16..e9b999b 100644 --- a/Assets/Scripts/GameFlowManager.cs +++ b/Assets/Scripts/GameFlowManager.cs @@ -195,14 +195,14 @@ public class GameFlowManager : MonoBehaviour { public override void EnterState() { base.EnterState(); - gameFlowManager.gameTimer.stopped = false; + gameFlowManager.gameTimer.Stopped = false; gameFlowManager.SetPauseLevel(PauseLevel.NotPaused); } public override void LeaveState() { base.LeaveState(); - gameFlowManager.gameTimer.stopped = true; + gameFlowManager.gameTimer.Stopped = true; } } @@ -216,7 +216,7 @@ public class GameFlowManager : MonoBehaviour { gameFlowManager.mainMenu.SetMenuMode(MainMenuManager.MenuMode.PauseMenu); gameFlowManager.SetPauseLevel(PauseLevel.TimeStop); gameFlowManager.blurFade.SetBlurred(true); - gameFlowManager.gameTimer.showHighScore = true; + gameFlowManager.gameTimer.ShowHighScore = true; } public override void LeaveState() { @@ -226,7 +226,7 @@ public class GameFlowManager : MonoBehaviour { gameFlowManager.mainMenu.gameObject.SetActive(false); gameFlowManager.SetPauseLevel(PauseLevel.NotPaused); gameFlowManager.blurFade.SetBlurred(false); - gameFlowManager.gameTimer.showHighScore = false; + gameFlowManager.gameTimer.ShowHighScore = false; } } @@ -238,12 +238,12 @@ public class GameFlowManager : MonoBehaviour { gameFlowManager.SetPauseLevel(PauseLevel.PreventActions); gameFlowManager.blurFade.SetBlurred(true); - gameFlowManager.gameTimer.showHighScore = true; + gameFlowManager.gameTimer.ShowHighScore = true; } public override void LeaveState() { gameFlowManager.blurFade.SetBlurred(false); - gameFlowManager.gameTimer.showHighScore = false; + gameFlowManager.gameTimer.ShowHighScore = false; } public void ReloadGame() { diff --git a/Assets/Scripts/GameTimer.cs b/Assets/Scripts/GameTimer.cs index bcf0e39..75b1336 100644 --- a/Assets/Scripts/GameTimer.cs +++ b/Assets/Scripts/GameTimer.cs @@ -6,31 +6,55 @@ public class GameTimer : MonoBehaviour { TMP_Text label; float timer; float highScore; - public bool stopped; - public bool showHighScore; + bool stopped; + + public bool Stopped { + get => stopped; + set { + stopped = value; + UpdateLabel(); + } + } + + public bool ShowHighScore { + get => showHighScore; + set { + showHighScore = value; + UpdateLabel(); + } + } + + bool showHighScore; const string HighScoreKey = "High Score"; void Awake() { label = GetComponent(); timer = 0f; highScore = PlayerPrefs.GetFloat(HighScoreKey); - stopped = true; + Stopped = true; } void Update() { - if (stopped) + if (Stopped) return; timer += Time.deltaTime; SaveHighScore(); + UpdateLabel(); + } + + void UpdateLabel() { label.text = TimeSpan.FromSeconds(timer) .ToString(@"mm\:ss"); - if (showHighScore) + if (ShowHighScore) label.text += "\nBest Time: " + TimeSpan.FromSeconds(highScore) .ToString(@"mm\:ss"); } public void SaveHighScore() { + if (timer <= highScore) + return; + PlayerPrefs.SetFloat(HighScoreKey, timer); highScore = timer; } diff --git a/Assets/Scripts/MainMenuManager.cs b/Assets/Scripts/MainMenuManager.cs index 1b112a7..bf602a2 100644 --- a/Assets/Scripts/MainMenuManager.cs +++ b/Assets/Scripts/MainMenuManager.cs @@ -26,7 +26,9 @@ public class MainMenuManager : MonoBehaviour { public void SetMenuMode(MenuMode mode) { this.mode = mode; - startButton.gameObject.SetActive(mode == MenuMode.MainMenu); + bool mainMenu = mode == MenuMode.MainMenu; + startButton.gameObject.SetActive(mainMenu); + titleLable.gameObject.SetActive(mainMenu); } public void ResetMenuState() {