@tool extends Button class_name GuiButton var tower : Tower : set = towerLinked @export var texture : Texture2D : set(value): texture = value $TextureRect.texture = texture func towerLinked(value) -> void: tower = value if not tower: return $LeFond/Label.text = "%d €" % tower.price toggle_mode = true add_theme_stylebox_override("pressed", GameStyleBoxFlat.createWithColor(GameColor.COLOR.SELECTED)) tower.changed.connect(onTowerChanged) tower.energy_changed.connect(func(): $EnergyBar.value = tower.energy) Game.money_changed.connect(onMoneyChanged) EventBus.tower_selected.connect(func(_type): set_pressed_no_signal(_type == tower.type)) toggled.connect(func(state): EventBus.tower_selected.emit(tower.type if state else Tower.TYPE.NONE)) tooltip_text = tower.name texture = tower.icone onTowerChanged() func onTowerChanged() -> void : disabled = not tower.builded && Game.money < tower.price $EnergyBar.max_value = tower.max_energy $EnergyBar.visible = tower.builded $LeFond.visible = not tower.builded func onMoneyChanged() -> void: disabled = not tower.builded && Game.money < tower.price