diff options
Diffstat (limited to 'stage/hud_unit.gd')
-rw-r--r-- | stage/hud_unit.gd | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/stage/hud_unit.gd b/stage/hud_unit.gd new file mode 100644 index 0000000..b8351f7 --- /dev/null +++ b/stage/hud_unit.gd @@ -0,0 +1,65 @@ +extends CanvasLayer + + +@onready var grid_selector: GridSelector = get_tree().get_first_node_in_group("grid_selector") + + +func _ready() -> void: + visible = false + + grid_selector.selected.connect(func(node: Node2D): + grid_selector.process_mode = Node.PROCESS_MODE_DISABLED + visible = true + + if node.current_team == grid_selector.current_team: + $PanelContainer/VBoxContainer/Button.visible = true + $PanelContainer/VBoxContainer/Button2.visible = true + $PanelContainer/VBoxContainer/Button.grab_focus() + else: + $PanelContainer/VBoxContainer/Button.visible = false + $PanelContainer/VBoxContainer/Button2.visible = false + $PanelContainer/VBoxContainer/Button3.grab_focus() + ) + + grid_selector.move_mode_exited.connect(func(): + grid_selector.current_state = grid_selector.state_select + grid_selector.process_mode = Node.PROCESS_MODE_DISABLED + visible = true + $PanelContainer/VBoxContainer/Button.grab_focus() + ) + + grid_selector.range_select_confirmed.connect(func(grid_position: Vector2i, _entity: Node2D): + grid_selector.current_state = grid_selector.state_select + grid_selector.current_state.draw(grid_position) + ) + + grid_selector.range_select_exited.connect(func(): + grid_selector.current_state = grid_selector.state_select + ) + + +func _input(event: InputEvent) -> void: + if not visible: + return + + if event.is_action_pressed("left_click"): + for button: Button in $PanelContainer/VBoxContainer.get_children(): + if button.has_focus(): + button.pressed.emit() + break + + elif event.is_action_pressed("right_click"): + visible = false + grid_selector.process_mode = Node.PROCESS_MODE_INHERIT + + +func _on_button_pressed() -> void: + grid_selector.process_mode = Node.PROCESS_MODE_INHERIT + grid_selector.current_state = grid_selector.state_move_mode + visible = false + + +func _on_button_2_pressed() -> void: + grid_selector.process_mode = Node.PROCESS_MODE_INHERIT + grid_selector.current_state = grid_selector.state_range_select + visible = false |