TowerDefense/UI/InfoPanel.gd

67 lines
1.7 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-07 19:48:58 +02:00
EventBus.cube_selected.connect(onCubeSelected)
func onCubeSelected() -> void:
visible = true
$InfoContainer.visible = false
2025-09-09 19:29:29 +02:00
createTowerUpgradeButtons(Game.upgrades)
func onTowerSelected(towerType : Tower.TYPE) -> void:
2025-09-06 22:08:29 +02:00
if tower:
tower.energy_changed.disconnect(onEnergyChange)
tower.changed.disconnect(onTowerChange)
if towerType == Tower.TYPE.NONE:
tower = null
2025-09-07 19:48:58 +02:00
visible = false
return
$InfoContainer.visible = true
tower = Game.towers.get(towerType)
2025-09-06 22:08:29 +02:00
tower.energy_changed.connect(onEnergyChange)
tower.changed.connect(onTowerChange)
2025-09-09 19:29:29 +02:00
createTowerUpgradeButtons(tower.upgrades)
visible = true
2025-09-06 22:08:29 +02:00
onTowerChange()
func onEnergyChange() -> void:
%TowerEnergy.text = "%d/%d" % [ tower.energy, tower.max_energy ]
2025-09-05 19:33:56 +02:00
2025-09-06 22:08:29 +02:00
func onTowerChange() -> void:
onEnergyChange()
%TowerIcon.texture = tower.icone
%TowerName.text = tower.tower_name
2025-09-14 22:54:54 +02:00
%TowerDamage.text = "Dmg : %d" % tower.damage
2025-09-06 22:08:29 +02:00
%TowerCooldown.text = "cooldown : %.1f" % tower.action_cooldown
# TODO Check for better UI to display it
#%TowerBio.text = tower.bio
2025-09-05 19:33:56 +02:00
createTowerUpgradeButtons(tower.upgrades)
2025-09-06 00:05:22 +02:00
2025-09-05 19:33:56 +02:00
2025-09-09 19:29:29 +02:00
func createTowerUpgradeButtons(upgrades : Array) -> void:
if tower && tower.state == Tower.STATE.BLUEPRINT:
2025-09-09 19:29:29 +02:00
%UpgradeContainer.visible = false
return
2025-09-05 19:33:56 +02:00
%UpgradeContainer.visible = true
%UpgradeContainer.get_children().map(func(btn): btn.queue_free())
2025-09-09 19:29:29 +02:00
for upgrade in upgrades:
2025-09-05 19:33:56 +02:00
var btn : UpgradeButton = upgradeBtnScene.instantiate()
%UpgradeContainer.add_child(btn)
2025-09-07 19:48:58 +02:00
btn.setUpgrade(upgrade)
2025-09-09 19:29:29 +02:00
if tower:
btn.setTower(tower)