diff --git a/Assets/Scenes/Level01.unity b/Assets/Scenes/Level01.unity index 82e4ad564157b693eb366217c222bc347e49169c..f9013f32dcad197e5d1bcfbaf89027a1059bbd1e 100644 --- a/Assets/Scenes/Level01.unity +++ b/Assets/Scenes/Level01.unity @@ -11841,9 +11841,7 @@ Transform: m_Children: - {fileID: 14871712} - {fileID: 636207316} - - {fileID: 1656483646} - {fileID: 756133771} - - {fileID: 1994384353} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1212966710 @@ -13660,6 +13658,8 @@ Transform: - {fileID: 384557718} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +<<<<<<< HEAD +======= --- !u!1 &1656483645 GameObject: m_ObjectHideFlags: 0 @@ -13733,6 +13733,7 @@ MonoBehaviour: shopTimeRemaining: 0 shopKeeper: {fileID: 0} timerCanvas: {fileID: 0} +>>>>>>> 0d10b3347e008e73681d3671cd0f76ddacfec3bb --- !u!1 &1695883712 GameObject: m_ObjectHideFlags: 0 @@ -16212,11 +16213,6 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1978917666} m_Mesh: {fileID: 4300002, guid: 9f185e9167e4f99489912e1b6d9899bf, type: 3} ---- !u!4 &1994384353 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - m_PrefabInstance: {fileID: 8089176424800807016} - m_PrefabAsset: {fileID: 0} --- !u!1 &2025801928 stripped GameObject: m_CorrespondingSourceObject: {fileID: 2179698135647974157, guid: a6cf23af3ca4087408302fb3311a1fd3, type: 3} @@ -16602,63 +16598,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2138422230} m_CullTransparentMesh: 1 ---- !u!1001 &8089176424800807016 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 1165414997} - m_Modifications: - - target: {fileID: 2379307448264636869, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - propertyPath: m_Name - value: DataPersistenceManager - objectReference: {fileID: 0} - - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - propertyPath: m_LocalPosition.x - value: -1.5124696 - objectReference: {fileID: 0} - - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - propertyPath: m_LocalPosition.y - value: 1.9276284 - objectReference: {fileID: 0} - - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - propertyPath: m_LocalPosition.z - value: 0.27401495 - objectReference: {fileID: 0} - - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5034770101523303488, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/MainMenu.unity b/Assets/Scenes/MainMenu.unity index 09a7bb0cb2672ad5efd4df3ae877522a282946b0..69e0e245f3bf4b6485cbe8d143ae39805986481e 100644 --- a/Assets/Scenes/MainMenu.unity +++ b/Assets/Scenes/MainMenu.unity @@ -339,7 +339,7 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 2052799349} + - m_Target: {fileID: 0} m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp m_MethodName: OpenSettings m_Mode: 6 @@ -1160,6 +1160,9 @@ MonoBehaviour: rajaKilled: 0 winQuest: 0 fail: 0 + isShopKeeper: 0 + shopTimeRemaining: 0 + shopKeeper: {fileID: 0} --- !u!4 &309830954 Transform: m_ObjectHideFlags: 0 @@ -1333,7 +1336,7 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 2052799349} + - m_Target: {fileID: 0} m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp m_MethodName: QuitGame m_Mode: 1 @@ -1478,7 +1481,7 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 2052799349} + - m_Target: {fileID: 0} m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp m_MethodName: OpenSettings m_Mode: 6 @@ -1744,7 +1747,7 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 2052799349} + - m_Target: {fileID: 0} m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp m_MethodName: OpenStats m_Mode: 6 @@ -4876,7 +4879,7 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 2052799349} + - m_Target: {fileID: 2052799352} m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp m_MethodName: PlayGame m_Mode: 1 @@ -5287,7 +5290,7 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 2052799349} + - m_Target: {fileID: 0} m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp m_MethodName: OpenSettings m_Mode: 6 @@ -5420,9 +5423,9 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 2052799349} - m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp - m_MethodName: OnLoadGameClicked + - m_Target: {fileID: 2069597732} + m_TargetAssemblyTypeName: DataPersistenceManager, Assembly-CSharp + m_MethodName: LoadGame m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} @@ -7251,9 +7254,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 2052799348} - - component: {fileID: 2052799349} - component: {fileID: 2052799350} - component: {fileID: 2052799351} + - component: {fileID: 2052799352} m_Layer: 5 m_Name: MainMenu m_TagString: Untagged @@ -7289,21 +7292,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: -700, y: -328} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2052799349 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2052799347} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 33462a6e284b4a24aab6430fa47f8b32, type: 3} - m_Name: - m_EditorClassIdentifier: - settings: {fileID: 95415617} - stats: {fileID: 1261534167} - loadButton: {fileID: 1495964238} --- !u!114 &2052799350 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7335,6 +7323,21 @@ MonoBehaviour: shotsText: {fileID: 2122165065} distanceText: {fileID: 994761032} timeText: {fileID: 5435174} +--- !u!114 &2052799352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2052799347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 33462a6e284b4a24aab6430fa47f8b32, type: 3} + m_Name: + m_EditorClassIdentifier: + settings: {fileID: 95415617} + stats: {fileID: 1261534167} + loadButton: {fileID: 1495964238} --- !u!1 &2056420290 GameObject: m_ObjectHideFlags: 0 @@ -7418,7 +7421,7 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 2052799349} + - m_Target: {fileID: 0} m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp m_MethodName: OpenStats m_Mode: 6 @@ -7468,6 +7471,17 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2056420290} m_CullTransparentMesh: 0 +--- !u!114 &2069597732 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7310441132621849856, guid: 607ac10d4a28a814ea8aea94b0d7c524, type: 3} + m_PrefabInstance: {fileID: 573993210} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff080c65d846fce40916179a81d1a151, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &2103227365 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/DataUtils/FileDataHandler.cs b/Assets/Scripts/DataUtils/FileDataHandler.cs index e4f323934edb75983eb43a3122c5e1162b631439..278d875a24ab986c847dc5571a85e2a085a55742 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 791d648a0edb9e286bd6da3543bb1fc4e1857844..77c02a723f0348e4000ce6959148efcf81ff30b6 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 = 1; + 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 85078bf6fbdb0349032628d596a51eef15bb7741..f07a2f860268ec4e433404823f4a742896dafa75 100644 --- a/Assets/Scripts/Helpers/SaveRadius.cs +++ b/Assets/Scripts/Helpers/SaveRadius.cs @@ -21,6 +21,7 @@ public class SaveRadius : MonoBehaviour if (timer >= 1 && playerInRange && Input.GetKeyDown(KeyCode.Z)) { timer = 0; + DataPersistenceManager.instance.SafeFromSafehouse(); DataPersistenceManager.instance.SaveGame(); } diff --git a/Assets/Scripts/MainMenu/MainMenu.cs b/Assets/Scripts/MainMenu/MainMenu.cs index 5e7f08515ffb64d1d46a771d8acb50b27cef3c97..4001072ac73fd2b12864ab056b63408efe2b9fc4 100644 --- a/Assets/Scripts/MainMenu/MainMenu.cs +++ b/Assets/Scripts/MainMenu/MainMenu.cs @@ -44,12 +44,13 @@ public class MainMenu : MonoBehaviour public void PlayGame() { Debug.Log("On New Game Clicked"); - LevelManager.Instance.Next(); DataPersistenceManager.instance.NewGame(); + LevelManager.Instance.LoadScene(); } public void QuitGame() { + DataPersistenceManager.instance.FileMechanism(); Application.Quit(); } @@ -57,6 +58,7 @@ public class MainMenu : MonoBehaviour { Debug.Log("OnLoadGame clicked"); DataPersistenceManager.instance.LoadGame(); + DataPersistenceManager.instance.LoadGameClicked(); LevelManager.Instance.LoadScene(); } } diff --git a/Assets/Scripts/Managers/DataPersistenceManager.cs b/Assets/Scripts/Managers/DataPersistenceManager.cs index 0aca1a40b9d416e303e40158fb052b898868ddfb..46bf0d2337bda4abd0e034d5714595a17727282d 100644 --- a/Assets/Scripts/Managers/DataPersistenceManager.cs +++ b/Assets/Scripts/Managers/DataPersistenceManager.cs @@ -8,9 +8,14 @@ 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 GameData loadedGameData; + private bool newGame = false; + private bool loadGame = false; + private bool saveSafeHouse = false; + private bool hasSaved = false; private void Awake() { @@ -36,10 +41,43 @@ public class DataPersistenceManager : MonoBehaviour private void OnApplicationQuit() { - if (gameData.playerHealth > 0) + if (!hasSaved && !loadGame) { - SaveGame(); - return; + this.dataHandler.Delete(); + } + else if (loadGame) + { + if (!hasSaved) + { + this.dataHandler.Save(this.loadedGameData); + } + } + } + + public void FileMechanism() + { + Debug.Log("File Mechanism Called"); + if (!hasSaved && !loadGame) + { + this.dataHandler.Delete(); + this.gameData = null; + } + else if (loadGame) + { + 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(); } } @@ -57,24 +95,47 @@ 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; + this.loadGame = false; + + foreach (IDataPersistence dataPersistence in dataPersistenceList) + { + dataPersistence.LoadData(gameData); + } + } + + public void RetryGame(int scene) + { + this.gameData = new GameData(scene); } public void LoadGame() { // TODO - load saved data - this.gameData = dataHandler.Load(); + if (!newGame) + { + this.gameData = dataHandler.Load(); + this.loadedGameData = this.gameData; + } // if no data can be loaded, dont continue if (this.gameData == null || this.gameData.playerHealth <= 0) @@ -84,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"); @@ -95,19 +156,54 @@ 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"); } + 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; + } + + 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 8c7247f23bbaf8d9ca4a368450917838e5bf1ef1..1e75ecb69e213993b3bc9e466f62bc18222c50f1 100644 --- a/Assets/Scripts/Managers/GameOverManager.cs +++ b/Assets/Scripts/Managers/GameOverManager.cs @@ -38,11 +38,15 @@ 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 89b2b573186b48dbfb18c370b7e025a3825a86d6..a2652ead0df45a42da6aadad30b9a5f6a94cd8b9 100644 --- a/Assets/Scripts/Managers/LevelManager.cs +++ b/Assets/Scripts/Managers/LevelManager.cs @@ -22,9 +22,8 @@ namespace Nightmare "Cutscene08" }; - private static LevelManager instance; - public int currentIndex = 0; - public int currentQuest = 0; + private int currentIndex = 0; + private int currentQuest = 0; private float announcementDuration = 5f; public TMPro.TextMeshProUGUI announcementText; public EnemyManager[] enemyManager; @@ -43,46 +42,35 @@ namespace Nightmare public GameObject shopKeeper; public GameObject timerCanvas; - public static LevelManager Instance - { - get - { - if (instance == null) - { - instance = FindObjectOfType<LevelManager>(); - if (instance == null) - { - GameObject managerObject = new GameObject("LevelManager"); - instance = managerObject.AddComponent<LevelManager>(); - } - } - return instance; - } - } - + public static LevelManager Instance; private void Awake() { - if (instance == null) - { - instance = this; - DontDestroyOnLoad(gameObject); - } - else + if (Instance != null) { - Destroy(gameObject); + Debug.LogError("Found more than one LevelManager in the scene. Destroying the newest one."); + Destroy(this.gameObject); + return; } + + Instance = this; + DontDestroyOnLoad(this.gameObject); } public void LoadData(GameData data) { 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; + if (this.currentQuest >= 1) + { + data.currentQuest = this.currentQuest-1; + } + Debug.Log("Save data scene and quest " + this.currentIndex + " " + this.currentQuest); } private void Update() @@ -340,7 +328,7 @@ namespace Nightmare } } - timeRemaining = 60f + announcementDuration; + timeRemaining = 5f + announcementDuration; } else if (currentQuest == 2) { diff --git a/Assets/Scripts/Managers/PetManager.cs b/Assets/Scripts/Managers/PetManager.cs index a01631375f57631fb4a809d7ba6233d8fefb4743..ba22f1123b8eb26573a3242f86c01c4e08278c84 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); } } @@ -50,6 +46,9 @@ public class PetManager : MonoBehaviour, IDataPersistence GameObject[] petHealers = GameObject.FindGameObjectsWithTag("PetHealer"); GameObject[] petFighters = GameObject.FindGameObjectsWithTag("PetFighter"); + data.pets = new List<string>(); + data.petsHealth = new List<double>(); + foreach (GameObject petHealer in petHealers) { PetHealth goodPetHealth = petHealer.GetComponent<PetHealth>();