63 lines
1.8 KiB
GDScript
63 lines
1.8 KiB
GDScript
@tool
|
|
extends Control
|
|
|
|
const BUTTON_QTY = 12
|
|
|
|
const towerButton := preload("res://UI/tower_button.tscn")
|
|
var towerListResource := preload("res://Towers/towers.tres")
|
|
|
|
@onready var buttonContainer = $HBoxContainer/ControlPanelBase/MarginContainer/GridContainer
|
|
|
|
var allowedTowers : Array[Tower.TYPE]
|
|
|
|
|
|
func _ready() -> void:
|
|
addTowerButtonNodes()
|
|
EventBus.allowedTowerHasChange.connect(allowedTowerHasChange)
|
|
if Engine.is_editor_hint():
|
|
towerListResource.changed.connect(addTowerButtonNodes)
|
|
|
|
|
|
func _on_button_cube_pressed() -> void:
|
|
pass # Replace with function body.
|
|
|
|
|
|
func _on_button_quit_level_pressed() -> void:
|
|
Transition.goto("res://UI/start_menu.tscn")
|
|
|
|
|
|
func _on_button_quit_game_pressed() -> void:
|
|
get_tree().quit()
|
|
|
|
|
|
func allowedTowerHasChange(_allowedTowers : Array[Tower.TYPE]) -> void:
|
|
allowedTowers = _allowedTowers
|
|
if is_node_ready():
|
|
addTowerButtonNodes()
|
|
|
|
|
|
func addTowerButtonNodes() -> void:
|
|
for node in buttonContainer.get_children():
|
|
if node.has_meta("dynamicButton"):
|
|
node.queue_free()
|
|
|
|
var additionalPlaceholder : int = 0
|
|
for towerResource in towerListResource.towers:
|
|
if !towerResource || not allowedTowers.has(towerResource.towerType):
|
|
additionalPlaceholder += 1
|
|
continue
|
|
|
|
var towerBtn := towerButton.instantiate()
|
|
var tower : Tower = towerResource.towerScene.instantiate()
|
|
towerBtn.towerType = tower.tower_type
|
|
towerBtn.tooltip_text = tower.name
|
|
towerBtn.setButtonTexture(tower.icone)
|
|
towerBtn.set_meta("dynamicButton", true)
|
|
tower.queue_free()
|
|
buttonContainer.add_child(towerBtn)
|
|
|
|
for i in BUTTON_QTY - towerListResource.towers.size() + additionalPlaceholder:
|
|
var placeholderBtn := Button.new()
|
|
placeholderBtn.set_meta("dynamicButton", true)
|
|
placeholderBtn.custom_minimum_size = Vector2(80, 80)
|
|
buttonContainer.add_child(placeholderBtn)
|