diff options
| -rw-r--r-- | docs/index.html | 2 | ||||
| -rw-r--r-- | docs/index.pck | bin | 3865560 -> 4103672 bytes | |||
| -rw-r--r-- | docs/index.service.worker.js | 2 | ||||
| -rw-r--r-- | pause_menu.gd | 67 | ||||
| -rw-r--r-- | pause_menu_map.gd | 16 | ||||
| -rw-r--r-- | pause_menu_map.gd.uid | 1 | ||||
| -rw-r--r-- | pause_menu_page.gd | 2 | ||||
| -rw-r--r-- | pause_menu_page.gd.uid | 1 | ||||
| -rw-r--r-- | pause_menu_status.gd | 12 | ||||
| -rw-r--r-- | pause_menu_status.gd.uid | 1 | ||||
| -rw-r--r-- | pause_menu_system.gd | 13 | ||||
| -rw-r--r-- | pause_menu_system.gd.uid | 1 | ||||
| -rw-r--r-- | top.gd | 24 | ||||
| -rw-r--r-- | top.tscn | 16 | ||||
| -rw-r--r-- | transition_player.gd | 2 |
15 files changed, 102 insertions, 58 deletions
diff --git a/docs/index.html b/docs/index.html index 1e16f0c..169027f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -112,7 +112,7 @@ body { <script src="index.js"></script> <script> -const GODOT_CONFIG = {"args":[],"canvasResizePolicy":2,"emscriptenPoolSize":8,"ensureCrossOriginIsolationHeaders":true,"executable":"index","experimentalVK":false,"fileSizes":{"index.pck":3865560,"index.wasm":38034280},"focusCanvas":true,"gdextensionLibs":[],"godotPoolSize":4,"serviceWorker":"index.service.worker.js"}; +const GODOT_CONFIG = {"args":[],"canvasResizePolicy":2,"emscriptenPoolSize":8,"ensureCrossOriginIsolationHeaders":true,"executable":"index","experimentalVK":false,"fileSizes":{"index.pck":4103672,"index.wasm":38034280},"focusCanvas":true,"gdextensionLibs":[],"godotPoolSize":4,"serviceWorker":"index.service.worker.js"}; const GODOT_THREADS_ENABLED = false; const engine = new Engine(GODOT_CONFIG); diff --git a/docs/index.pck b/docs/index.pck Binary files differindex 2ef95fb..5d8229f 100644 --- a/docs/index.pck +++ b/docs/index.pck diff --git a/docs/index.service.worker.js b/docs/index.service.worker.js index 362e564..8042528 100644 --- a/docs/index.service.worker.js +++ b/docs/index.service.worker.js @@ -4,7 +4,7 @@ // Incrementing CACHE_VERSION will kick off the install event and force // previously cached resources to be updated from the network. /** @type {string} */ -const CACHE_VERSION = '1764413754|33126432540'; +const CACHE_VERSION = '1764418222|37594676000'; /** @type {string} */ const CACHE_PREFIX = 'MobileMetroidvan-sw-cache-'; const CACHE_NAME = CACHE_PREFIX + CACHE_VERSION; 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]) diff --git a/pause_menu_map.gd b/pause_menu_map.gd new file mode 100644 index 0000000..2f01ab4 --- /dev/null +++ b/pause_menu_map.gd @@ -0,0 +1,16 @@ +class_name PauseMenuMap +extends PauseMenuPage + +var active_map_room: MapRoom + +func _on_tree_entered() -> void: + 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) + position = -pos + delta - active_map_room.size / 2 + +func set_room_name(n: String): + if active_map_room: active_map_room.unhighlight() + active_map_room = get_node_or_null(n) diff --git a/pause_menu_map.gd.uid b/pause_menu_map.gd.uid new file mode 100644 index 0000000..1403f10 --- /dev/null +++ b/pause_menu_map.gd.uid @@ -0,0 +1 @@ +uid://cne4ie2ej80h6 diff --git a/pause_menu_page.gd b/pause_menu_page.gd new file mode 100644 index 0000000..250112c --- /dev/null +++ b/pause_menu_page.gd @@ -0,0 +1,2 @@ +@abstract class_name PauseMenuPage +extends CanvasGroup diff --git a/pause_menu_page.gd.uid b/pause_menu_page.gd.uid new file mode 100644 index 0000000..bbb95df --- /dev/null +++ b/pause_menu_page.gd.uid @@ -0,0 +1 @@ +uid://cc0ha3xofo5ju diff --git a/pause_menu_status.gd b/pause_menu_status.gd new file mode 100644 index 0000000..8411909 --- /dev/null +++ b/pause_menu_status.gd @@ -0,0 +1,12 @@ +class_name PauseMenuStatus +extends PauseMenuPage + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/pause_menu_status.gd.uid b/pause_menu_status.gd.uid new file mode 100644 index 0000000..745ec63 --- /dev/null +++ b/pause_menu_status.gd.uid @@ -0,0 +1 @@ +uid://blwdf7vxrmw35 diff --git a/pause_menu_system.gd b/pause_menu_system.gd new file mode 100644 index 0000000..404fe28 --- /dev/null +++ b/pause_menu_system.gd @@ -0,0 +1,13 @@ +class_name PauseMenuSystem +extends PauseMenuPage + +func _on_tree_entered() -> void: + $QuitButton.grab_focus.call_deferred() + $QuitButton.connect("pressed", _on_quit_button_pressed) + +func _on_quit_button_pressed() -> void: + var menu: PauseMenu = get_parent() + var top: Top = menu.get_parent() + + top.get_transition_player().room_transition(null, "res://room_main_menu.tscn", null) + top.handle_pause() diff --git a/pause_menu_system.gd.uid b/pause_menu_system.gd.uid new file mode 100644 index 0000000..60172c2 --- /dev/null +++ b/pause_menu_system.gd.uid @@ -0,0 +1 @@ +uid://ckxfshqn3pxqr @@ -5,13 +5,17 @@ const ROOM_MAIN_MENU: String = "res://room_main_menu.tscn" const ROOM_NEW_GAME: String = "res://room_test1.tscn" var active_room_name: String +var pause_menu: PauseMenu func _ready() -> void: if not OS.is_debug_build(): $DebugInfo.queue_free() print("data_dir: \"%s\"" % OS.get_user_data_dir()) - $PauseMenu.deactivate() + + pause_menu = $PauseMenu + remove_child.call_deferred(pause_menu) + get_tree().call_group("ui_movement", "set_visible", false) get_tree().call_group("ui_menu", "set_visible", false) get_tree().call_group("ui_action", "set_visible", false) @@ -24,10 +28,7 @@ func _ready() -> void: func _process(_delta: float): if Input.is_action_just_pressed("menu"): - if $PauseMenu.visible: - close_pause_menu() - elif active_room_name != "MainMenu": - open_pause_menu() + handle_pause() func replace_active_room(new_room: Node, on_changed: Callable): var current_room = get_node("ActiveRoom") @@ -45,17 +46,14 @@ func replace_active_room(new_room: Node, on_changed: Callable): new_room.process_mode = Node.PROCESS_MODE_PAUSABLE add_child(new_room) -func get_pause_menu() -> PauseMenu: - return $PauseMenu - func get_transition_player() -> TransitionPlayer: return $TransitionPlayer -func open_pause_menu(): - $PauseMenu.activate() - -func close_pause_menu(): - $PauseMenu.deactivate() +func handle_pause(): + if pause_menu.is_inside_tree(): + remove_child.call_deferred(pause_menu) + else: + add_child.call_deferred(pause_menu) # Save state logic @@ -1,12 +1,15 @@ -[gd_scene load_steps=13 format=3 uid="uid://cey3jxnpmommt"] +[gd_scene load_steps=16 format=3 uid="uid://cey3jxnpmommt"] [ext_resource type="Material" uid="uid://bb4b8jm2tyy81" path="res://mat_palette.tres" id="1_edsjh"] [ext_resource type="Script" uid="uid://dxbspy72bg0db" path="res://top.gd" id="1_on2c2"] [ext_resource type="Script" uid="uid://cph2apstgper1" path="res://palette_shader.gd" id="5_ch5ua"] [ext_resource type="PackedScene" uid="uid://cciwccvljuuyq" path="res://touch_screen_ui.tscn" id="5_edsjh"] +[ext_resource type="Script" uid="uid://cne4ie2ej80h6" path="res://pause_menu_map.gd" id="5_lnnys"] [ext_resource type="Script" uid="uid://civ5a43u5151a" path="res://transition_player.gd" id="6_ch5ua"] [ext_resource type="Script" uid="uid://dh0b4xa4f8h1o" path="res://pause_menu.gd" id="6_ql50d"] [ext_resource type="PackedScene" uid="uid://clm2kocuhjqbb" path="res://map_room.tscn" id="7_ql50d"] +[ext_resource type="Script" uid="uid://blwdf7vxrmw35" path="res://pause_menu_status.gd" id="7_u70i3"] +[ext_resource type="Script" uid="uid://ckxfshqn3pxqr" path="res://pause_menu_system.gd" id="8_2tr3m"] [ext_resource type="Script" uid="uid://bwdk675n1q0dh" path="res://debug_info.gd" id="8_7c27k"] [sub_resource type="Animation" id="Animation_58ij3"] @@ -155,9 +158,8 @@ libraries = { speed_scale = 3.0 script = ExtResource("6_ch5ua") -[node name="PauseMenu" type="CanvasLayer" parent="." node_paths=PackedStringArray("pages")] +[node name="PauseMenu" type="CanvasLayer" parent="."] script = ExtResource("6_ql50d") -pages = [NodePath("Map"), NodePath("Status"), NodePath("System")] [node name="Bg" type="ColorRect" parent="PauseMenu"] offset_right = 192.0 @@ -166,6 +168,7 @@ mouse_filter = 2 color = Color(0, 0.019607844, 0.039215688, 0.88235295) [node name="Map" type="CanvasGroup" parent="PauseMenu"] +script = ExtResource("5_lnnys") [node name="RoomTest1" parent="PauseMenu/Map" instance=ExtResource("7_ql50d")] offset_left = 63.0 @@ -195,8 +198,8 @@ offset_bottom = 65.0 metadata/_edit_use_anchors_ = true [node name="Status" type="CanvasGroup" parent="PauseMenu"] -visible = false scale = Vector2(0.25, 0.25) +script = ExtResource("7_u70i3") [node name="Label" type="Label" parent="PauseMenu/Status"] offset_left = 320.0 @@ -207,6 +210,7 @@ text = "Status page" [node name="System" type="CanvasGroup" parent="PauseMenu"] scale = Vector2(0.25, 0.25) +script = ExtResource("8_2tr3m") [node name="QuitButton" type="Button" parent="PauseMenu/System"] offset_left = 300.0 @@ -246,3 +250,7 @@ script = ExtResource("8_7c27k") offset_right = 40.0 offset_bottom = 23.0 text = "debug info" + +[connection signal="tree_entered" from="PauseMenu" to="PauseMenu" method="_on_tree_entered"] +[connection signal="tree_entered" from="PauseMenu/Map" to="PauseMenu/Map" method="_on_tree_entered"] +[connection signal="tree_entered" from="PauseMenu/System" to="PauseMenu/System" method="_on_tree_entered"] diff --git a/transition_player.gd b/transition_player.gd index 56fe756..0d35dc7 100644 --- a/transition_player.gd +++ b/transition_player.gd @@ -37,7 +37,7 @@ func _transition_start(): while _transition_room == null: await get_tree().create_timer(0.1).timeout - top.get_pause_menu().set_room_name(_transition_room.name) + top.pause_menu.get_map().set_room_name(_transition_room.name) top.replace_active_room(_transition_room, _on_room_changed) func _on_room_changed(): |
