TowerDefense/UI/TowerPanel.gd

50 lines
1.3 KiB
GDScript3
Raw Normal View History

extends HBoxContainer
2025-09-05 19:33:56 +02:00
const upgradeBtnScene : PackedScene = preload("res://UI/upgrade_button.tscn")
var tower : Tower
func _ready() -> void:
EventBus.tower_selected.connect(onTowerSelected)
2025-09-05 19:33:56 +02:00
EventBus.tower_changed.connect(onTowerChange)
func onTowerSelected(towerType : Tower.TYPE) -> void:
if towerType == Tower.TYPE.NONE:
visible = false
tower = null
return
tower = Game.towers.get(towerType)
visible = true
2025-09-05 19:33:56 +02:00
onTowerChange(tower)
if not tower.builded:
%UpgradeContainer.visible = false
return
2025-09-05 19:33:56 +02:00
createTowerUpgradeButton()
2025-09-05 19:33:56 +02:00
func onTowerChange(_tower : Tower) -> void:
if _tower == tower:
2025-09-05 19:33:56 +02:00
%TowerIcon.texture = tower.icone
%TowerName.text = tower.tower_name
%TowerDamage.text = "Dmg : %d" % tower.projectileRessource.damage
%TowerCooldown.text = "cooldown : %.1f" % tower.action_cooldown
# TODO Check for better UI to display it
#%TowerBio.text = tower.bio
%TowerEnergy.text = "%d/%d" % [ tower.energy, tower.max_energy ]
2025-09-05 19:33:56 +02:00
func createTowerUpgradeButton() -> void:
%UpgradeContainer.visible = true
%UpgradeContainer.get_children().map(func(btn): btn.queue_free())
for upgrade in tower.upgrades:
prints(upgrade.baseCost, upgrade.cost)
var btn : UpgradeButton = upgradeBtnScene.instantiate()
%UpgradeContainer.add_child(btn)
btn.setData(tower, upgrade)