2025-09-04 17:59:23 +02:00
|
|
|
extends HBoxContainer
|
|
|
|
|
|
|
|
|
|
|
2025-09-05 19:33:56 +02:00
|
|
|
const upgradeBtnScene : PackedScene = preload("res://UI/upgrade_button.tscn")
|
|
|
|
|
|
2025-09-04 17:59:23 +02:00
|
|
|
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
|
|
|
|
|
$PanelContainer2.visible = false
|
2025-09-09 19:29:29 +02:00
|
|
|
createTowerUpgradeButtons(Game.upgrades)
|
2025-09-04 17:59:23 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
2025-09-04 17:59:23 +02:00
|
|
|
if towerType == Tower.TYPE.NONE:
|
|
|
|
|
tower = null
|
2025-09-07 19:48:58 +02:00
|
|
|
visible = false
|
2025-09-04 17:59:23 +02:00
|
|
|
return
|
|
|
|
|
|
2025-09-07 19:48:58 +02:00
|
|
|
$PanelContainer2.visible = true
|
2025-09-05 04:07:17 +02:00
|
|
|
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)
|
2025-09-04 17:59:23 +02:00
|
|
|
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-04 17:59:23 +02:00
|
|
|
|
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
|
|
|
|
|
%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
|
2025-09-05 19:33:56 +02:00
|
|
|
|
2025-09-06 22:08:29 +02:00
|
|
|
if tower.builded && not %UpgradeContainer.visible:
|
2025-09-09 19:29:29 +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 && not tower.builded:
|
|
|
|
|
%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)
|