From 27edacbac389a7f76f74074eacaad489e4ccb641 Mon Sep 17 00:00:00 2001 From: Matti Loimaranta <makalo@utu.fi> Date: Sun, 3 Mar 2019 12:21:49 +0200 Subject: [PATCH] Upgrade max levels based on city level --- Assets/Scripts/Upgrades/CollectorUpgrade.cs | 8 ++++++-- Assets/Scripts/Upgrades/PopulationUpgrade.cs | 10 +++++++--- Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs | 10 +++++++--- Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs | 11 +++++++---- Assets/Scripts/Upgrades/RoadUpgrade.cs | 12 ++++++++---- Assets/Scripts/Upgrades/Upgrade.cs | 9 +++++++-- 6 files changed, 42 insertions(+), 18 deletions(-) diff --git a/Assets/Scripts/Upgrades/CollectorUpgrade.cs b/Assets/Scripts/Upgrades/CollectorUpgrade.cs index b5c72f5..698c69f 100644 --- a/Assets/Scripts/Upgrades/CollectorUpgrade.cs +++ b/Assets/Scripts/Upgrades/CollectorUpgrade.cs @@ -22,7 +22,11 @@ public class CollectorUpgrade : Upgrade UpgradeTargets target = UpgradeTargets.collector; City city = gameObject.GetComponent<City>(); int currentLevel = city.GetLevel(target); - city.UseResources(GetPrices(currentLevel)); - city.AddCollector(); + + if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier) + { + city.UseResources(GetPrices(currentLevel)); + city.AddCollector(); + } } } diff --git a/Assets/Scripts/Upgrades/PopulationUpgrade.cs b/Assets/Scripts/Upgrades/PopulationUpgrade.cs index fbda2c4..f9fa3da 100644 --- a/Assets/Scripts/Upgrades/PopulationUpgrade.cs +++ b/Assets/Scripts/Upgrades/PopulationUpgrade.cs @@ -21,8 +21,12 @@ public class PopulationUpgrade : Upgrade UpgradeTargets target = UpgradeTargets.population; City city = gameObject.GetComponent<City>(); int currentLevel = city.GetLevel(target); - city.UseResources(GetPrices(currentLevel)); - city.AddPopulation(currentLevel * 10); - Debug.Log("population upgraded"); + + if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier) + { + city.UseResources(GetPrices(currentLevel)); + city.AddPopulation(currentLevel * 10); + Debug.Log("population upgraded"); + } } } diff --git a/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs b/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs index 45ac507..3f17ea3 100644 --- a/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs +++ b/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs @@ -21,9 +21,13 @@ public class ResourceCapacityUpgrade : Upgrade UpgradeTargets target = UpgradeTargets.capacity; City city = gameObject.GetComponent<City>(); int currentLevel = city.GetLevel(target); - city.UseResources((GetPrices(currentLevel))); - city.IncreaseCapacity(currentLevel * 100); - Debug.Log("Capacity upgraded"); + + if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier) + { + city.UseResources((GetPrices(currentLevel))); + city.IncreaseCapacity(currentLevel * 100); + Debug.Log("Capacity upgraded"); + } } } diff --git a/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs b/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs index 94cb070..ab8ee4a 100644 --- a/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs +++ b/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs @@ -7,7 +7,7 @@ public class ResourceEfficiencyUpgrade : Upgrade // Start is called before the first frame update void Start() { - + maxLevelModifier = 5; } // Update is called once per frame @@ -19,8 +19,11 @@ public class ResourceEfficiencyUpgrade : Upgrade public void UpgradeEfficiency() { City city = gameObject.GetComponent<City>(); - IncreaseEfficiencyLevel(); - city.UseResources(GetPrices(GetEfficiencyLevel() * GetEfficiencyLevel())); - Debug.Log("Efficienfy upgraded to: " + GetEfficiencyLevel()); + if (GetEfficiencyLevel() <= maxLevelModifier) + { + IncreaseEfficiencyLevel(); + city.UseResources(GetPrices(GetEfficiencyLevel() * GetEfficiencyLevel())); + Debug.Log("Efficienfy upgraded to: " + GetEfficiencyLevel()); + } } } diff --git a/Assets/Scripts/Upgrades/RoadUpgrade.cs b/Assets/Scripts/Upgrades/RoadUpgrade.cs index 329ef10..6ef9e4d 100644 --- a/Assets/Scripts/Upgrades/RoadUpgrade.cs +++ b/Assets/Scripts/Upgrades/RoadUpgrade.cs @@ -22,10 +22,14 @@ public class RoadUpgrade : Upgrade UpgradeTargets target = UpgradeTargets.speed; Road road = gameObject.GetComponent<Road>(); City city = gameObject.GetComponent<City>(); - float currentLevel = road.GetLevel(target); - city.UseResources(GetPrices(currentLevel)); - road.IncreaseSpeed(1 / currentLevel); - Debug.Log("Road upgraded"); + int currentLevel = (int) road.GetLevel(target); + + if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier) + { + city.UseResources(GetPrices(currentLevel)); + road.IncreaseSpeed(1 / currentLevel); + Debug.Log("Road upgraded"); + } } } diff --git a/Assets/Scripts/Upgrades/Upgrade.cs b/Assets/Scripts/Upgrades/Upgrade.cs index 0dc875a..9bc13dc 100644 --- a/Assets/Scripts/Upgrades/Upgrade.cs +++ b/Assets/Scripts/Upgrades/Upgrade.cs @@ -8,7 +8,12 @@ public abstract class Upgrade : MonoBehaviour private float efficiencyLevel = 1; - private Dictionary<Resources, int> resources = new Dictionary<Resources, int>(); + private Dictionary<Resource, int> resources = new Dictionary<Resource, int>() + { + { null , 1}, + { null , 1}, + { null , 0}, + }; // Start is called before the first frame update void Start() @@ -58,7 +63,7 @@ public abstract class Upgrade : MonoBehaviour public List<int> GetPrices(float modifier) { List<int> prices = new List<int>(); - foreach(KeyValuePair<Resources, int> key in resources) + foreach(KeyValuePair<Resource, int> key in resources) { prices.Add((int) (key.Value * modifier * 50 * GetEfficiency())); } -- GitLab