diff --git a/Assets/Scenes/Level01.unity b/Assets/Scenes/Level01.unity index 15701439ee99817607fd26dd638bd02b36b81b8d..9bb594bf43c09ad266301e6be1933e58b97c12bb 100644 --- a/Assets/Scenes/Level01.unity +++ b/Assets/Scenes/Level01.unity @@ -11829,7 +11829,6 @@ Transform: m_Children: - {fileID: 14871712} - {fileID: 636207316} - - {fileID: 1656483646} - {fileID: 756133771} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -13646,73 +13645,6 @@ Transform: - {fileID: 384557718} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1656483645 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1656483646} - - component: {fileID: 1656483647} - m_Layer: 0 - m_Name: LevelManager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1656483646 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1656483645} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1165414997} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1656483647 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1656483645} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4c72301907703bc499d2ca179570c95c, type: 3} - m_Name: - m_EditorClassIdentifier: - levels: - - MainMenu - - Cutscene01 - - Cutscene02 - - Cutscene03 - - Level01 - - Cutscene04 - - Level01 - - Cutscene05 - - Level01 - - Cutscene06 - - Level02 - - Cutscene07 - - Cutscene08 - announcementText: {fileID: 0} - enemyManager: [] - questText: {fileID: 0} - kerocoKilled: 0 - kepalaKerocoKilled: 0 - jendralKilled: 0 - rajaKilled: 0 - winQuest: 0 - fail: 0 --- !u!1 &1695883712 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/DataUtils/GameData.cs b/Assets/Scripts/DataUtils/GameData.cs index 3a59d57a0246937d98ab8745d4b5f7c826a23767..77c02a723f0348e4000ce6959148efcf81ff30b6 100644 --- a/Assets/Scripts/DataUtils/GameData.cs +++ b/Assets/Scripts/DataUtils/GameData.cs @@ -33,7 +33,7 @@ public class GameData this.baseDamage = 40; this.currentPosition = new Vector3(0f, 0f, 0f); this.currentWeapon = 0; - this.currentScene = 0; + this.currentScene = 1; this.currentQuest = 0; this.shopKeeperTime = 120f; } diff --git a/Assets/Scripts/Helpers/SaveRadius.cs b/Assets/Scripts/Helpers/SaveRadius.cs index cc806402ef86de53e54b8829d232e38729c890db..f07a2f860268ec4e433404823f4a742896dafa75 100644 --- a/Assets/Scripts/Helpers/SaveRadius.cs +++ b/Assets/Scripts/Helpers/SaveRadius.cs @@ -21,8 +21,8 @@ public class SaveRadius : MonoBehaviour if (timer >= 1 && playerInRange && Input.GetKeyDown(KeyCode.Z)) { timer = 0; - DataPersistenceManager.instance.SaveGame(); DataPersistenceManager.instance.SafeFromSafehouse(); + DataPersistenceManager.instance.SaveGame(); } } diff --git a/Assets/Scripts/MainMenu/MainMenu.cs b/Assets/Scripts/MainMenu/MainMenu.cs index 867bbd00dc3bc8fd1157960f9027d441df3e68d4..4001072ac73fd2b12864ab056b63408efe2b9fc4 100644 --- a/Assets/Scripts/MainMenu/MainMenu.cs +++ b/Assets/Scripts/MainMenu/MainMenu.cs @@ -45,8 +45,7 @@ public class MainMenu : MonoBehaviour { Debug.Log("On New Game Clicked"); DataPersistenceManager.instance.NewGame(); - DataPersistenceManager.instance.LoadGame(); - LevelManager.Instance.Next(); + LevelManager.Instance.LoadScene(); } public void QuitGame() diff --git a/Assets/Scripts/Managers/DataPersistenceManager.cs b/Assets/Scripts/Managers/DataPersistenceManager.cs index 4dd381323091b837722deb114f62e4949a910b33..46bf0d2337bda4abd0e034d5714595a17727282d 100644 --- a/Assets/Scripts/Managers/DataPersistenceManager.cs +++ b/Assets/Scripts/Managers/DataPersistenceManager.cs @@ -15,6 +15,7 @@ public class DataPersistenceManager : MonoBehaviour private bool newGame = false; private bool loadGame = false; private bool saveSafeHouse = false; + private bool hasSaved = false; private void Awake() { @@ -40,23 +41,44 @@ public class DataPersistenceManager : MonoBehaviour private void OnApplicationQuit() { - this.dataHandler.Delete(); + if (!hasSaved && !loadGame) + { + this.dataHandler.Delete(); + } + else if (loadGame) + { + if (!hasSaved) + { + this.dataHandler.Save(this.loadedGameData); + } + } } public void FileMechanism() { - if (!saveSafeHouse && !loadGame) + Debug.Log("File Mechanism Called"); + if (!hasSaved && !loadGame) { this.dataHandler.Delete(); this.gameData = null; } else if (loadGame) { - if (!saveSafeHouse) + Debug.Log(hasSaved); + if (!hasSaved) { this.dataHandler.Save(this.loadedGameData); + this.gameData = this.loadedGameData; + } + else + { + this.gameData = this.dataHandler.Load(); } } + else if (hasSaved) + { + this.gameData = this.dataHandler.Load(); + } } private void OnEnable() @@ -93,6 +115,12 @@ public class DataPersistenceManager : MonoBehaviour { this.gameData = new GameData(); this.newGame = true; + this.loadGame = false; + + foreach (IDataPersistence dataPersistence in dataPersistenceList) + { + dataPersistence.LoadData(gameData); + } } public void RetryGame(int scene) @@ -117,9 +145,9 @@ public class DataPersistenceManager : MonoBehaviour } // TODO - push loaded data to all other scripts that need it - foreach (IDataPersistence dataPersistence in dataPersistenceList) + for (int i = dataPersistenceList.Count-1; i >= 0; i--) { - dataPersistence.LoadData(gameData); + dataPersistenceList[i].LoadData(gameData); } Debug.Log("Load Game called"); @@ -128,13 +156,20 @@ public class DataPersistenceManager : MonoBehaviour public void SaveGame() { // TODO - pass the data to other scripts - foreach (IDataPersistence dataPersistence in dataPersistenceList) + for (int i = dataPersistenceList.Count - 1; i >= 0; i--) { - dataPersistence.SaveData(ref gameData); + dataPersistenceList[i].SaveData(ref gameData); } + Debug.Log("SaveHouse bool: " + this.saveSafeHouse); + // TODO - save data to a file - dataHandler.Save(gameData); + if (saveSafeHouse) + { + dataHandler.Save(gameData); + saveSafeHouse = false; + hasSaved = true; + } Debug.Log("Save Game called"); } @@ -160,9 +195,15 @@ public class DataPersistenceManager : MonoBehaviour this.saveSafeHouse = true; } + public void ResetSave() + { + this.saveSafeHouse = false; + } + public void LoadGameClicked() { this.loadGame = true; + this.newGame = false; this.loadedGameData = gameData; } } diff --git a/Assets/Scripts/Managers/GameOverManager.cs b/Assets/Scripts/Managers/GameOverManager.cs index 9a1ab4bdf4ee2dd1025753db2de809765ee2962c..1e75ecb69e213993b3bc9e466f62bc18222c50f1 100644 --- a/Assets/Scripts/Managers/GameOverManager.cs +++ b/Assets/Scripts/Managers/GameOverManager.cs @@ -39,12 +39,14 @@ namespace Nightmare public void ResetLevel() { DataPersistenceManager.instance.RetryGame(1); + DataPersistenceManager.instance.ResetSave(); LevelManager.Instance.ResetLevel(); } public void ExitGame() { DataPersistenceManager.instance.FileMechanism(); + DataPersistenceManager.instance.ResetSave(); LevelManager.Instance.Exit(); } diff --git a/Assets/Scripts/Managers/LevelManager.cs b/Assets/Scripts/Managers/LevelManager.cs index 3613cdba3c21ab2bea754b44e21c61afea75ceac..8f2eeb55f5e8aeb51cdb566c4f3f82d17e4a1f36 100644 --- a/Assets/Scripts/Managers/LevelManager.cs +++ b/Assets/Scripts/Managers/LevelManager.cs @@ -79,7 +79,10 @@ namespace Nightmare public void SaveData(ref GameData data) { data.currentScene = this.currentIndex; - data.currentQuest = this.currentQuest; + if (this.currentQuest >= 1) + { + data.currentQuest = this.currentQuest-1; + } Debug.Log("Save data scene and quest " + this.currentIndex + " " + this.currentQuest); }