diff options
Diffstat (limited to 'Stages/Wintermaul/HUD.gd')
-rw-r--r-- | Stages/Wintermaul/HUD.gd | 52 |
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: |