diff --git a/Assets/Level01Controller.cs b/Assets/Level01Controller.cs index 67da054660e876107d14172251966697cc1d2bd2..aafc86acdf6c8c3e6f96c2512d44afd39d23037a 100644 --- a/Assets/Level01Controller.cs +++ b/Assets/Level01Controller.cs @@ -11,6 +11,8 @@ public class Level01Controller : MonoBehaviour, IDataPersistence public GameObject finalBox; public TMP_Text missionText; + private bool finished = false; + public int EnemyDeathCount { get; private set; } // Start is called before the first frame update @@ -22,7 +24,7 @@ public class Level01Controller : MonoBehaviour, IDataPersistence private string SetTextMission() { - return $"Your Mission\nKill Keroco {EnemyDeathCount}/{maxKerocoDeath}"; + return $"Your Mission\nKill Keroco {EnemyDeathCount}/{maxKerocoDeath}"; } private void OnDestroy() @@ -38,10 +40,18 @@ public class Level01Controller : MonoBehaviour, IDataPersistence void Update() { - if (EnemyDeathCount>=10) + if (!finished && EnemyDeathCount>=10) { finalGate.SetActive(false); finalBox.SetActive(true); + + GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy"); + foreach (var enemy in enemies) + { + Destroy(enemy); + } + + finished = true; } } @@ -53,7 +63,7 @@ public class Level01Controller : MonoBehaviour, IDataPersistence } Debug.Log("Loading Level 1"); - EnemyDeathCount = data.currentKillCount; + EnemyDeathCount = data.Level1.currentKillCount; } public void SaveData(GameData data) @@ -64,6 +74,6 @@ public class Level01Controller : MonoBehaviour, IDataPersistence } data.currentLevel = 1; - data.currentKillCount = EnemyDeathCount; + data.Level1.currentKillCount = EnemyDeathCount; } } diff --git a/Assets/Level02Controller.cs b/Assets/Level02Controller.cs index f0dd4f8eb164d969b409a2261ba16af5de1d9c5b..3f7b541c50ccfa64b98b449dfdf7ea86e9e1122a 100644 --- a/Assets/Level02Controller.cs +++ b/Assets/Level02Controller.cs @@ -12,6 +12,8 @@ public class Level02Controller : MonoBehaviour, IDataPersistence public GameObject finalBox; public GameObject finalGate; public TMP_Text missionText; + + private bool finished = false; // Start is called before the first frame update void Start() @@ -47,10 +49,18 @@ public class Level02Controller : MonoBehaviour, IDataPersistence // Update is called once per frame void Update() { - if (EnemyLeaderDeathCount >= 4 && EnemyDeathCount>=5) + if (!finished && EnemyLeaderDeathCount >= 4 && EnemyDeathCount>=5) { finalBox.SetActive(true); finalGate.SetActive(false); + + GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy"); + foreach (var enemy in enemies) + { + Destroy(enemy); + } + + finished = true; } } @@ -60,9 +70,10 @@ public class Level02Controller : MonoBehaviour, IDataPersistence { return; } + Debug.Log("Loading Level 2"); - EnemyDeathCount = data.currentKillCount; - EnemyLeaderDeathCount = data.currentLeaderKillCount; + EnemyDeathCount = data.Level2.currentKillCount; + EnemyLeaderDeathCount = data.Level2.currentLeaderKillCount; } public void SaveData(GameData data) @@ -73,7 +84,7 @@ public class Level02Controller : MonoBehaviour, IDataPersistence } data.currentLevel = 2; - data.currentKillCount = EnemyDeathCount; - data.currentLeaderKillCount = EnemyLeaderDeathCount; + data.Level2.currentKillCount = EnemyDeathCount; + data.Level2.currentLeaderKillCount = EnemyLeaderDeathCount; } } diff --git a/Assets/Level03Controller.cs b/Assets/Level03Controller.cs index 3f0ba1f451ba9674beb3225594154cc9c942ba71..d58883b4b74217efdf96284039e20188cde28ebf 100644 --- a/Assets/Level03Controller.cs +++ b/Assets/Level03Controller.cs @@ -16,6 +16,9 @@ public class Level03Controller : MonoBehaviour, IDataPersistence public GameObject finalBox; public GameObject finalGate; + + private bool finished = false; + // Start is called before the first frame update void Start() { @@ -57,10 +60,17 @@ public class Level03Controller : MonoBehaviour, IDataPersistence // Update is called once per frame void Update() { - if (EnemyLeaderDeathCount >= 4 && EnemyAdmiralDeathCount >= 1) + if (!finished && EnemyLeaderDeathCount >= 4 && EnemyAdmiralDeathCount >= 1) { finalBox.SetActive(true); finalGate.SetActive(false); + + GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy"); + foreach (var enemy in enemies) + { + Destroy(enemy); + } + finished = true; } } @@ -70,10 +80,11 @@ public class Level03Controller : MonoBehaviour, IDataPersistence { return; } + Debug.Log("Loading Level 3"); - EnemyDeathCount = data.currentKillCount; - EnemyLeaderDeathCount = data.currentLeaderKillCount; - EnemyAdmiralDeathCount = data.currentAdmiralKillCount; + EnemyDeathCount = data.Level3.currentKillCount; + EnemyLeaderDeathCount = data.Level3.currentLeaderKillCount; + EnemyAdmiralDeathCount = data.Level3.currentAdmiralKillCount; } public void SaveData(GameData data) @@ -84,8 +95,8 @@ public class Level03Controller : MonoBehaviour, IDataPersistence } data.currentLevel = 3; - data.currentKillCount = EnemyDeathCount; - data.currentLeaderKillCount = EnemyLeaderDeathCount; - data.currentAdmiralKillCount = EnemyAdmiralDeathCount; + data.Level3.currentKillCount = EnemyDeathCount; + data.Level3.currentLeaderKillCount = EnemyLeaderDeathCount; + data.Level3.currentAdmiralKillCount = EnemyAdmiralDeathCount; } } diff --git a/Assets/Level04Controller.cs b/Assets/Level04Controller.cs index 01907a81fb1748ca6d15945363ce2236d64156bf..b44f331c29dbe4121d3ee199b98ad06ced086bef 100644 --- a/Assets/Level04Controller.cs +++ b/Assets/Level04Controller.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; +using UnityEngine.SceneManagement; public class Level04Controller : MonoBehaviour, IDataPersistence { @@ -14,6 +15,8 @@ public class Level04Controller : MonoBehaviour, IDataPersistence public int maxLeaderKerocoDeath = 2; public int maxAdmiralOfKerocoDeath = 2; public int maxKingOfKerocoDeath = 1; + + public bool finished = false; // Start is called before the first frame update void Start() @@ -64,24 +67,32 @@ public class Level04Controller : MonoBehaviour, IDataPersistence // Update is called once per frame void Update() { - if (EnemyKingDeathCount>=maxKingOfKerocoDeath && EnemyAdmiralDeathCount>=maxAdmiralOfKerocoDeath && EnemyLeaderDeathCount >= maxLeaderKerocoDeath) + if (!finished && EnemyKingDeathCount>=maxKingOfKerocoDeath && EnemyAdmiralDeathCount>=maxAdmiralOfKerocoDeath + && EnemyLeaderDeathCount >= maxLeaderKerocoDeath) { - //TODO: Do something if king of enemy die + SceneManager.LoadScene("EndingCutScene"); + + GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy"); + foreach (var enemy in enemies) + { + Destroy(enemy); + } + finished = true; } } public void LoadData(GameData data) { - if (data.currentLevel > 4) + if (data.currentLevel != 4) { return; } Debug.Log("Loading Level 4"); - EnemyDeathCount = data.currentKillCount; - EnemyLeaderDeathCount = data.currentLeaderKillCount; - EnemyAdmiralDeathCount = data.currentAdmiralKillCount; - EnemyKingDeathCount = data.currentKingKillCount; + EnemyDeathCount = data.Level4.currentKillCount; + EnemyLeaderDeathCount = data.Level4.currentLeaderKillCount; + EnemyAdmiralDeathCount = data.Level4.currentAdmiralKillCount; + EnemyKingDeathCount = data.Level4.currentKingKillCount; } public void SaveData(GameData data) @@ -92,9 +103,9 @@ public class Level04Controller : MonoBehaviour, IDataPersistence } data.currentLevel = 4; - data.currentKillCount = EnemyDeathCount; - data.currentLeaderKillCount = EnemyLeaderDeathCount; - data.currentAdmiralKillCount = EnemyAdmiralDeathCount; - data.currentKingKillCount = EnemyKingDeathCount; + data.Level4.currentKillCount = EnemyDeathCount; + data.Level4.currentLeaderKillCount = EnemyLeaderDeathCount; + data.Level4.currentAdmiralKillCount = EnemyAdmiralDeathCount; + data.Level4.currentKingKillCount = EnemyKingDeathCount; } } \ No newline at end of file diff --git a/Assets/Prefabs/Remade/PlayerOnly.prefab b/Assets/Prefabs/Remade/PlayerOnly.prefab index 10be9fb1b4dacec1b4daf35e8b5205e7c0c8b1ed..a6f498f4486e4fa29af2be328bc0467f98f64c07 100644 --- a/Assets/Prefabs/Remade/PlayerOnly.prefab +++ b/Assets/Prefabs/Remade/PlayerOnly.prefab @@ -13379,7 +13379,7 @@ AudioListener: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8562903885280076162} - m_Enabled: 0 + m_Enabled: 1 --- !u!1 &9023578505181160121 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Level01/Level 01.unity b/Assets/Scenes/Level01/Level 01.unity index 05161a7f0644031374b33dec409d99e5d4f1dbdd..bf582973d4442d27a6a0bbbc4790977b8702a9a7 100644 --- a/Assets/Scenes/Level01/Level 01.unity +++ b/Assets/Scenes/Level01/Level 01.unity @@ -1091,7 +1091,7 @@ MonoBehaviour: m_OverrideVoxelSize: 0 m_VoxelSize: 0.16666667 m_MinRegionArea: 2 - m_NavMeshData: {fileID: 23800000, guid: 02cc88715f23ac84cbc8bc9e6a25e05d, type: 2} + m_NavMeshData: {fileID: 23800000, guid: b9e1dabdae2ca8a4a9e11ce082183460, type: 2} m_BuildHeightMesh: 0 --- !u!4 &482693132 stripped Transform: diff --git a/Assets/Scenes/Level01/newscene.scenetemplate b/Assets/Scenes/Level01/newscene.scenetemplate index 01f697a19b775ee170080899f7f6f9c9b45ec803..d790e67e3fe2976e26b52631a2e6da8d52991de8 100644 --- a/Assets/Scenes/Level01/newscene.scenetemplate +++ b/Assets/Scenes/Level01/newscene.scenetemplate @@ -37,10 +37,10 @@ MonoBehaviour: instantiationMode: 0 - dependency: {fileID: 2800000, guid: cc17514454cb24e4ebf8b0902704fc58, type: 3} instantiationMode: 0 - - dependency: {fileID: 2800000, guid: 66cc5581f2192a549b9b9270381c9be7, type: 3} - instantiationMode: 0 - dependency: {fileID: 2800000, guid: 2fd6421f253b4ef1a19526541f9ffc0c, type: 3} instantiationMode: 1 + - dependency: {fileID: 2800000, guid: 66cc5581f2192a549b9b9270381c9be7, type: 3} + instantiationMode: 0 - dependency: {fileID: 2100000, guid: b75a561f374f89247a62336b50288d40, type: 2} instantiationMode: 0 - dependency: {fileID: 2100000, guid: 18a35e570e04b5e4bbbe952c545bf56d, type: 2} @@ -99,8 +99,6 @@ MonoBehaviour: instantiationMode: 0 - dependency: {fileID: 2100000, guid: 5afa4a01a731c834d9a62da55c7cfa7c, type: 2} instantiationMode: 0 - - dependency: {fileID: 23800000, guid: 02cc88715f23ac84cbc8bc9e6a25e05d, type: 2} - instantiationMode: 0 - dependency: {fileID: 5236359416903694273, guid: ac857bfe6ecfc7b4cb2754bb4718800b, type: 3} instantiationMode: 0 - dependency: {fileID: 2800000, guid: acdb41fd591a7434a9f285ba714869c9, type: 3} @@ -167,10 +165,10 @@ MonoBehaviour: instantiationMode: 0 - dependency: {fileID: 2100000, guid: 90be2217180127845be6624b229a9d23, type: 2} instantiationMode: 0 - - dependency: {fileID: 2100000, guid: 3ed00db9454ddc04c97299085e721501, type: 2} - instantiationMode: 0 - dependency: {fileID: 100002, guid: d2a726cb03d910545b2e5c9705ce8ab0, type: 3} instantiationMode: 0 + - dependency: {fileID: 2100000, guid: 3ed00db9454ddc04c97299085e721501, type: 2} + instantiationMode: 0 - dependency: {fileID: 100002, guid: e5948365778fafb40a1465acdd6674f6, type: 3} instantiationMode: 0 - dependency: {fileID: 2800000, guid: 3a51fde69768ffe45b9d0fe68218682d, type: 3} @@ -269,6 +267,8 @@ MonoBehaviour: instantiationMode: 0 - dependency: {fileID: 2100000, guid: 01ffe1f3679a0894087ea5e74106fb93, type: 2} instantiationMode: 0 + - dependency: {fileID: 23800000, guid: b9e1dabdae2ca8a4a9e11ce082183460, type: 2} + instantiationMode: 0 - dependency: {fileID: 2800000, guid: 1ee650de4ad9cbc44a795a4f1c614a46, type: 3} instantiationMode: 0 - dependency: {fileID: 9100000, guid: 6adb231f04c98154f82492b34d281e72, type: 2} diff --git a/Assets/Scenes/Level02/Level 02.unity b/Assets/Scenes/Level02/Level 02.unity index 0dcff2240afd66ef8a5d40e33cba47328073c099..e52dfcb9af0b2d305b46b9db95e85607805c894f 100644 --- a/Assets/Scenes/Level02/Level 02.unity +++ b/Assets/Scenes/Level02/Level 02.unity @@ -9362,8 +9362,8 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: maxKerocoDeath: 5 - maxLeaderOfKerocoDeath: 3 - finalBox: {fileID: 1331716288690049236} + maxLeaderOfKerocoDeath: 4 + finalBox: {fileID: 1198434733} finalGate: {fileID: 1847105508} missionText: {fileID: 1227979353} --- !u!4 &1755696529 @@ -11021,11 +11021,6 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: ac857bfe6ecfc7b4cb2754bb4718800b, type: 3} ---- !u!1 &1331716288690049236 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 5236359416903694273, guid: ac857bfe6ecfc7b4cb2754bb4718800b, type: 3} - m_PrefabInstance: {fileID: 1331716288690049235} - m_PrefabAsset: {fileID: 0} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Level03/Level 03.unity b/Assets/Scenes/Level03/Level 03.unity index 31fcedbad289db27a9b54aad175acb63c0c41e1f..2aacc5c51c9e8d2aa168910a7ccba218bb1562ea 100644 --- a/Assets/Scenes/Level03/Level 03.unity +++ b/Assets/Scenes/Level03/Level 03.unity @@ -155,7 +155,7 @@ MonoBehaviour: missionText: {fileID: 192957479} maxLeaderOfKerocoDeath: 4 maxAdmiralOfKerocoDeath: 1 - finalBox: {fileID: 574536093} + finalBox: {fileID: 733509819} finalGate: {fileID: 1930109031} --- !u!4 &8781039 Transform: @@ -3164,11 +3164,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 4271472138400522420, guid: ac857bfe6ecfc7b4cb2754bb4718800b, type: 3} m_PrefabInstance: {fileID: 574536091} m_PrefabAsset: {fileID: 0} ---- !u!1 &574536093 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 5236359416903694273, guid: ac857bfe6ecfc7b4cb2754bb4718800b, type: 3} - m_PrefabInstance: {fileID: 574536091} - m_PrefabAsset: {fileID: 0} --- !u!1 &585986195 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/DataPersistence/Data/GameData.cs b/Assets/Scripts/DataPersistence/Data/GameData.cs index 54a02fbdee730b3a884805429ceed694ed6fc22e..c11d169571c0236ad5e8fd44aead79cfc2133016 100644 --- a/Assets/Scripts/DataPersistence/Data/GameData.cs +++ b/Assets/Scripts/DataPersistence/Data/GameData.cs @@ -14,12 +14,13 @@ public class GameData public int playerMoney = 300; public float playerHealth = 100; public string playerPet = "NO_PET"; - public int currentLevel; - public int currentKillCount; - public int currentLeaderKillCount; - public int currentAdmiralKillCount; - public int currentKingKillCount; + public int currentLevel = 1; + public Level1 Level1 = new Level1(); + public Level2 Level2 = new Level2(); + public Level3 Level3 = new Level3(); + public Level4 Level4 = new Level4(); + public GameData() { this.deathCount = 0; diff --git a/Assets/Scripts/DataPersistence/Data/Level.cs b/Assets/Scripts/DataPersistence/Data/Level.cs new file mode 100644 index 0000000000000000000000000000000000000000..d09f509188626c48f4101f3b96f6776125f2bd46 --- /dev/null +++ b/Assets/Scripts/DataPersistence/Data/Level.cs @@ -0,0 +1,56 @@ +[System.Serializable] +public class Level1 +{ + public int currentKillCount; + + public Level1() + { + currentKillCount = 0; + } + +} + +[System.Serializable] +public class Level2 +{ + public int currentKillCount; + public int currentLeaderKillCount; + + public Level2() + { + currentKillCount = 0; + currentLeaderKillCount = 0; + } +} + +[System.Serializable] +public class Level3 +{ + public int currentKillCount; + public int currentLeaderKillCount; + public int currentAdmiralKillCount; + + public Level3() + { + currentKillCount = 0; + currentLeaderKillCount = 0; + currentAdmiralKillCount = 0; + } +} + +[System.Serializable] +public class Level4 +{ + public int currentKillCount; + public int currentLeaderKillCount; + public int currentAdmiralKillCount; + public int currentKingKillCount; + + public Level4() + { + currentKillCount = 0; + currentLeaderKillCount = 0; + currentAdmiralKillCount = 0; + currentKingKillCount = 0; + } +} \ No newline at end of file diff --git a/Assets/Scripts/DataPersistence/Data/Level.cs.meta b/Assets/Scripts/DataPersistence/Data/Level.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..bef57776f892d20e1a7c2e81df3edcb81268b3cf --- /dev/null +++ b/Assets/Scripts/DataPersistence/Data/Level.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9c5effeb57fc430cae989bc775b0afb6 +timeCreated: 1715404889 \ No newline at end of file diff --git a/Assets/Scripts/DataPersistence/DataPersistenceManager.cs b/Assets/Scripts/DataPersistence/DataPersistenceManager.cs index 57b5d3fefc1a5b0265de0e9186586425fb1010f9..82d7def7ee2f7f0766f09cd0d2730d54be3162cc 100644 --- a/Assets/Scripts/DataPersistence/DataPersistenceManager.cs +++ b/Assets/Scripts/DataPersistence/DataPersistenceManager.cs @@ -113,6 +113,7 @@ public class DataPersistenceManager : MonoBehaviour { // this.dataPersistenceObjects = FindAllDataPersistenceObjects(); LoadGame(); + SaveGame(); } public void SaveGame() diff --git a/Assets/Scripts/PlayerR/PlayerManager.cs b/Assets/Scripts/PlayerR/PlayerManager.cs index 956b7b13deef2f57cff0cb24c7e72309be232db6..bb7fb98e649dc75930c4c80ba28456dc65ef482f 100644 --- a/Assets/Scripts/PlayerR/PlayerManager.cs +++ b/Assets/Scripts/PlayerR/PlayerManager.cs @@ -20,7 +20,7 @@ public class PlayerManager : MonoBehaviour, CheatListener, IDataPersistence private GameObject scenePet; private const float MaxHp = 100f; private float playerHp = 100f; - private static int playerMoney = 100; + private static int playerMoney = 500; public static int PlayerMoney { @@ -55,6 +55,15 @@ public class PlayerManager : MonoBehaviour, CheatListener, IDataPersistence EventManager.StartListening("MotherlodeCheat", UpdateMoneyText); } + void Update() + { + if (PlayerHp <= 0) + { + SceneManager.LoadScene("Scenes/Cutscene/DeathCutScene"); + DataPersistenceManager.instance.SaveGame(); + } + } + void OnDestroy() { EventManager.StopListening("MotherlodeCheat", UpdateMoneyText); @@ -133,6 +142,7 @@ public class PlayerManager : MonoBehaviour, CheatListener, IDataPersistence // game over //TODO: add animation SceneManager.LoadScene("Scenes/Cutscene/DeathCutScene"); + DataPersistenceManager.instance.SaveGame(); } } );