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.gd52
1 files changed, 30 insertions, 22 deletions
diff --git a/Stages/Wintermaul/HUD.gd b/Stages/Wintermaul/HUD.gd
index b9b831f..82bf2ef 100644
--- a/Stages/Wintermaul/HUD.gd
+++ b/Stages/Wintermaul/HUD.gd
@@ -2,10 +2,14 @@ class_name HUD
extends CanvasLayer
+@export var stage: Stage
+@export var state_manager: StateManager
@export var selection_manager: SelectionManager
@export var money_manager: MoneyManager
@export var notification_manager: NotificationManager
+@export var local_player: Player: set = set_local_player
+
@onready var time: Label = %Time
@onready var money: Label = %Money
@onready var income: Label = %Income
@@ -15,28 +19,17 @@ extends CanvasLayer
@onready var lives_top: Label = %LivesTop
@onready var lives_bottom: Label = %LivesBottom
+@onready var tower_configurations_container: PanelContainer = %TowerConfigurationsContainer
@onready var status_messages: Control = %StatusMessages
func _ready():
- Client.player.money_changed.connect(func():
- money.text = "Money: " + str(Client.player.money)
- )
- Client.player.income_changed.connect(func():
- income.text = "Income: " + str(Client.player.income)
+ stage.lives_changed.connect(func():
+ lives_top.text = "Lives: %02d" % stage.teams.top.lives
+ lives_bottom.text = "Lives: %02d" % stage.teams.bottom.lives
)
- Client.current_stage.lives_changed.connect(func():
- lives_top.text = "Lives: %02d" % Client.current_stage.teams.top.lives
- lives_bottom.text = "Lives: %02d" % Client.current_stage.teams.bottom.lives
- )
-
- Client.stage_state_changed.connect(func(state: State):
- if state is StateBuild:
- %TowerConfigurationsContainer.visible = true
- else:
- %TowerConfigurationsContainer.visible = false
- )
+ tower_configurations_container.visible = false
# multi select setup
%SelectionContainer.visible = false
@@ -116,6 +109,7 @@ func _ready():
func _input(event: InputEvent):
if event.is_action_pressed("spawn_box_toggle"):
spawn_box.visible = not spawn_box.visible
+
if event.is_action_pressed("players_list_toggle"):
team_top.visible = not team_top.visible
team_bottom.visible = not team_bottom.visible
@@ -127,6 +121,20 @@ func _input(event: InputEvent):
selection_manager.go_to_next()
+func set_local_player(player: Player) -> void:
+ local_player = player
+
+ var money_changed := func():
+ money.text = "Money: " + str(Client.player.money)
+ var income_changed := func():
+ income.text = "Income: " + str(Client.player.income)
+
+ if not local_player.money_changed.is_connected(money_changed):
+ local_player.money_changed.connect(money_changed)
+ if not local_player.income_changed.is_connected(income_changed):
+ local_player.income_changed.connect(income_changed)
+
+
func redraw_select(tower: Tower):
%TowerData.current_tower = tower
@@ -137,8 +145,8 @@ func redraw_multiselect(previous_group: String = "", new_group: String = selecti
var group = selection_manager.selection_groups[id]
for node: Tower in group:
# when double click selecting in quick succession not found error
- if (node.has_meta("multi_select_hud") and
- is_instance_valid(node.get_meta("multi_select_hud"))
+ if (node.has_meta("multi_select_hud") #and
+ #is_instance_valid(node.get_meta("multi_select_hud"))
):
%MultiSelectionList.move_child(node.get_meta("multi_select_hud"), idx)
idx += 1
@@ -161,10 +169,10 @@ func redraw_multiselect(previous_group: String = "", new_group: String = selecti
func _on_build_mode_button_gui_input(event: InputEvent) -> void:
if event.is_action_pressed("select"):
- if Client.state is StateDefault:
- get_tree().current_scene.get_node("StateManager").set_state("StateBuild")
- elif Client.state is StateBuild:
- get_tree().current_scene.get_node("StateManager").set_state("StateDefault")
+ if state_manager.current_state == state_manager.state_default:
+ state_manager.set_state(state_manager.state_build)
+ elif state_manager.current_state == state_manager.state_build:
+ state_manager.set_state(state_manager.state_default)
func _on_spawner_box_button_gui_input(event: InputEvent) -> void: