public virtual void Show(TowerAgent target) { if (target == null) { return; } myTower = target; AdjustPosition(); this.gameObject.SetActive(true); int sellValue = myTower.GetSellLevel(); if (upgradeButton != null) { upgradeButton.interactable = BattleField.instance.currency.CanAfford(myTower.GetCostForNextLevel()); bool maxLevel = target.isAtMaxLevel; upgradeButton.gameObject.SetActive(!maxLevel); if (!maxLevel) { //Debug.Log(target.GetNextUpgradeAgents()[0].UpgradeDescription.ToUpper()); } } XEventBus.Instance.Register(EventId.CurrencyChanged, OnCurrencyChanged); }
public void OnCurrencyChanged(XEventArgs args) { if (myTower != null && upgradeButton != null) { upgradeButton.interactable = BattleField.instance.currency.CanAfford(myTower.GetCostForNextLevel()); } }
public void UpgradeSelectedTarget() { if (state != State.Normal) { throw new InvalidOperationException("Trying to upgrade whilst not in Normal state"); } if (currentSelectedTarget == null) { throw new InvalidOperationException("Selected Target is null"); } if (currentSelectedTarget.isAtMaxLevel) { return; } int upgradeCost = currentSelectedTarget.GetCostForNextLevel(); bool successfulUpgrade = BattleField.instance.currency.TryPurchase(upgradeCost); if (successfulUpgrade) { currentSelectedTarget.UpgradeTarget(); } DeselectTarget(); }