using System; using UnityEngine; public sealed class CurrencyBank : MonoBehaviour { [SerializeField] private int startingBalance = 500; private int balance; public int Balance => balance; public event Action OnBalanceChanged; private void Awake() { balance = startingBalance; } public void Add(int amount) { if (amount <= 0) return; balance += amount; OnBalanceChanged?.Invoke(balance); } public bool Spend(int amount) { if (amount <= 0) return false; if (balance < amount) return false; balance -= amount; OnBalanceChanged?.Invoke(balance); return true; } public bool CanAfford(int amount) => balance >= amount; public void SetBalance(int value) { balance = Mathf.Max(0, value); OnBalanceChanged?.Invoke(balance); } }