@tool extends Control const BUTTON_QTY = 8 const guiButton : PackedScene = preload("res://UI/gui_button.tscn") @onready var buttonContainer = %ButtonContainer @onready var moneyLabel = %LabelMoney @onready var towerInCubeLabel = %LabelTowerInCube @onready var towerOnTerrainLabel = %LabelTowerOnTerrain @onready var cubeIntegrity = %CubeIntegrity var theCube : TheCube var allowedTowers : Array[Tower.TYPE] func _ready() -> void: addTowerButtonNodes() EventBus.cube_ready.connect(cubeReady) EventBus.allowedTowerHasChange.connect(allowedTowerHasChange) EventBus.money_changed.connect(func(amount): moneyLabel.text = str(amount) + " €") EventBus.team_in_rest_changed.connect(func(count): towerInCubeLabel.text = str(count) + " x Zzz") EventBus.team_in_action_changed.connect(func(count): towerOnTerrainLabel.text = str(count) + " in action") EventBus.cube_integrity_changed.connect(updateCubeLife) func _on_button_cube_pressed() -> void: pass # Replace with function body. func cubeReady(cube: TheCube) -> void: theCube = cube cubeIntegrity.max_value = theCube.max_health func updateCubeLife(newHealth : int) -> void: cubeIntegrity.value = float(newHealth) / float(theCube.max_health) * 100.0 func quitLevel() -> void: Transition.goto("res://UI/start_menu.tscn") func quitGame() -> 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 towerType in Game.towers: if not Engine.is_editor_hint() && not allowedTowers.has(towerType): additionalPlaceholder += 1 else: createTowerButton(towerType) for i in BUTTON_QTY - Game.towers.size() + additionalPlaceholder: var placeholderBtn : Button = Button.new() placeholderBtn.set_meta("dynamicButton", true) placeholderBtn.custom_minimum_size = Vector2(80, 80) buttonContainer.add_child(placeholderBtn) func createTowerButton(towerType : Tower.TYPE) -> void: var towerBtn : GuiButton = guiButton.instantiate() var tower : PackedScene = Game.towers.get(towerType) towerBtn.towerType = towerType towerBtn.tooltip_text = str(EnhancedResource.getPackedSceneProperty(tower, "name")) towerBtn.texture = EnhancedResource.getPackedSceneProperty(tower, "icone") towerBtn.set_meta("dynamicButton", true) buttonContainer.add_child(towerBtn)