| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using UnityEngine;
- [System.Serializable]
- public class Bank : MonoBehaviour
- {
- [Header("Currency")]
- public int gold;
- public int silver;
- public int copper;
- [Header("Starting Money")]
- public int startingGold = 50;
- public int startingSilver = 0;
- public int startingCopper = 0;
- void Start()
- {
- // Initialize with starting money if all currencies are 0
- if (gold == 0 && silver == 0 && copper == 0)
- {
- gold = startingGold;
- silver = startingSilver;
- copper = startingCopper;
- }
- }
- public int GetTotalCopperValue()
- {
- return gold * 100 + silver * 10 + copper;
- }
- public string GetCurrencyString()
- {
- string result = "";
- if (gold > 0) result += $"{gold}g ";
- if (silver > 0) result += $"{silver}s ";
- if (copper > 0) result += $"{copper}c";
- return result.Trim();
- }
- public bool CanAfford(int goldCost, int silverCost, int copperCost)
- {
- int totalCopperCost = goldCost * 100 + silverCost * 10 + copperCost;
- return GetTotalCopperValue() >= totalCopperCost;
- }
- public bool SpendMoney(int goldCost, int silverCost, int copperCost)
- {
- if (!CanAfford(goldCost, silverCost, copperCost))
- {
- Debug.LogWarning($"Cannot afford cost: {goldCost}g {silverCost}s {copperCost}c");
- return false;
- }
- int totalCopperCost = goldCost * 100 + silverCost * 10 + copperCost;
- int remainingCopper = GetTotalCopperValue() - totalCopperCost;
- // Convert back to gold, silver, copper
- gold = remainingCopper / 100;
- remainingCopper %= 100;
- silver = remainingCopper / 10;
- copper = remainingCopper % 10;
- return true;
- }
- public void AddMoney(int addGold, int addSilver, int addCopper)
- {
- gold += addGold;
- silver += addSilver;
- copper += addCopper;
- // Convert excess copper to silver, and excess silver to gold
- if (copper >= 10)
- {
- silver += copper / 10;
- copper %= 10;
- }
- if (silver >= 10)
- {
- gold += silver / 10;
- silver %= 10;
- }
- }
- }
|