summaryrefslogtreecommitdiff
path: root/Stages/Wintermaul/HUD.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Stages/Wintermaul/HUD.gd')
-rw-r--r--Stages/Wintermaul/HUD.gd50
1 files changed, 47 insertions, 3 deletions
diff --git a/Stages/Wintermaul/HUD.gd b/Stages/Wintermaul/HUD.gd
index b6722ae..6eeb7da 100644
--- a/Stages/Wintermaul/HUD.gd
+++ b/Stages/Wintermaul/HUD.gd
@@ -2,9 +2,9 @@ class_name HUD
extends CanvasLayer
+@onready var time: Label = %Time
@onready var money: Label = %Money
@onready var income: Label = %Income
-@onready var tower: Label = %Tower
@onready var spawn_box: Control = %SpawnBox
@onready var team_top: PanelContainer = %TeamTop
@onready var team_bottom: PanelContainer = %TeamBottom
@@ -27,9 +27,53 @@ func _ready():
Client.stage_state_changed.connect(func(state: State):
if state is StateBuild:
- $TowerConfigurationsContainer.visible = true
+ %TowerConfigurationsContainer.visible = true
else:
- $TowerConfigurationsContainer.visible = false
+ %TowerConfigurationsContainer.visible = false
+ )
+
+ # TODO: fix multi select
+ %SelectionContainer.visible = false
+ %SelectionData.get_child(0).queue_free()
+ %MultiSelectionContainer.visible = false
+ Client.placed_tower.connect(func(tower: Tower):
+ tower.selected.connect(func():
+ var hud_data = tower.get_hud()
+ hud_data.name = tower.name
+
+ var groups = {"md5:1": [], "md5_2": []}
+ var selected_group = "md5"
+ # TODO: build groups from current component configurations matches. md5 of property values?
+ # TODO: do in tower.gd at select?
+
+ if Tower.selected_towers.size() == 1:
+ %SelectionContainer.visible = true
+ %MultiSelectionContainer.visible = false
+
+ %SelectionData.add_child(hud_data)
+ %MultiSelectionList.add_child(hud_data.duplicate())
+ elif Tower.selected_towers.size() > 1:
+ %SelectionContainer.visible = false
+ %MultiSelectionContainer.visible = true
+
+ %MultiSelectionList.add_child(hud_data)
+ )
+ tower.deselected.connect(func():
+ if Tower.selected_towers.size() == 0:
+ %SelectionContainer.visible = false
+ %MultiSelectionContainer.visible = false
+
+ for child in %SelectionData.get_children():
+ child.queue_free()
+ for child in %MultiSelectionList.get_children():
+ child.queue_free()
+ elif Tower.selected_towers.size() == 1:
+ %MultiSelectionContainer.visible = false
+ %SelectionContainer.visible = true
+ elif Tower.selected_towers.size() > 1:
+ # only remove deselected tower from list
+ %MultiSelectionList.get_node(NodePath(tower.name)).queue_free()
+ )
)