extends CanvasLayer var units_moved: Array[Unit] var units_attacked: Array[Unit] @onready var grid_selector: GridSelector = get_tree().get_first_node_in_group("grid_selector") func _ready() -> void: visible = false Network.current_player_changed.connect(func(): units_moved.clear() units_attacked.clear() ) 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 and Network.is_my_turn(): $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() $PanelContainer/VBoxContainer/Button.disabled = node in units_moved $PanelContainer/VBoxContainer/Button2.disabled = node in units_attacked ) grid_selector.move_mode_confirmed.connect(func(_path: Array): units_moved.append(grid_selector.current_entity) ) 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): if grid_selector.range_select_current_mode == GridSelectorStateRangeSelect.Mode.Attack: units_attacked.append(grid_selector.current_entity) 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() and not button.disabled: 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