diff --git a/Assets/Scripts/Turret.cs b/Assets/Scripts/Turret.cs index 64bf8bc..4095cb0 100644 --- a/Assets/Scripts/Turret.cs +++ b/Assets/Scripts/Turret.cs @@ -25,7 +25,7 @@ public class Turret : MonoBehaviour public float Damage => _damage; public float Distance => _distance; public int SellPrice => Mathf.RoundToInt(_price * _sellingMultiplier); - public int UpgradeCost => Mathf.RoundToInt(_price * _upgradeCostMultiplier); + public int UpgradeCost => Mathf.CeilToInt(_price * _upgradeCostMultiplier); private void Start() { diff --git a/Assets/Scripts/TurretUpdater.cs b/Assets/Scripts/TurretUpdater.cs index 9763b83..9d00833 100644 --- a/Assets/Scripts/TurretUpdater.cs +++ b/Assets/Scripts/TurretUpdater.cs @@ -10,6 +10,7 @@ public class TurretUpdater : MonoBehaviour [SerializeField] private Button _sellButton; [SerializeField] private Button _upgradeButton; [SerializeField] private UnityEvent _onTurretClicked; + [SerializeField] private UnityEvent _onTurretUpgraded; public event UnityAction OnTurretClicked { @@ -17,6 +18,12 @@ public class TurretUpdater : MonoBehaviour remove => _onTurretClicked.RemoveListener(value); } + public event UnityAction OnTurretUpgraded + { + add => _onTurretUpgraded.AddListener(value); + remove => _onTurretUpgraded.RemoveListener(value); + } + private Turret _clickedTurret; private bool _isDestroyingTurret; @@ -81,6 +88,7 @@ public class TurretUpdater : MonoBehaviour _wallet.TakeMoney(ClickedTurret.UpgradeCost); ClickedTurret.Upgrade(); + _onTurretUpgraded?.Invoke(ClickedTurret); } private void SellTurret() diff --git a/Assets/Scripts/UI/TurretUpgradeViewer.cs b/Assets/Scripts/UI/TurretUpgradeViewer.cs index e2ecb8a..535a19d 100644 --- a/Assets/Scripts/UI/TurretUpgradeViewer.cs +++ b/Assets/Scripts/UI/TurretUpgradeViewer.cs @@ -1,5 +1,6 @@ using UnityEngine; using UnityEngine.UI; +using static UnityEngine.GraphicsBuffer; public class TurretUpgradeViewer : MonoBehaviour { @@ -15,12 +16,14 @@ public class TurretUpgradeViewer : MonoBehaviour { _wallet.OnMoneyChanged += OnMoneyChanged; _turretUpdater.OnTurretClicked += OnTurretClicked; + _turretUpdater.OnTurretUpgraded += UpdateBtn; } private void OnDisable() { _wallet.OnMoneyChanged -= OnMoneyChanged; _turretUpdater.OnTurretClicked -= OnTurretClicked; + _turretUpdater.OnTurretUpgraded -= UpdateBtn; } private void OnMoneyChanged(int newMoney) @@ -37,6 +40,11 @@ public class TurretUpgradeViewer : MonoBehaviour } _viewerHolder.gameObject.SetActive(true); + UpdateBtn(turret); + } + + private void UpdateBtn(Turret turret) + { _upgradeCost = turret.UpgradeCost; _upgradeCostText.text = _upgradeCost.ToString(); _upgradeButton.interactable = _wallet.Money >= _upgradeCost;