diff options
Diffstat (limited to 'pause_menu.gd')
| -rw-r--r-- | pause_menu.gd | 67 |
1 files changed, 29 insertions, 38 deletions
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 _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() - - active_map_room = $Map.get_node_or_null(map_room_name) - - 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 - -func activate(): - active_page_index = 0 - visible = true +func _on_tree_entered() -> void: get_tree().paused = true get_tree().call_group("ui_movement", "set_visible", false) - refresh_page() - -func deactivate(): - 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 refresh_page(): - for i in range(pages.size()): - pages[i].visible = (active_page_index == i) +func _process(_delta: float): + if visible and Input.is_action_just_pressed("action"): + set_page((active_page_index + 1) % pages.size()) -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() +func get_map() -> PauseMenuMap: + for page in pages: + if page is PauseMenuMap: return page + + return null + +func set_page(i: int): + var prev_page = pages[active_page_index] + remove_child.call_deferred(prev_page) + + active_page_index = i + add_child.call_deferred(pages[i]) |
