summaryrefslogtreecommitdiffstats
path: root/pause_menu.gd
diff options
context:
space:
mode:
Diffstat (limited to 'pause_menu.gd')
-rw-r--r--pause_menu.gd67
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])