summaryrefslogtreecommitdiff
path: root/GameCode/ManaBank.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-03-21 10:28:46 +0800
committerchai <215380520@qq.com>2024-03-21 10:28:46 +0800
commit3fb2121cc0d00cbd42b2ca10b5dfb399a4df1a04 (patch)
treec1f4683fb021522b459408ab1ad61c40be77ee47 /GameCode/ManaBank.cs
parent9ee2cfa385ed77c39003f524f5f03079124fc476 (diff)
*misc
Diffstat (limited to 'GameCode/ManaBank.cs')
-rw-r--r--GameCode/ManaBank.cs68
1 files changed, 68 insertions, 0 deletions
diff --git a/GameCode/ManaBank.cs b/GameCode/ManaBank.cs
new file mode 100644
index 0000000..b82d36e
--- /dev/null
+++ b/GameCode/ManaBank.cs
@@ -0,0 +1,68 @@
+using UnityEngine;
+
+public class ManaBank : MonoBehaviour, IBuildable
+{
+ [SerializeField]
+ private int gatherRatePerSec;
+
+ [SerializeField]
+ private int maxManaIncrease;
+
+ [SerializeField]
+ private GameObject UIObject;
+
+ [SerializeField]
+ private int goldBackOnDemolish;
+
+ private float timer = 1f;
+
+ private void Start()
+ {
+ maxManaIncrease += ResourceManager.instance.manaBankBonusMana;
+ ResourceManager.instance.UpdateManaGatherRate(gatherRatePerSec);
+ ResourceManager.instance.AddMaxMana(maxManaIncrease);
+ ResourceManager.instance.manaBanks.Add(this);
+ }
+
+ private void Update()
+ {
+ if (timer <= 0f)
+ {
+ Gather();
+ timer = 1f;
+ }
+ else if (SpawnManager.instance.combat)
+ {
+ timer -= Time.deltaTime;
+ }
+ }
+
+ public void SetStats()
+ {
+ }
+
+ public void UpgradeMaxMana(int addition)
+ {
+ ResourceManager.instance.AddMaxMana(addition);
+ maxManaIncrease += addition;
+ }
+
+ public void SpawnUI()
+ {
+ SimpleUI component = Object.Instantiate(UIObject, base.transform.position, Quaternion.identity).GetComponent<SimpleUI>();
+ component.SetDemolishable(base.gameObject, goldBackOnDemolish);
+ component.SetDiscriptionText("This bank currently stores " + maxManaIncrease + " mana. It is generating " + ((float)Mathf.FloorToInt(10f * ResourceManager.instance.manaMaxRegenPercent * (float)maxManaIncrease) / 10f + 1f) + " mana/s through sorcery and clever investing.");
+ }
+
+ public void Demolish()
+ {
+ ResourceManager.instance.UpdateManaGatherRate(-gatherRatePerSec);
+ ResourceManager.instance.AddMaxMana(-maxManaIncrease);
+ ResourceManager.instance.manaBanks.Remove(this);
+ }
+
+ private void Gather()
+ {
+ ResourceManager.instance.AddMana(gatherRatePerSec);
+ }
+}