TowerDefense/UI/UpgradeButton.gd

47 lines
919 B
GDScript

extends HBoxContainer
class_name UpgradeButton
var tower: Tower
var upgrade: Upgrade
@onready var upgradeBtn : Button = $UpgradeButton
func _ready() -> void:
Game.money_changed.connect(onMoneyChanged)
upgradeBtn.pressed.connect(onUpgradePressed)
func setUpgrade(_upgrade: Upgrade) -> void:
upgrade = _upgrade
updateVisuals()
func setTower(_tower: Tower) -> void:
tower = _tower
updateVisuals()
func onUpgradePressed() -> void:
if upgrade.upgrade(tower):
updateVisuals()
func updateVisuals() -> void:
$UpgradeName.text = upgrade.text
if upgrade.isLevelMax():
upgradeBtn.visible = false
if upgrade.level:
$UpgradeName.text += " Lvl. max"
return
if upgrade.level:
$UpgradeName.text += " Lvl. %d" % upgrade.level
upgradeBtn.text = "%d" % upgrade.cost
upgradeBtn.disabled = not upgrade.canUpgrade()
func onMoneyChanged() -> void:
upgradeBtn.disabled = not upgrade.canUpgrade()