@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) tower.state_changed.connect(updateDisabled) Game.money_changed.connect(updateDisabled) 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.selectable $EnergyBar.max_value = tower.max_energy $EnergyBar.visible = tower.selectable $LeFond.visible = tower.state == Tower.STATE.BLUEPRINT func updateDisabled() -> void: disabled = not tower.selectable