From 81550c473c16d5117735540a93eba73498213032 Mon Sep 17 00:00:00 2001
From: Matti Loimaranta <makalo@utu.fi>
Date: Sun, 3 Mar 2019 23:30:57 +0200
Subject: [PATCH] progressiivisesti lapaistava

---
 Assets/Scripts/City/City.cs                   | 22 ++++++++++++++----
 Assets/Scripts/City/ResourcePool.cs           |  1 +
 Assets/Scripts/Resources/BerryBush.cs         |  1 +
 Assets/Scripts/Resources/Forest.cs            |  1 +
 Assets/Scripts/Resources/Quarry.cs            |  1 +
 Assets/Scripts/UI/Border.cs                   |  1 -
 Assets/Scripts/UI/BuyCapacity.cs              | 19 ++++++++++++++-
 Assets/Scripts/UI/BuyCity.cs                  | 21 ++++++++++++++---
 Assets/Scripts/UI/BuyCollector.cs             | 21 ++++++++++++++++-
 Assets/Scripts/UI/BuyEfficiency.cs            | 12 +++++++---
 Assets/Scripts/UI/BuyPopulation.cs            | 23 +++++++++++++++++--
 Assets/Scripts/UI/BuySpeed.cs                 | 19 ++++++++++++++-
 Assets/Scripts/UI/UpgradeShop.cs              |  2 +-
 Assets/Scripts/UI/UsableResources.cs          | 18 +++++++++++++++
 Assets/Scripts/UI/UsableResources.cs.meta     | 11 +++++++++
 Assets/Scripts/Upgrades/CollectorUpgrade.cs   |  3 ++-
 Assets/Scripts/Upgrades/PopulationUpgrade.cs  |  3 ++-
 .../Upgrades/ResourceCapacityUpgrade.cs       |  5 ++--
 Assets/Scripts/Upgrades/RoadUpgrade.cs        |  2 +-
 Assets/Scripts/Upgrades/Upgrade.cs            | 14 +++--------
 20 files changed, 167 insertions(+), 33 deletions(-)
 create mode 100644 Assets/Scripts/UI/UsableResources.cs
 create mode 100644 Assets/Scripts/UI/UsableResources.cs.meta

diff --git a/Assets/Scripts/City/City.cs b/Assets/Scripts/City/City.cs
index 36f61e3..3d541d5 100644
--- a/Assets/Scripts/City/City.cs
+++ b/Assets/Scripts/City/City.cs
@@ -107,7 +107,19 @@ public class City : MonoBehaviour
         this.population += v;
     }
 
