Skip to content
Snippets Groups Projects
Commit 5ecaeb1b authored by Malik Rafsanjani's avatar Malik Rafsanjani
Browse files

feat: add state save for talked with npcs

parent 54569dce
Branches
Tags
No related merge requests found
...@@ -23,6 +23,16 @@ public class DialogueManager : MonoBehaviour ...@@ -23,6 +23,16 @@ public class DialogueManager : MonoBehaviour
public Text npcDialogueBox; public Text npcDialogueBox;
public Text playerResponse; 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 // Start is called before the first frame update
void Start() void Start()
{ {
...@@ -102,6 +112,7 @@ public class DialogueManager : MonoBehaviour ...@@ -102,6 +112,7 @@ public class DialogueManager : MonoBehaviour
private void StartConvo() private void StartConvo()
{ {
hasTalked[GlobalStateManager.Instance.IdxQuest] = true;
isTalking = true; isTalking = true;
curResponseTracker = 0f; curResponseTracker = 0f;
dialogueUI.SetActive(true); dialogueUI.SetActive(true);
......
...@@ -64,7 +64,8 @@ public class Temple : MonoBehaviour ...@@ -64,7 +64,8 @@ public class Temple : MonoBehaviour
// Update is called once per frame // Update is called once per frame
void Update() 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); ToastManager.Instance.ShowToast("ENTERING QUEST",1);
EnteringQuest(); EnteringQuest();
...@@ -121,6 +122,15 @@ public class Temple : MonoBehaviour ...@@ -121,6 +122,15 @@ public class Temple : MonoBehaviour
{ {
if (other.CompareTag("Player")) 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) if (onQuest)
{ {
ToastManager.Instance.ShowToast("- Good Luck with your Quest -",1); ToastManager.Instance.ShowToast("- Good Luck with your Quest -",1);
...@@ -130,7 +140,6 @@ public class Temple : MonoBehaviour ...@@ -130,7 +140,6 @@ public class Temple : MonoBehaviour
ToastManager.Instance.ShowToast("- Press G to Enter Quest " + ToastManager.Instance.ShowToast("- Press G to Enter Quest " +
(idxCurrentQuest+1) + " - ",1); (idxCurrentQuest+1) + " - ",1);
} }
playerOnRange = true;
} }
} }
......
...@@ -24,6 +24,19 @@ public class GlobalStateManager : MonoBehaviour ...@@ -24,6 +24,19 @@ public class GlobalStateManager : MonoBehaviour
} }
private PetHealth petHealth; private PetHealth petHealth;
private CheatManager cheatManager; private CheatManager cheatManager;
private DialogueManager dialogueManager;
public DialogueManager DialogueManager
{
get
{
if (dialogueManager == null)
{
dialogueManager = FindObjectOfType<DialogueManager>();
}
return dialogueManager;
}
}
private void Awake() private void Awake()
{ {
...@@ -45,6 +58,7 @@ public class GlobalStateManager : MonoBehaviour ...@@ -45,6 +58,7 @@ public class GlobalStateManager : MonoBehaviour
_temple = FindObjectOfType<Temple>(); _temple = FindObjectOfType<Temple>();
petHealth = FindObjectOfType<PetHealth>(); petHealth = FindObjectOfType<PetHealth>();
cheatManager = FindObjectOfType<CheatManager>(); cheatManager = FindObjectOfType<CheatManager>();
dialogueManager = FindObjectOfType<DialogueManager>();
} }
public int Money public int Money
...@@ -89,6 +103,15 @@ public class GlobalStateManager : MonoBehaviour ...@@ -89,6 +103,15 @@ public class GlobalStateManager : MonoBehaviour
} }
} }
public bool[] HasTalked
{
get => DialogueManager.HasTalked;
set
{
DialogueManager.HasTalked = value;
}
}
private PetManager _petManager; private PetManager _petManager;
public PetManager petManager public PetManager petManager
{ {
...@@ -190,7 +213,7 @@ public class GlobalStateManager : MonoBehaviour ...@@ -190,7 +213,7 @@ public class GlobalStateManager : MonoBehaviour
var metaStateSave = new MetaStateSave("name"); var metaStateSave = new MetaStateSave("name");
var playerStateSave = new PlayerStateSave(PlayerName, Money, Health, IdxQuest, playerWeapons); var playerStateSave = new PlayerStateSave(PlayerName, Money, Health, IdxQuest, playerWeapons);
var petStateSave = new PetStateSave(PetHealth, (int)GameControl.control.petIdx); 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); var state = new StateSave(metaStateSave, playerStateSave, petStateSave, globalStateSave);
return state; return state;
...@@ -237,5 +260,6 @@ public class GlobalStateManager : MonoBehaviour ...@@ -237,5 +260,6 @@ public class GlobalStateManager : MonoBehaviour
// TODO: global state save // TODO: global state save
GlobalManager.Instance.TimePlayed = state.globalStateSave.timePlayed; GlobalManager.Instance.TimePlayed = state.globalStateSave.timePlayed;
cheatManager.loadCheat(state.globalStateSave.cheats); cheatManager.loadCheat(state.globalStateSave.cheats);
HasTalked = state.globalStateSave.hasTalked;
} }
} }
...@@ -98,11 +98,13 @@ public class GlobalStateSave ...@@ -98,11 +98,13 @@ public class GlobalStateSave
{ {
public double timePlayed; public double timePlayed;
public bool[] cheats; public bool[] cheats;
public bool[] hasTalked;
public GlobalStateSave(double timePlayed, bool[] cheats) public GlobalStateSave(double timePlayed, bool[] cheats, bool[] hasTalked)
{ {
this.timePlayed = timePlayed; this.timePlayed = timePlayed;
this.cheats = cheats; this.cheats = cheats;
this.hasTalked = hasTalked;
} }
public override string ToString() public override string ToString()
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment