diff --git a/IF3210-2024-Unity-AFK/Assets/Code/Scripts/DataPersistance/DataPersistenceManager.cs b/IF3210-2024-Unity-AFK/Assets/Code/Scripts/DataPersistance/DataPersistenceManager.cs index b639881a57aa5ad213237116967ae35a409f28ab..1aa5df392b0b9d1a80c978397a49517f13cf8ab7 100644 --- a/IF3210-2024-Unity-AFK/Assets/Code/Scripts/DataPersistance/DataPersistenceManager.cs +++ b/IF3210-2024-Unity-AFK/Assets/Code/Scripts/DataPersistance/DataPersistenceManager.cs @@ -9,6 +9,7 @@ using Unity.VisualScripting; using UnityEngine.UI; using Unity.XR.CoreUtils; using TMPro; +using UnityEngine.SceneManagement; public class DataPersistenceManager : MonoBehaviour { @@ -62,9 +63,24 @@ public class DataPersistenceManager : MonoBehaviour if (!PlayerPrefs.HasKey("kill_count")) PlayerPrefs.SetInt("kill_count", 0); if (!PlayerPrefs.HasKey("death_count")) PlayerPrefs.SetInt("death_count", 0); if (!PlayerPrefs.HasKey("spend_count")) PlayerPrefs.SetInt("spend_count", 0); + SceneManager.sceneLoaded += OnSceneLoaded; LoadGame(); } + private void OnDestroy() + { + SceneManager.sceneLoaded -= OnSceneLoaded; + } + + private void OnSceneLoaded(Scene scene, LoadSceneMode mode) + { + if (scene.name == "Main 2") + { + dataPersistenceObjects = FindAllDataPersistenceObjects(); + LoadGame(); + } + } + private void OnApplicationQuit() { DateTime startTime = DateTime.Parse(PlayerPrefs.GetString("start_time")); @@ -80,6 +96,11 @@ public class DataPersistenceManager : MonoBehaviour return new List<IDataPersistence>(dataPersistenceObjects); } + private void Update() + { + dataPersistenceObjects = FindAllDataPersistenceObjects(); + } + public void LoadGame() { // Load data from file @@ -92,26 +113,19 @@ public class DataPersistenceManager : MonoBehaviour NewGame(); } - Debug.Log("pers lenggngngngn " + dataPersistenceObjects.Count); // push data to all scripts foreach (IDataPersistence dataPersistenceObject in dataPersistenceObjects) { - Debug.Log("pers obj " + dataPersistenceObject); + Debug.Log(dataPersistenceObject); dataPersistenceObject.LoadData(gameData); } } - private void Update() - { - dataPersistenceObjects = FindAllDataPersistenceObjects(); - } - public void SaveGame() { // pass data to update foreach (IDataPersistence dataPersistenceObject in dataPersistenceObjects) { - Debug.Log(dataPersistenceObject); dataPersistenceObject.SaveData(ref gameData); } @@ -145,4 +159,4 @@ public class DataPersistenceManager : MonoBehaviour { return dataHandler.LoadAllSaves(); } -} +} \ No newline at end of file diff --git a/IF3210-2024-Unity-AFK/Assets/Code/Scripts/FPSController.cs b/IF3210-2024-Unity-AFK/Assets/Code/Scripts/FPSController.cs index 9a78b763746a9ec194ce6296918cc30297a26009..8c340463006867f96122585332f66269cb3d0bbf 100644 --- a/IF3210-2024-Unity-AFK/Assets/Code/Scripts/FPSController.cs +++ b/IF3210-2024-Unity-AFK/Assets/Code/Scripts/FPSController.cs @@ -47,7 +47,12 @@ public class FPSController : BaseBehaviour, IDataPersistence Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; - GameManager.StartQuest(firstQuestId); + QuestManager qm = GameObject.Find("QuestManager").GetComponent<QuestManager>(); + + if (!qm.GetQuestById(firstQuestId).state.Equals(QuestState.FINISHED)) + { + GameManager.StartQuest(firstQuestId); + } pistol.SetActive(false); shotgun.SetActive(false); sword.SetActive(false); diff --git a/IF3210-2024-Unity-AFK/Assets/Code/Scripts/Quest/QuestManager.cs b/IF3210-2024-Unity-AFK/Assets/Code/Scripts/Quest/QuestManager.cs index 1cd827e66daf747936058b9c78159d3b9a6e2174..8ae24a01c009438b0ba519d6fb23fae8396cb46c 100644 --- a/IF3210-2024-Unity-AFK/Assets/Code/Scripts/Quest/QuestManager.cs +++ b/IF3210-2024-Unity-AFK/Assets/Code/Scripts/Quest/QuestManager.cs @@ -103,7 +103,7 @@ public class QuestManager : MonoBehaviour, IDataPersistence return idToQuestMap; } - private Quest GetQuestById(string id) + public Quest GetQuestById(string id) { return questMap[id]; } @@ -136,9 +136,13 @@ public class QuestManager : MonoBehaviour, IDataPersistence } public void SaveData(ref GameData data) { + int idx = 0; foreach (Quest quest in questMap.Values) { - data.questState.Append((int) quest.state); + data.questState[idx] = (int) quest.state; + Debug.Log("stettt " + (int) quest.state); + + idx++; } } }