diff options
author | chai <215380520@qq.com> | 2024-03-21 10:28:46 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2024-03-21 10:28:46 +0800 |
commit | 3fb2121cc0d00cbd42b2ca10b5dfb399a4df1a04 (patch) | |
tree | c1f4683fb021522b459408ab1ad61c40be77ee47 /GameCode/ManaBank.cs | |
parent | 9ee2cfa385ed77c39003f524f5f03079124fc476 (diff) |
*misc
Diffstat (limited to 'GameCode/ManaBank.cs')
-rw-r--r-- | GameCode/ManaBank.cs | 68 |
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); + } +} |