TowerDefense/UI/gui_button.gd
Varylios ef08992673 chore: improve UX + tower hitbox
- add tower hitbox
 - change selector icons
 - Cube selectable on map
2025-09-13 18:25:44 +02:00

41 lines
1.2 KiB
GDScript

@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))
EventBus.cube_selected.connect(func(): set_pressed_no_signal(false))
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