+    private void Update()
+    {
+        if (Input.GetKey(KeyCode.S))
+        {
+            GameObject go = new GameObject();
+            Quarry q = go.AddComponent<Quarry>();
+           
+            AddResource(q, 4000);
+            AddResource(go.AddComponent<Forest>(), 4000);
+            AddResource(go.AddComponent<BerryBush>(), 4000);
 
+        }
+    }
     /** 
 *  Lisaa resurssia r, maaran 'amount' verran (amount >= 0).
 *  Voidaan lisata maximissaan resurssin maximikapasiteettiin asti,
@@ -163,10 +175,11 @@ public class City : MonoBehaviour
                 {
                     for(int k = 0; k<resurssit.Count; k++)
                     {
-                        if(resurssit[k].GetType().Equals(lista[i].GetType()))
-                            resurssit.Remove(poolit[j].GetResource());
+                        if (resurssit[k].GetType().Equals(lista[i].GetType()))
+                            resurssit.RemoveAt(k);
                     }
 
+                    Debug.Log(poolit[j].GetAmount());
                     if (poolit[j].GetAmount() < amount)
                     {
                         return false;
@@ -174,7 +187,7 @@ public class City : MonoBehaviour
                 }
             }
         }
-
+        Debug.Log(resurssit.Count);
         return resurssit.Count == 0;
     }
     /**
@@ -204,6 +217,7 @@ public class City : MonoBehaviour
     }
     private void OnMouseEnter()
     {
-        Instantiate<GameObject>(shopPreFab);
+        GameObject go = Instantiate<GameObject>(shopPreFab);
+        go.transform.SetParent(transform);
     }
 }
diff --git a/Assets/Scripts/City/ResourcePool.cs b/Assets/Scripts/City/ResourcePool.cs
index bfb1ad0..7125c6a 100644
--- a/Assets/Scripts/City/ResourcePool.cs
+++ b/Assets/Scripts/City/ResourcePool.cs
@@ -28,6 +28,7 @@ public class ResourcePool : MonoBehaviour
     // Start is called before the first frame update
     void Start()
     {
+
     }
     public void SetResource(Resource r)
     {
diff --git a/Assets/Scripts/Resources/BerryBush.cs b/Assets/Scripts/Resources/BerryBush.cs
index 797fb98..a59fb0c 100644
--- a/Assets/Scripts/Resources/BerryBush.cs
+++ b/Assets/Scripts/Resources/BerryBush.cs
@@ -32,6 +32,7 @@ public class BerryBush : Resource
 
     public override void refreshSprite()
     {
+        if (sprites == null) return;
         if (getAmount() < 1)
         {
             gameObject.GetComponent<SpriteRenderer>().sprite = sprites[5];
diff --git a/Assets/Scripts/Resources/Forest.cs b/Assets/Scripts/Resources/Forest.cs
index 89d9564..479bc37 100644
--- a/Assets/Scripts/Resources/Forest.cs
+++ b/Assets/Scripts/Resources/Forest.cs
@@ -22,6 +22,7 @@ public class Forest : Resource
 
     public override void refreshSprite()
     {
+        if (sprites == null) return;
         if (getAmount() < 125)
         {
             gameObject.GetComponent<SpriteRenderer>().sprite = sprites[7];
diff --git a/Assets/Scripts/Resources/Quarry.cs b/Assets/Scripts/Resources/Quarry.cs
index 4d2136b..d936949 100644
--- a/Assets/Scripts/Resources/Quarry.cs
+++ b/Assets/Scripts/Resources/Quarry.cs
@@ -15,6 +15,7 @@ public class Quarry : Resource
 
     public override void refreshSprite()
     {
+        if (sprites == null) return;
         if (getAmount() < 100)
         {
             gameObject.GetComponent<SpriteRenderer>().sprite = sprites[5];
diff --git a/Assets/Scripts/UI/Border.cs b/Assets/Scripts/UI/Border.cs
index 1ab7908..db78d55 100644
--- a/Assets/Scripts/UI/Border.cs
+++ b/Assets/Scripts/UI/Border.cs
@@ -18,7 +18,6 @@ public class Border : MonoBehaviour
 
     private void OnMouseEnter()
     {
-        Debug.Log("Kauppa kiinni");
         Destroy(transform.parent.gameObject);
     }
 }
diff --git a/Assets/Scripts/UI/BuyCapacity.cs b/Assets/Scripts/UI/BuyCapacity.cs
index eccf28e..0ed57f6 100644
--- a/Assets/Scripts/UI/BuyCapacity.cs
+++ b/Assets/Scripts/UI/BuyCapacity.cs
@@ -4,6 +4,7 @@ using UnityEngine;
 
 public class BuyCapacity : MonoBehaviour
 {
+
     // Start is called before the first frame update
     void Start()
     {
@@ -20,7 +21,23 @@ public class BuyCapacity : MonoBehaviour
     {
         if (Input.GetMouseButtonDown(1))
         {
-            Debug.Log("Ostit Tilaa");
+            City c = transform.root.gameObject.GetComponent<City>();
+            if (c.IsSufficientResources(createResourceGO(), 50))
+            {
+                List<int> cost = new List<int>() { 50, 50, 50 };
+                c.UseResources(cost);
+                c.IncreaseCapacity(50);
+
+                EventSystem.EventHappened(EventType.UpgradeBuilt);
+            }
         }
     }
+
+    private List<Resource> createResourceGO() {
+        GameObject go = new GameObject();
+        go.AddComponent<Forest>();
+        go.AddComponent<Quarry>();
+        go.AddComponent<BerryBush>();
+        return new List<Resource>(go.GetComponents<Resource>());
+    }
 }
diff --git a/Assets/Scripts/UI/BuyCity.cs b/Assets/Scripts/UI/BuyCity.cs
index 71795af..e9c4980 100644
--- a/Assets/Scripts/UI/BuyCity.cs
+++ b/Assets/Scripts/UI/BuyCity.cs
@@ -11,20 +11,35 @@ public class BuyCity : MonoBehaviour
     // Start is called before the first frame update
     void Start()
     {
-        
+
     }
 
     // Update is called once per frame
     void Update()
     {
-        
+
     }
 
     private void OnMouseOver()
     {
         if (Input.GetMouseButtonDown(1))
         {
-            Instantiate<GameObject>(endGame);
+            City c = transform.root.gameObject.GetComponent<City>();
+
+            if (c.population > 200 && c.IsSufficientResources(createResourceGO(), 150))
+            {
+                Instantiate<GameObject>(endGame);
+            }
         }
     }
+
+    private List<Resource> createResourceGO()
+    {
+        GameObject go = new GameObject();
+        go.AddComponent<Forest>();
+        go.AddComponent<Quarry>();
+        go.AddComponent<BerryBush>();
+        return new List<Resource>(go.GetComponents<Resource>());
+    }
 }
+    
diff --git a/Assets/Scripts/UI/BuyCollector.cs b/Assets/Scripts/UI/BuyCollector.cs
index 3af7ce3..d74e9c6 100644
--- a/Assets/Scripts/UI/BuyCollector.cs
+++ b/Assets/Scripts/UI/BuyCollector.cs
@@ -20,7 +20,26 @@ public class BuyCollector : MonoBehaviour
     {
         if (Input.GetMouseButtonDown(1))
         {
-            Debug.Log("Ostit Tyovoimaa");
+            City c = transform.root.gameObject.GetComponent<City>();
+
+
+            if (c.IsSufficientResources(createResourceGO(), 50))
+            {
+                List<int> cost = new List<int>() { 50, 50, 50 };
+                c.UseResources(cost);
+                c.AddCollector();
+
+                EventSystem.EventHappened(EventType.UpgradeBuilt);
+            }
         }
     }
+
+    private List<Resource> createResourceGO()
+    {
+        GameObject go = new GameObject();
+        go.AddComponent<Forest>();
+        go.AddComponent<Quarry>();
+        go.AddComponent<BerryBush>();
+        return new List<Resource>(go.GetComponents<Resource>());
+    }
 }
diff --git a/Assets/Scripts/UI/BuyEfficiency.cs b/Assets/Scripts/UI/BuyEfficiency.cs
index e0dc181..feb55dd 100644
--- a/Assets/Scripts/UI/BuyEfficiency.cs
+++ b/Assets/Scripts/UI/BuyEfficiency.cs
@@ -20,9 +20,15 @@ public class BuyEfficiency : MonoBehaviour
     {
         if (Input.GetMouseButtonDown(1))
         {
-            Debug.Log("Ostit Tehokkuutta");
-            ResourceEfficiencyUpgrade reu = gameObject.GetComponent<ResourceEfficiencyUpgrade>();
-            reu.UpgradeEfficiency();
+            List<Resource> resources = new List<Resource>(3);
+            City c = transform.root.gameObject.GetComponent<City>();
+            if (c.IsSufficientResources(resources, 50))
+            {
+                List<int> cost = new List<int>() { 50, 50, 50 };
+                c.UseResources(cost);
+
+                EventSystem.EventHappened(EventType.UpgradeBuilt);
+            }
         }
     }
 }
diff --git a/Assets/Scripts/UI/BuyPopulation.cs b/Assets/Scripts/UI/BuyPopulation.cs
index d746afb..2da19d4 100644
--- a/Assets/Scripts/UI/BuyPopulation.cs
+++ b/Assets/Scripts/UI/BuyPopulation.cs
@@ -20,8 +20,27 @@ public class BuyPopulation : MonoBehaviour
     {
         if (Input.GetMouseButtonDown(1))
         {
-            PopulationUpgrade pop = gameObject.GetComponent<PopulationUpgrade>();
-            pop.UpgradePopulation();
+            City c = transform.root.gameObject.GetComponent<City>();
+            List<int> cost = new List<int>() { 50, 50, 50 };
+            if (c.IsSufficientResources(createResourceGO(), 50))
+            {
+                c.UseResources(cost);
+                c.AddPopulation(50);
+
+                EventSystem.EventHappened(EventType.UpgradeBuilt);
+            } else
+            {
+                Debug.Log("Not enough resources");
+            }
         }
     }
+
+    private List<Resource> createResourceGO()
+    {
+        GameObject go = new GameObject();
+        go.AddComponent<Forest>();
+        go.AddComponent<Quarry>();
+        go.AddComponent<BerryBush>();
+        return new List<Resource>(go.GetComponents<Resource>());
+    }
 }
diff --git a/Assets/Scripts/UI/BuySpeed.cs b/Assets/Scripts/UI/BuySpeed.cs
index 52b0f92..22e3bfd 100644
--- a/Assets/Scripts/UI/BuySpeed.cs
+++ b/Assets/Scripts/UI/BuySpeed.cs
@@ -20,7 +20,24 @@ public class BuySpeed : MonoBehaviour
     {
         if (Input.GetMouseButtonDown(1))
         {
-            Debug.Log("Ostit Nopeutta");
+            City c = transform.root.gameObject.GetComponent<City>();
+            if (c.IsSufficientResources(createResourceGO(), 50))
+                {
+                c.UpgradeWorkerSpeed();
+                List<int> cost = new List<int>() { 50, 50, 50 };
+                c.UseResources(cost);
+
+                EventSystem.EventHappened(EventType.UpgradeBuilt);
+            }
         }
     }
+
+    private List<Resource> createResourceGO()
+    {
+        GameObject go = new GameObject();
+        go.AddComponent<Forest>();
+        go.AddComponent<Quarry>();
+        go.AddComponent<BerryBush>();
+        return new List<Resource>(go.GetComponents<Resource>());
+    }
 }
diff --git a/Assets/Scripts/UI/UpgradeShop.cs b/Assets/Scripts/UI/UpgradeShop.cs
index e68e8d0..228458b 100644
--- a/Assets/Scripts/UI/UpgradeShop.cs
+++ b/Assets/Scripts/UI/UpgradeShop.cs
@@ -19,6 +19,6 @@ public class UpgradeShop : MonoBehaviour
 
     private void OnMouseEnter()
     {
-        Debug.Log("Kauppa auki");
+
     }
 }
diff --git a/Assets/Scripts/UI/UsableResources.cs b/Assets/Scripts/UI/UsableResources.cs
new file mode 100644
index 0000000..fad9844
--- /dev/null
+++ b/Assets/Scripts/UI/UsableResources.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class UsableResources : MonoBehaviour
+{
+    // Start is called before the first frame update
+    void Start()
+    {
+        
+    }
+
+    // Update is called once per frame
+    void Update()
+    {
+        
+    }
+}
diff --git a/Assets/Scripts/UI/UsableResources.cs.meta b/Assets/Scripts/UI/UsableResources.cs.meta
new file mode 100644
index 0000000..ef47aea
--- /dev/null
+++ b/Assets/Scripts/UI/UsableResources.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 132e9ec36ed413a4b868b617846af5e7
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Upgrades/CollectorUpgrade.cs b/Assets/Scripts/Upgrades/CollectorUpgrade.cs
index 698c69f..00d6f3c 100644
--- a/Assets/Scripts/Upgrades/CollectorUpgrade.cs
+++ b/Assets/Scripts/Upgrades/CollectorUpgrade.cs
@@ -23,8 +23,9 @@ public class CollectorUpgrade : Upgrade
         City city = gameObject.GetComponent<City>();
         int currentLevel = city.GetLevel(target);
 
-        if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier)
+        if (currentLevel <= maxLevelModifier)
         {
+            Debug.Log("Collector Upgraded");
             city.UseResources(GetPrices(currentLevel));
             city.AddCollector();
         }
diff --git a/Assets/Scripts/Upgrades/PopulationUpgrade.cs b/Assets/Scripts/Upgrades/PopulationUpgrade.cs
index e53bb68..7ab9a5c 100644
--- a/Assets/Scripts/Upgrades/PopulationUpgrade.cs
+++ b/Assets/Scripts/Upgrades/PopulationUpgrade.cs
@@ -39,9 +39,10 @@ public class PopulationUpgrade : Upgrade
                 break;
         }
         */
