TowerDefense/UI/gui_button.gd
2025-09-06 17:32:54 +02:00

33 lines
886 B
GDScript

@tool
extends Button
class_name GuiButton
var towerPrice : int
var towerType : Tower.TYPE = Tower.TYPE.NONE
@export var texture : Texture2D :
set(value):
texture = value
$TextureRect.texture = texture
func _ready() -> void:
if towerType == Tower.TYPE.NONE:
return
toggle_mode = true
add_theme_stylebox_override("pressed", GameStyleBoxFlat.createWithColor(GameColor.COLOR.SELECTED))
EventBus.tower_changed.connect(towerChanged)
EventBus.tower_selected.connect(func(_type): set_pressed_no_signal(_type == towerType))
func buttonToggled(state : bool) -> void:
if towerType != Tower.TYPE.NONE:
EventBus.tower_selected.emit(towerType if state else Tower.TYPE.NONE)
func towerChanged(tower : Tower) -> void :
if tower.type == towerType && tower.builded:
$EnergyBar.value = tower.energy
$EnergyBar.max_value = tower.max_energy
$EnergyBar.visible = tower.builded