extends HBoxContainer const upgradeBtnScene : PackedScene = preload("res://UI/upgrade_button.tscn") var tower : Tower func _ready() -> void: EventBus.tower_selected.connect(onTowerSelected) EventBus.cube_selected.connect(onCubeSelected) func onCubeSelected() -> void: visible = true $PanelContainer2.visible = false createTowerUpgradeButtons(Game.upgrades) func onTowerSelected(towerType : Tower.TYPE) -> void: if tower: tower.energy_changed.disconnect(onEnergyChange) tower.changed.disconnect(onTowerChange) if towerType == Tower.TYPE.NONE: tower = null visible = false return $PanelContainer2.visible = true tower = Game.towers.get(towerType) tower.energy_changed.connect(onEnergyChange) tower.changed.connect(onTowerChange) createTowerUpgradeButtons(tower.upgrades) visible = true onTowerChange() func onEnergyChange() -> void: %TowerEnergy.text = "%d/%d" % [ tower.energy, tower.max_energy ] 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 if tower.builded && not %UpgradeContainer.visible: createTowerUpgradeButtons(tower.upgrades) func createTowerUpgradeButtons(upgrades : Array) -> void: if tower && not tower.builded: %UpgradeContainer.visible = false return %UpgradeContainer.visible = true %UpgradeContainer.get_children().map(func(btn): btn.queue_free()) for upgrade in upgrades: var btn : UpgradeButton = upgradeBtnScene.instantiate() %UpgradeContainer.add_child(btn) btn.setUpgrade(upgrade) if tower: btn.setTower(tower)