@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 func _ready() -> void: addTowerButtonNodes() 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 addTowerButtonNodes() -> void: for node in buttonContainer.get_children(): if node.has_meta("dynamicButton"): node.queue_free() for towerResource in towerListResource.towers: if !towerResource || towerResource.towerType == Tower.TYPES.NONE: 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(): var placeholderBtn := Button.new() placeholderBtn.set_meta("dynamicButton", true) placeholderBtn.custom_minimum_size = Vector2(80, 80) buttonContainer.add_child(placeholderBtn)