From 093bf4672c20a90acb8112b6d568340a8beabff4 Mon Sep 17 00:00:00 2001 From: Greenfoot5 Date: Fri, 24 May 2024 17:12:42 +0100 Subject: [PATCH] Fixed restarting changing powercell count --- .../Assets/Abstract/Saving/SaveLevel.cs | 20 ++++----- .../Assets/Abstract/Saving/SaveManager.cs | 2 +- Tower Defence/Assets/Gameplay/GameManager.cs | 43 ++++++++++--------- Tower Defence/Assets/Gameplay/GameStats.cs | 7 +-- Tower Defence/Assets/Gameplay/Shop.cs | 16 +++---- 5 files changed, 46 insertions(+), 42 deletions(-) diff --git a/Tower Defence/Assets/Abstract/Saving/SaveLevel.cs b/Tower Defence/Assets/Abstract/Saving/SaveLevel.cs index f6db78f2..f231d906 100644 --- a/Tower Defence/Assets/Abstract/Saving/SaveLevel.cs +++ b/Tower Defence/Assets/Abstract/Saving/SaveLevel.cs @@ -20,19 +20,19 @@ public struct NodeData public List moduleChainHandlers; public Quaternion turretRotation; } - public List nodes; + public List Nodes; - public int energy; - public int cells; - public int lives; - public int waveIndex; - public Random.State random; - public int shopCost; + public int Energy; + public int Powercells; + public int Lives; + public int WaveIndex; + public Random.State RandomState; + public int ShopCost; - public List turretInventory; - public List moduleInventory; + public List TurretInventory; + public List ModuleInventory; - public readonly string version = Application.version; + public readonly string Version = Application.version; /// /// Translates the class into json format diff --git a/Tower Defence/Assets/Abstract/Saving/SaveManager.cs b/Tower Defence/Assets/Abstract/Saving/SaveManager.cs index 37bed37b..cc57173e 100644 --- a/Tower Defence/Assets/Abstract/Saving/SaveManager.cs +++ b/Tower Defence/Assets/Abstract/Saving/SaveManager.cs @@ -126,7 +126,7 @@ public static bool SaveExists(string sceneName) var sd = new SaveLevel(); sd.LoadFromJson(json); - return sd.version == Application.version; + return sd.Version == Application.version; } public static void ClearSave(string sceneName) diff --git a/Tower Defence/Assets/Gameplay/GameManager.cs b/Tower Defence/Assets/Gameplay/GameManager.cs index d84a580a..5036abf6 100644 --- a/Tower Defence/Assets/Gameplay/GameManager.cs +++ b/Tower Defence/Assets/Gameplay/GameManager.cs @@ -101,14 +101,16 @@ private void EndGame() public void PopulateSaveData(SaveLevel saveData) { - saveData.lives = GameStats.Lives; - saveData.energy = GameStats.Energy; - saveData.waveIndex = GameStats.Rounds - 1; - saveData.random = Random.state; - saveData.shopCost = shop.GetComponent().nextCost; - saveData.nodes = new List(); - saveData.turretInventory = new List(); - saveData.moduleInventory = new List(); + saveData.Lives = GameStats.Lives; + saveData.Energy = GameStats.Energy; + saveData.Powercells = GameStats.Powercells; + saveData.WaveIndex = GameStats.Rounds - 1; + saveData.RandomState = Random.state; + Debug.Log("Getting nextCost from Save Data"); + saveData.ShopCost = shop.GetComponent().nextCost; + saveData.Nodes = new List(); + saveData.TurretInventory = new List(); + saveData.ModuleInventory = new List(); // Node Data foreach (Node node in nodeParent.GetComponentsInChildren()) @@ -125,19 +127,19 @@ public void PopulateSaveData(SaveLevel saveData) turretRotation = node.turret.transform.rotation, moduleChainHandlers = node.turret.GetComponent().moduleHandlers }; - saveData.nodes.Add(nodeData); + saveData.Nodes.Add(nodeData); } // Inventory // Turrets foreach (TurretBlueprint turret in TurretInventory) { - saveData.turretInventory.Add(turret); + saveData.TurretInventory.Add(turret); } // Modules foreach (ModuleChainHandler module in ModuleInventory) { - saveData.moduleInventory.Add(module); + saveData.ModuleInventory.Add(module); } } @@ -152,15 +154,16 @@ private static void LoadJsonData(ISaveableLevel level) public void LoadFromSaveData(SaveLevel saveData) { _startLives = GameStats.Lives; - GameStats.Lives = saveData.lives; - GameStats.PopulateRounds(saveData.waveIndex + 1); - Random.state = saveData.random; + GameStats.Lives = saveData.Lives; + GameStats.PopulateRounds(saveData.WaveIndex + 1); + Random.state = saveData.RandomState; + Debug.Log("Setting nextCost from Save Data"); var shopComponent = shop.GetComponent(); - shopComponent.nextCost = saveData.shopCost; - GameStats.Powercells = 0; - GameStats.Energy = saveData.energy; + shopComponent.nextCost = saveData.ShopCost; + GameStats.Powercells = saveData.Powercells; + GameStats.Energy = saveData.Energy; - foreach (SaveLevel.NodeData nodeData in saveData.nodes) + foreach (SaveLevel.NodeData nodeData in saveData.Nodes) { foreach (Node node in nodeParent.GetComponentsInChildren()) { @@ -175,11 +178,11 @@ public void LoadFromSaveData(SaveLevel saveData) } } - foreach (TurretBlueprint turret in saveData.turretInventory) + foreach (TurretBlueprint turret in saveData.TurretInventory) { shopComponent.SpawnNewTurret(turret); } - foreach (ModuleChainHandler module in saveData.moduleInventory) + foreach (ModuleChainHandler module in saveData.ModuleInventory) { shopComponent.SpawnNewModule(module); } diff --git a/Tower Defence/Assets/Gameplay/GameStats.cs b/Tower Defence/Assets/Gameplay/GameStats.cs index c47272d7..d0c78b86 100644 --- a/Tower Defence/Assets/Gameplay/GameStats.cs +++ b/Tower Defence/Assets/Gameplay/GameStats.cs @@ -20,7 +20,7 @@ public static int Energy set { _energy = value; - OnGainMoney?.Invoke(); + OnGainEnergy?.Invoke(); } } @@ -78,7 +78,7 @@ public static void PopulateLives(int lives) public static event RoundProgressEvent OnRoundProgress; public static event GameOverEvent OnGameOver; public static event LoseLife OnLoseLife; - public static event GainMoney OnGainMoney; + public static event GainMoney OnGainEnergy; public static event GainCell OnGainPowercell; /// @@ -88,7 +88,8 @@ private void Awake() { if (!_active) { - Energy = startEnergy; + _energy = startEnergy; + _powercells = 0; _lives = startLives; _rounds = 0; } diff --git a/Tower Defence/Assets/Gameplay/Shop.cs b/Tower Defence/Assets/Gameplay/Shop.cs index f57ef62d..8b9e5f9a 100644 --- a/Tower Defence/Assets/Gameplay/Shop.cs +++ b/Tower Defence/Assets/Gameplay/Shop.cs @@ -74,22 +74,19 @@ private void Start() { _buildManager = BuildManager.instance; _levelData = _buildManager.GetComponent().levelData; + // It should only be greater than 0 if we've loaded a save if (nextCost == 0) - { nextCost = _levelData.initialSelectionCost; - } else - { _hasPlayerMadePurchase = true; - } _defaultButtonTop = energyProgress.outColorA; _defaultButtonBottom = energyProgress.outColorB; - + // Update button text powercellsText.text = " " + nextCost; - GameStats.OnGainMoney += CalculateCells; + GameStats.OnGainEnergy += CalculateCells; GameStats.OnGainPowercell += UpdateEnergyButton; CalculateCells(); } @@ -161,12 +158,15 @@ public int GetSellAmount() private void CalculateCells() { - while (GameStats.Energy > nextCost) + var energyToSubtract = 0; + while (GameStats.Energy - energyToSubtract > nextCost) { nextCost += _levelData.selectionCostIncrement; - GameStats.Energy -= nextCost; + energyToSubtract += nextCost; GameStats.Powercells++; } + if (energyToSubtract > 0) + GameStats.Energy -= energyToSubtract; UpdateEnergyButton(); }