diff --git a/Assets/Scripts/Quest/Temple/Temple.cs b/Assets/Scripts/Quest/Temple/Temple.cs index 51d4d0c859e0d6111b6c00466af02e7806589f2f..4272a6e503bfb5982f596fec3c263b1cf95def53 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 dd892a8ccbbf796e209ecd5d19aad3c315ac0482..7f860da44ef847df9b40da4df99cf88ec5d1fa4c 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 20f06d03370629d7c49a511c281486ef961dc7fb..05e35ec24d56825249d36dc7a89e62649a4a1b5e 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 2b7df1658a3e6254f54972d2930fcc96810a3c21..1d0cf6a5798bed9d50ac7e213f0a38e3c461a39d 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 = "";