From a5be93bf390968c3de074fef22350b6c6077ab5b Mon Sep 17 00:00:00 2001 From: MarcelRyan <marcel.ryan2004@gmail.com> Date: Tue, 7 May 2024 18:18:40 +0700 Subject: [PATCH] [FEAT] Pushing save for debugging --- Assets/Scripts/DataUtils/FileDataHandler.cs | 16 ++++++ Assets/Scripts/DataUtils/GameData.cs | 21 ++++++- Assets/Scripts/Helpers/SaveRadius.cs | 1 + Assets/Scripts/MainMenu/MainMenu.cs | 4 +- .../Managers/DataPersistenceManager.cs | 56 ++++++++++++++++--- Assets/Scripts/Managers/GameOverManager.cs | 2 + Assets/Scripts/Managers/LevelManager.cs | 2 + Assets/Scripts/Managers/PetManager.cs | 12 ++-- 8 files changed, 95 insertions(+), 19 deletions(-) diff --git a/Assets/Scripts/DataUtils/FileDataHandler.cs b/Assets/Scripts/DataUtils/FileDataHandler.cs index e4f3239..278d875 100644 --- a/Assets/Scripts/DataUtils/FileDataHandler.cs +++ b/Assets/Scripts/DataUtils/FileDataHandler.cs @@ -49,6 +49,22 @@ public class FileDataHandler return loadedData; } + public void Delete() + { + string fullPath = Path.Combine(dataDirPath, dataFileName); + + if (File.Exists(fullPath)) + { + File.Delete(fullPath); + Debug.Log("File deleted successfully."); + } + else + { + Debug.LogWarning("File not found."); + } + + } + public void Save(GameData data) { string fullPath = Path.Combine(dataDirPath, dataFileName); diff --git a/Assets/Scripts/DataUtils/GameData.cs b/Assets/Scripts/DataUtils/GameData.cs index 791d648..3a59d57 100644 --- a/Assets/Scripts/DataUtils/GameData.cs +++ b/Assets/Scripts/DataUtils/GameData.cs @@ -33,8 +33,25 @@ public class GameData this.baseDamage = 40; this.currentPosition = new Vector3(0f, 0f, 0f); this.currentWeapon = 0; - this.currentScene = 4; - this.currentQuest = 1; + this.currentScene = 0; + this.currentQuest = 0; + this.shopKeeperTime = 120f; + } + + public GameData(int currentScene) + { + this.score = 0; + this.coin = 0; + this.pets = new List<string>(); + this.petsHealth = new List<double>(); + this.playerName = string.Empty; + this.playerSpeed = 6; + this.playerHealth = 100; + this.baseDamage = 40; + this.currentPosition = new Vector3(0f, 0f, 0f); + this.currentWeapon = 0; + this.currentScene = currentScene; + this.currentQuest = 0; this.shopKeeperTime = 120f; } diff --git a/Assets/Scripts/Helpers/SaveRadius.cs b/Assets/Scripts/Helpers/SaveRadius.cs index 85078bf..cc80640 100644 --- a/Assets/Scripts/Helpers/SaveRadius.cs +++ b/Assets/Scripts/Helpers/SaveRadius.cs @@ -22,6 +22,7 @@ public class SaveRadius : MonoBehaviour { timer = 0; DataPersistenceManager.instance.SaveGame(); + DataPersistenceManager.instance.SafeFromSafehouse(); } } diff --git a/Assets/Scripts/MainMenu/MainMenu.cs b/Assets/Scripts/MainMenu/MainMenu.cs index 5e7f085..74757df 100644 --- a/Assets/Scripts/MainMenu/MainMenu.cs +++ b/Assets/Scripts/MainMenu/MainMenu.cs @@ -44,12 +44,14 @@ public class MainMenu : MonoBehaviour public void PlayGame() { Debug.Log("On New Game Clicked"); - LevelManager.Instance.Next(); DataPersistenceManager.instance.NewGame(); + DataPersistenceManager.instance.LoadGame(); + LevelManager.Instance.Next(); } public void QuitGame() { + DataPersistenceManager.instance.DeleteFile(); Application.Quit(); } diff --git a/Assets/Scripts/Managers/DataPersistenceManager.cs b/Assets/Scripts/Managers/DataPersistenceManager.cs index 0aca1a4..8f2e197 100644 --- a/Assets/Scripts/Managers/DataPersistenceManager.cs +++ b/Assets/Scripts/Managers/DataPersistenceManager.cs @@ -8,9 +8,11 @@ public class DataPersistenceManager : MonoBehaviour [Header("File Storage Config")] [SerializeField] private string fileName; private FileDataHandler dataHandler; - public static DataPersistenceManager instance { get; private set; } + public static DataPersistenceManager instance { get; private set; } private GameData gameData; private List<IDataPersistence> dataPersistenceList; + private bool newGame = false; + private bool saveSafeHouse = false; private void Awake() { @@ -36,10 +38,15 @@ public class DataPersistenceManager : MonoBehaviour private void OnApplicationQuit() { - if (gameData.playerHealth > 0) + this.dataHandler.Delete(); + } + + public void DeleteFile() + { + if (!saveSafeHouse) { - SaveGame(); - return; + this.dataHandler.Delete(); + this.gameData = null; } } @@ -57,24 +64,41 @@ public class DataPersistenceManager : MonoBehaviour public void OnSceneLoaded(Scene scene, LoadSceneMode mode) { - this.dataPersistenceList = FindAllDataPersistence(); - LoadGame(); + if (scene.name.Contains("MainMenu") || scene.name.Contains("Level")) + { + this.dataPersistenceList = FindAllDataPersistence(); + LoadGame(); + } } public void OnSceneUnloaded(Scene scene) { - SaveGame(); + Debug.Log("OnSceneUnloaded called"); + if (scene.name.Contains("03") || scene.name.Contains("04") || scene.name.Contains("05") || scene.name.Contains("06")) + { + SaveGame(); + } } public void NewGame() { this.gameData = new GameData(); + this.newGame = true; + } + + public void RetryGame(int scene) + { + this.gameData = new GameData(scene); } public void LoadGame() { // TODO - load saved data - this.gameData = dataHandler.Load(); + if (!newGame) + { + Debug.Log("Masuk ga"); + this.gameData = dataHandler.Load(); + } // if no data can be loaded, dont continue if (this.gameData == null || this.gameData.playerHealth <= 0) @@ -106,8 +130,24 @@ public class DataPersistenceManager : MonoBehaviour Debug.Log("Save Game called"); } + public void SaveSceneGame() + { + // TODO - pass the data to other scripts + foreach (IDataPersistence dataPersistence in dataPersistenceList) + { + dataPersistence.SaveData(ref gameData); + } + + Debug.Log("Save Scene Game called"); + } + public bool HasGameData() { return gameData != null; } + + public void SafeFromSafehouse() + { + this.saveSafeHouse = true; + } } diff --git a/Assets/Scripts/Managers/GameOverManager.cs b/Assets/Scripts/Managers/GameOverManager.cs index 8c7247f..c5f2ff0 100644 --- a/Assets/Scripts/Managers/GameOverManager.cs +++ b/Assets/Scripts/Managers/GameOverManager.cs @@ -38,11 +38,13 @@ namespace Nightmare public void ResetLevel() { + DataPersistenceManager.instance.RetryGame(1); LevelManager.Instance.ResetLevel(); } public void ExitGame() { + DataPersistenceManager.instance.DeleteFile(); LevelManager.Instance.Exit(); } diff --git a/Assets/Scripts/Managers/LevelManager.cs b/Assets/Scripts/Managers/LevelManager.cs index 3c61c8e..eba7614 100644 --- a/Assets/Scripts/Managers/LevelManager.cs +++ b/Assets/Scripts/Managers/LevelManager.cs @@ -73,12 +73,14 @@ namespace Nightmare { this.currentIndex = data.currentScene; this.currentQuest = data.currentQuest; + Debug.Log("Load data scene and quest " + this.currentIndex + " " + this.currentQuest); } public void SaveData(ref GameData data) { data.currentScene = this.currentIndex; data.currentQuest = this.currentQuest; + Debug.Log("Save data scene and quest " + this.currentIndex + " " + this.currentQuest); } private void Update() diff --git a/Assets/Scripts/Managers/PetManager.cs b/Assets/Scripts/Managers/PetManager.cs index a016313..3ec028d 100644 --- a/Assets/Scripts/Managers/PetManager.cs +++ b/Assets/Scripts/Managers/PetManager.cs @@ -13,19 +13,19 @@ public class PetManager : MonoBehaviour, IDataPersistence player = GameObject.FindGameObjectWithTag("Player"); } - public void SpawnPet(string petTag, double petHealth) + public void SpawnPet(string petTag, double petHealth, Vector3 playerPosition) { GameObject pet = null; if (petTag == "PetHealer") { - pet = Instantiate(PetHealer, player.transform.position, player.transform.rotation); + pet = Instantiate(PetHealer, playerPosition, Quaternion.identity); PetHealth healthofPet = pet.GetComponent<PetHealth>(); healthofPet.currentHealth = petHealth; } else if (petTag == "PetFighter") { - pet = Instantiate(PetFighter, player.transform.position, player.transform.rotation); + pet = Instantiate(PetFighter, playerPosition, Quaternion.identity); PetHealth healthofPet = pet.GetComponent<PetHealth>(); healthofPet.currentHealth = petHealth; @@ -34,14 +34,10 @@ public class PetManager : MonoBehaviour, IDataPersistence public void LoadData(GameData data) { - if (player == null) - { - player = GameObject.FindGameObjectWithTag("Player"); - } for (int i = 0; i < data.pets.Count; i++) { - SpawnPet(data.pets[i], data.petsHealth[i]); + SpawnPet(data.pets[i], data.petsHealth[i], data.currentPosition); } } -- GitLab