diff --git a/Assets/Scripts/Managers/DialogueManager.cs b/Assets/Scripts/Managers/DialogueManager.cs index 4b5bdfa859abb2b74ec2fc00447cfc798fe51d9b..0e9b30a4a1afbdf6057adf3e075c4ac74890d615 100644 --- a/Assets/Scripts/Managers/DialogueManager.cs +++ b/Assets/Scripts/Managers/DialogueManager.cs @@ -23,6 +23,16 @@ public class DialogueManager : MonoBehaviour public Text npcDialogueBox; public Text playerResponse; + private bool[] hasTalked = new bool[4]; + public bool[] HasTalked + { + get => hasTalked; + set + { + hasTalked = value; + } + } + // Start is called before the first frame update void Start() { @@ -102,6 +112,7 @@ public class DialogueManager : MonoBehaviour private void StartConvo() { + hasTalked[GlobalStateManager.Instance.IdxQuest] = true; isTalking = true; curResponseTracker = 0f; dialogueUI.SetActive(true); diff --git a/Assets/Scripts/Quest/Temple/Temple.cs b/Assets/Scripts/Quest/Temple/Temple.cs index f2e2d99e71185a023d984387f8b1903beb97f8e2..b43992e80ea662ad81d0a61058fe0e8f82a913b5 100644 --- a/Assets/Scripts/Quest/Temple/Temple.cs +++ b/Assets/Scripts/Quest/Temple/Temple.cs @@ -64,7 +64,8 @@ public class Temple : MonoBehaviour // Update is called once per frame void Update() { - if (playerOnRange && Input.GetKeyDown(KeyCode.G)) + var hasTalked = GlobalStateManager.Instance.HasTalked[idxCurrentQuest]; + if (playerOnRange && Input.GetKeyDown(KeyCode.G) && hasTalked) { ToastManager.Instance.ShowToast("ENTERING QUEST",1); EnteringQuest(); @@ -121,6 +122,15 @@ public class Temple : MonoBehaviour { if (other.CompareTag("Player")) { + playerOnRange = true; + + var hasTalkeds = GlobalStateManager.Instance.HasTalked; + if (!hasTalkeds[idxCurrentQuest]) + { + ToastManager.Instance.ShowToast("Talk first with wizard", 1); + return; + } + if (onQuest) { ToastManager.Instance.ShowToast("- Good Luck with your Quest -",1); @@ -130,7 +140,6 @@ public class Temple : MonoBehaviour ToastManager.Instance.ShowToast("- Press G to Enter Quest " + (idxCurrentQuest+1) + " - ",1); } - playerOnRange = true; } } diff --git a/Assets/Scripts/States/GlobalStateManager.cs b/Assets/Scripts/States/GlobalStateManager.cs index dbe4210efa0deb919a0190a3e90162c4be89366c..3aad6a5254ccb76abab5c98633f55fe84c8cdab5 100644 --- a/Assets/Scripts/States/GlobalStateManager.cs +++ b/Assets/Scripts/States/GlobalStateManager.cs @@ -24,6 +24,19 @@ public class GlobalStateManager : MonoBehaviour } private PetHealth petHealth; private CheatManager cheatManager; + private DialogueManager dialogueManager; + public DialogueManager DialogueManager + { + get + { + if (dialogueManager == null) + { + dialogueManager = FindObjectOfType<DialogueManager>(); + } + + return dialogueManager; + } + } private void Awake() { @@ -45,6 +58,7 @@ public class GlobalStateManager : MonoBehaviour _temple = FindObjectOfType<Temple>(); petHealth = FindObjectOfType<PetHealth>(); cheatManager = FindObjectOfType<CheatManager>(); + dialogueManager = FindObjectOfType<DialogueManager>(); } public int Money @@ -89,6 +103,15 @@ public class GlobalStateManager : MonoBehaviour } } + public bool[] HasTalked + { + get => DialogueManager.HasTalked; + set + { + DialogueManager.HasTalked = value; + } + } + private PetManager _petManager; public PetManager petManager { @@ -190,7 +213,7 @@ public class GlobalStateManager : MonoBehaviour var metaStateSave = new MetaStateSave("name"); var playerStateSave = new PlayerStateSave(PlayerName, Money, Health, IdxQuest, playerWeapons); var petStateSave = new PetStateSave(PetHealth, (int)GameControl.control.petIdx); - var globalStateSave = new GlobalStateSave(TimePlayed, Cheats); + var globalStateSave = new GlobalStateSave(TimePlayed, Cheats, HasTalked); var state = new StateSave(metaStateSave, playerStateSave, petStateSave, globalStateSave); return state; @@ -237,5 +260,6 @@ public class GlobalStateManager : MonoBehaviour // TODO: global state save GlobalManager.Instance.TimePlayed = state.globalStateSave.timePlayed; cheatManager.loadCheat(state.globalStateSave.cheats); + HasTalked = state.globalStateSave.hasTalked; } } diff --git a/Assets/Scripts/States/StateSave.cs b/Assets/Scripts/States/StateSave.cs index f925f4cce9ef4726eb1f2bcb4574b8e50ba33ed5..61555a5c2624d7dc3d780a89334f12346c7435f1 100644 --- a/Assets/Scripts/States/StateSave.cs +++ b/Assets/Scripts/States/StateSave.cs @@ -98,11 +98,13 @@ public class GlobalStateSave { public double timePlayed; public bool[] cheats; + public bool[] hasTalked; - public GlobalStateSave(double timePlayed, bool[] cheats) + public GlobalStateSave(double timePlayed, bool[] cheats, bool[] hasTalked) { this.timePlayed = timePlayed; this.cheats = cheats; + this.hasTalked = hasTalked; } public override string ToString()