Bank.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using UnityEngine;
  2. [System.Serializable]
  3. public class Bank : MonoBehaviour
  4. {
  5. [Header("Currency")]
  6. public int gold;
  7. public int silver;
  8. public int copper;
  9. [Header("Starting Money")]
  10. public int startingGold = 50;
  11. public int startingSilver = 0;
  12. public int startingCopper = 0;
  13. void Start()
  14. {
  15. // Initialize with starting money if all currencies are 0
  16. if (gold == 0 && silver == 0 && copper == 0)
  17. {
  18. gold = startingGold;
  19. silver = startingSilver;
  20. copper = startingCopper;
  21. }
  22. }
  23. public int GetTotalCopperValue()
  24. {
  25. return gold * 100 + silver * 10 + copper;
  26. }
  27. public string GetCurrencyString()
  28. {
  29. string result = "";
  30. if (gold > 0) result += $"{gold}g ";
  31. if (silver > 0) result += $"{silver}s ";
  32. if (copper > 0) result += $"{copper}c";
  33. return result.Trim();
  34. }
  35. public bool CanAfford(int goldCost, int silverCost, int copperCost)
  36. {
  37. int totalCopperCost = goldCost * 100 + silverCost * 10 + copperCost;
  38. return GetTotalCopperValue() >= totalCopperCost;
  39. }
  40. public bool SpendMoney(int goldCost, int silverCost, int copperCost)
  41. {
  42. if (!CanAfford(goldCost, silverCost, copperCost))
  43. {
  44. Debug.LogWarning($"Cannot afford cost: {goldCost}g {silverCost}s {copperCost}c");
  45. return false;
  46. }
  47. int totalCopperCost = goldCost * 100 + silverCost * 10 + copperCost;
  48. int remainingCopper = GetTotalCopperValue() - totalCopperCost;
  49. // Convert back to gold, silver, copper
  50. gold = remainingCopper / 100;
  51. remainingCopper %= 100;
  52. silver = remainingCopper / 10;
  53. copper = remainingCopper % 10;
  54. return true;
  55. }
  56. public void AddMoney(int addGold, int addSilver, int addCopper)
  57. {
  58. gold += addGold;
  59. silver += addSilver;
  60. copper += addCopper;
  61. // Convert excess copper to silver, and excess silver to gold
  62. if (copper >= 10)
  63. {
  64. silver += copper / 10;
  65. copper %= 10;
  66. }
  67. if (silver >= 10)
  68. {
  69. gold += silver / 10;
  70. silver %= 10;
  71. }
  72. }
  73. }