-        if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier)
+        if (currentLevel <= maxLevelModifier)
         {
             city.UseResources(GetPrices(currentLevel + 1));
+            city.populationLevel++;
             city.AddPopulation(currentLevel * 10);
             Debug.Log("population upgraded");
         }
diff --git a/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs b/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs
index 3f17ea3..b767755 100644
--- a/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs
+++ b/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs
@@ -22,10 +22,11 @@ public class ResourceCapacityUpgrade : Upgrade
         City city = gameObject.GetComponent<City>();
         int currentLevel = city.GetLevel(target);
 
-        if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier)
+        if (currentLevel <= maxLevelModifier)
         {
             city.UseResources((GetPrices(currentLevel)));
-            city.IncreaseCapacity(currentLevel * 100);
+            city.resourcePoolLevel++;
+            city.IncreaseCapacity(currentLevel * 100);            
             Debug.Log("Capacity upgraded");
         }
     }
diff --git a/Assets/Scripts/Upgrades/RoadUpgrade.cs b/Assets/Scripts/Upgrades/RoadUpgrade.cs
index 6ef9e4d..eda0869 100644
--- a/Assets/Scripts/Upgrades/RoadUpgrade.cs
+++ b/Assets/Scripts/Upgrades/RoadUpgrade.cs
@@ -24,7 +24,7 @@ public class RoadUpgrade : Upgrade
         City city = gameObject.GetComponent<City>();
         int currentLevel = (int) road.GetLevel(target);
 
-        if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier)
+        if (currentLevel <= maxLevelModifier)
         {
             city.UseResources(GetPrices(currentLevel));
             road.IncreaseSpeed(1 / currentLevel);
diff --git a/Assets/Scripts/Upgrades/Upgrade.cs b/Assets/Scripts/Upgrades/Upgrade.cs
index 9bc13dc..6a52a27 100644
--- a/Assets/Scripts/Upgrades/Upgrade.cs
+++ b/Assets/Scripts/Upgrades/Upgrade.cs
@@ -8,13 +8,6 @@ public abstract class Upgrade : MonoBehaviour
 
     private float efficiencyLevel = 1;
 
-    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()
     {
@@ -63,10 +56,9 @@ public abstract class Upgrade : MonoBehaviour
     public List<int> GetPrices(float modifier)
     {
         List<int> prices = new List<int>();
-        foreach(KeyValuePair<Resource, int> key in resources)
-        {
-            prices.Add((int) (key.Value * modifier * 50 * GetEfficiency()));
-        }
+        
+        prices.Add((int) (1 * modifier * 50 * GetEfficiency()));
+        
         return prices;
     }
 
-- 
GitLab