2025-09-02 19:49:40 +02:00
|
|
|
@tool
|
|
|
|
|
extends Button
|
|
|
|
|
class_name GuiButton
|
|
|
|
|
|
|
|
|
|
|
2025-09-06 22:08:29 +02:00
|
|
|
var tower : Tower : set = towerLinked
|
2025-09-02 19:49:40 +02:00
|
|
|
@export var texture : Texture2D :
|
|
|
|
|
set(value):
|
|
|
|
|
texture = value
|
|
|
|
|
$TextureRect.texture = texture
|
|
|
|
|
|
|
|
|
|
|
2025-09-06 22:08:29 +02:00
|
|
|
func towerLinked(value) -> void:
|
|
|
|
|
tower = value
|
|
|
|
|
if not tower:
|
2025-09-06 17:32:46 +02:00
|
|
|
return
|
|
|
|
|
|
2025-09-06 22:08:29 +02:00
|
|
|
$LeFond/Label.text = "%d €" % tower.price
|
2025-09-06 17:32:46 +02:00
|
|
|
toggle_mode = true
|
|
|
|
|
add_theme_stylebox_override("pressed", GameStyleBoxFlat.createWithColor(GameColor.COLOR.SELECTED))
|
2025-09-06 23:26:37 +02:00
|
|
|
tower.changed.connect(onTowerChanged)
|
2025-09-06 22:08:29 +02:00
|
|
|
tower.energy_changed.connect(func(): $EnergyBar.value = tower.energy)
|
2025-09-06 23:26:37 +02:00
|
|
|
Game.money_changed.connect(onMoneyChanged)
|
2025-09-06 22:08:29 +02:00
|
|
|
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
|
2025-09-06 23:26:37 +02:00
|
|
|
onTowerChanged()
|
2025-09-06 22:08:29 +02:00
|
|
|
|
|
|
|
|
|
2025-09-06 23:26:37 +02:00
|
|
|
func onTowerChanged() -> void :
|
2025-09-06 22:08:29 +02:00
|
|
|
disabled = not tower.builded && Game.money < tower.price
|
|
|
|
|
$EnergyBar.max_value = tower.max_energy
|
|
|
|
|
$EnergyBar.visible = tower.builded
|
|
|
|
|
$LeFond.visible = not tower.builded
|
2025-09-06 23:26:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
func onMoneyChanged() -> void:
|
|
|
|
|
disabled = not tower.builded && Game.money < tower.price
|