From b532e98ecdbd449da63962cc6db3feef62dbe857 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sat, 29 Nov 2025 14:10:32 +0200 Subject: Rework pause menu --- pause_menu.gd | 67 ++++++++++++++++++++++++++--------------------------------- 1 file changed, 29 insertions(+), 38 deletions(-) (limited to 'pause_menu.gd') diff --git a/pause_menu.gd b/pause_menu.gd index e13d6d6..ce09867 100644 --- a/pause_menu.gd +++ b/pause_menu.gd @@ -1,50 +1,41 @@ class_name PauseMenu extends CanvasLayer -var active_map_room: MapRoom -var active_page_index: int = 0 -@export var pages: Array[Node] +var active_page_index: int +var pages: Array[PauseMenuPage] = [] func _ready(): - deactivate() - $System/QuitButton.grab_focus.call_deferred() - $System/QuitButton.connect("pressed", _on_quit_button_pressed) + pages = [] + var children = get_children() + for child in children: + if child is PauseMenuPage: + pages.push_back(child) + remove_child.call_deferred(child) + +func _on_tree_entered() -> void: + get_tree().paused = true + get_tree().call_group("ui_movement", "set_visible", false) + + if pages.size() > 0: + set_page(0) + +func _exit_tree(): + get_tree().paused = false + get_tree().call_group("ui_movement", "set_visible", true) func _process(_delta: float): if visible and Input.is_action_just_pressed("action"): - active_page_index = (active_page_index + 1) % pages.size() - refresh_page() - -func set_room_name(map_room_name: String): - if active_map_room: active_map_room.unhighlight() + set_page((active_page_index + 1) % pages.size()) - active_map_room = $Map.get_node_or_null(map_room_name) +func get_map() -> PauseMenuMap: + for page in pages: + if page is PauseMenuMap: return page - if active_map_room: - active_map_room.highlight() - var pos = active_map_room.position - var size = get_viewport().get_visible_rect().size - var delta = Vector2(size.x / 2, size.y / 2) - $Map.position = -pos + delta - active_map_room.size / 2 + return null -func activate(): - active_page_index = 0 - visible = true - get_tree().paused = true - get_tree().call_group("ui_movement", "set_visible", false) - refresh_page() +func set_page(i: int): + var prev_page = pages[active_page_index] + remove_child.call_deferred(prev_page) -func deactivate(): - visible = false - get_tree().paused = false - get_tree().call_group("ui_movement", "set_visible", true) - -func refresh_page(): - for i in range(pages.size()): - pages[i].visible = (active_page_index == i) - -func _on_quit_button_pressed() -> void: - if not visible: return - var top: Top = get_tree().root.get_node("Top") - top.get_transition_player().room_transition(null, "res://room_main_menu.tscn", null) - deactivate() + active_page_index = i + add_child.call_deferred(pages[i]) -- cgit v1.3