From 292a9fd6c4c9bc14e67ab0fb1e2e45e6433938b6 Mon Sep 17 00:00:00 2001 From: Malik Rafsanjani <pro.malikakbar2357@gmail.com> Date: Sat, 15 Apr 2023 12:52:59 +0700 Subject: [PATCH] feat: show ui save on quest finish --- Assets/Scripts/Quest/Temple/Temple.cs | 21 +++++++++++++++-- Assets/Scripts/SaveLoad/SaveDialogHandler.cs | 11 ++++++++- Assets/Scripts/SaveLoad/SavePlace.cs | 3 ++- Assets/Scripts/States/GlobalStateManager.cs | 24 ++++++++++++++++++-- 4 files changed, 53 insertions(+), 6 deletions(-) diff --git a/Assets/Scripts/Quest/Temple/Temple.cs b/Assets/Scripts/Quest/Temple/Temple.cs index 51d4d0c..4272a6e 100644 --- a/Assets/Scripts/Quest/Temple/Temple.cs +++ b/Assets/Scripts/Quest/Temple/Temple.cs @@ -40,6 +40,20 @@ public class Temple : MonoBehaviour public bool OnQuest { get => onQuest; } + private SaveDialogHandler _saveDialog; + public SaveDialogHandler saveDialog + { + get + { + if (_saveDialog == null) + { + _saveDialog = GameObject.Find("HUDCanvas").GetComponentInChildren<SaveDialogHandler>(); + } + + return _saveDialog; + } + } + // Start is called before the first frame update void Start() { @@ -69,7 +83,8 @@ public class Temple : MonoBehaviour private void ExitingQuest() { - GameControl.control.addCurrency(questNumberEnemy.Reward); + var reward = questNumberEnemy.Reward; + GameControl.control.addCurrency(reward); timer.StopTimer(); onQuest = false; questNumberEnemy = null; @@ -83,7 +98,7 @@ public class Temple : MonoBehaviour } idxCurrentQuest++; - ToastManager.Instance.ShowToast("Quest " + idxCurrentQuest + " is Completed! You got additional coins: " + questNumberEnemy.Reward, 1); + ToastManager.Instance.ShowToast("Quest " + idxCurrentQuest + " is Completed! You got additional coins: " + reward, 1); // retrieve the time // add it to the global time @@ -94,6 +109,8 @@ public class Temple : MonoBehaviour + " + " + System.TimeSpan.FromSeconds(questTime).ToString("mm':'ss"), 1); GlobalManager.Instance.TotalTime += questTime; ToastManager.Instance.ShowToast(System.TimeSpan.FromSeconds(GlobalManager.Instance.TotalTime).ToString("mm':'ss"), 1); + + this.saveDialog.Show(); } private void OnTriggerEnter(Collider other) diff --git a/Assets/Scripts/SaveLoad/SaveDialogHandler.cs b/Assets/Scripts/SaveLoad/SaveDialogHandler.cs index dd892a8..7f860da 100644 --- a/Assets/Scripts/SaveLoad/SaveDialogHandler.cs +++ b/Assets/Scripts/SaveLoad/SaveDialogHandler.cs @@ -99,7 +99,16 @@ public class SaveDialogHandler : MonoBehaviour // Update is called once per frame void Update() { - + var onquest = GlobalStateManager.Instance.OnQuest; + if (onquest) + { + Close(); + } + + if (Input.GetKeyDown(KeyCode.Escape)) + { + Close(); + } } public void Show() diff --git a/Assets/Scripts/SaveLoad/SavePlace.cs b/Assets/Scripts/SaveLoad/SavePlace.cs index 20f06d0..05e35ec 100644 --- a/Assets/Scripts/SaveLoad/SavePlace.cs +++ b/Assets/Scripts/SaveLoad/SavePlace.cs @@ -33,7 +33,8 @@ public class SavePlace : MonoBehaviour private void OnTriggerEnter(Collider other) { - if (other.CompareTag("Player")) + var onquest = GlobalStateManager.Instance.OnQuest; + if (other.CompareTag("Player") && !onquest) { ToastManager.Instance.ShowToast("Press B to save", 1); onArea = true; diff --git a/Assets/Scripts/States/GlobalStateManager.cs b/Assets/Scripts/States/GlobalStateManager.cs index 2b7df16..1d0cf6a 100644 --- a/Assets/Scripts/States/GlobalStateManager.cs +++ b/Assets/Scripts/States/GlobalStateManager.cs @@ -9,7 +9,19 @@ public class GlobalStateManager : MonoBehaviour public static GlobalStateManager Instance { get; private set; } private PlayerWeapons playerWeapons; private PlayerHealth playerHealth; - private Temple temple; + private Temple _temple; + private Temple temple + { + get + { + if (_temple == null) + { + _temple = FindObjectOfType<Temple>(); + } + + return _temple; + } + } private PetHealth petHealth; private CheatManager cheatManager; @@ -30,7 +42,7 @@ public class GlobalStateManager : MonoBehaviour { playerWeapons = FindObjectOfType<PlayerWeapons>(); playerHealth = FindObjectOfType<PlayerHealth>(); - temple = FindObjectOfType<Temple>(); + _temple = FindObjectOfType<Temple>(); petHealth = FindObjectOfType<PetHealth>(); cheatManager = FindObjectOfType<CheatManager>(); } @@ -90,6 +102,14 @@ public class GlobalStateManager : MonoBehaviour } + public bool OnQuest + { + get + { + return temple.OnQuest; + } + } + public string Stats() { var str = ""; -- GitLab