From e9e1af47b812b4a8d007c75a41fbb5e73c249252 Mon Sep 17 00:00:00 2001 From: RMA1403 <ravamaulana14@gmail.com> Date: Sat, 11 May 2024 15:51:29 +0700 Subject: [PATCH] feat: questestjetjeisjtisejt --- .../DataPersistance/DataPersistenceManager.cs | 32 +++++++++++++------ .../Assets/Code/Scripts/FPSController.cs | 7 +++- .../Assets/Code/Scripts/Quest/QuestManager.cs | 8 +++-- 3 files changed, 35 insertions(+), 12 deletions(-) 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 b639881a..1aa5df39 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 9a78b763..8c340463 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 1cd827e6..8ae24a01 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++; } } } -- GitLab