From a3dbe2227118c251c8b2807bb9e123da890f0057 Mon Sep 17 00:00:00 2001 From: Eduardo Date: Sat, 27 Jan 2024 02:12:10 +0100 Subject: [PATCH] a try to have a pause menu --- addons/scene_manager/scenes.gd | 2 +- levels/unicorn_level/unicorn_map.tscn | 6 +- menus/main_menu/MainMenu.gd | 1 + menus/pause/Pause.gd | 33 ++++++++++ menus/pause/Pause.tscn | 86 +++++++++++++++++++++++++++ 5 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 menus/pause/Pause.gd create mode 100644 menus/pause/Pause.tscn diff --git a/addons/scene_manager/scenes.gd b/addons/scene_manager/scenes.gd index 0ecd9b2..f8cf9cf 100644 --- a/addons/scene_manager/scenes.gd +++ b/addons/scene_manager/scenes.gd @@ -5,4 +5,4 @@ # extends Node -var scenes: Dictionary = {"Credits":{"sections":["Scenes"],"settings":{"All":{"subsection":"","visibility":true},"Scenes":{"subsection":"","visibility":true}},"value":"res://menus/credits/Credits.tscn"},"MainMenu":{"sections":["Scenes"],"settings":{"All":{"subsection":"","visibility":true},"Scenes":{"subsection":"","visibility":true}},"value":"res://menus/main_menu/MainMenu.tscn"},"Player":{"sections":[],"settings":{"All":{"subsection":"","visibility":false}},"value":"res://player/Player.tscn"},"SettingsMenu":{"sections":["Scenes"],"settings":{"All":{"subsection":"","visibility":true},"Scenes":{"subsection":"","visibility":true}},"value":"res://menus/settings_menu/SettingsMenu.tscn"},"_ignore_list":["res://addons","res://assets","res://game_settings"],"_sections":["Scenes","Loading Scenes"],"test_debug_msg":{"sections":[],"settings":{"All":{"subsection":"","visibility":true}},"value":"res://examples/test/test.tscn"},"unicorn_map":{"sections":["Scenes"],"settings":{"All":{"subsection":"","visibility":true},"Scenes":{"subsection":"","visibility":true}},"value":"res://levels/unicorn_level/unicorn_map.tscn"}} +var scenes: Dictionary = {"Credits":{"sections":["Scenes"],"settings":{"All":{"subsection":"","visibility":true},"Scenes":{"subsection":"","visibility":true}},"value":"res://menus/credits/Credits.tscn"},"MainMenu":{"sections":["Scenes"],"settings":{"All":{"subsection":"","visibility":true},"Scenes":{"subsection":"","visibility":true}},"value":"res://menus/main_menu/MainMenu.tscn"},"Player":{"sections":[],"settings":{"All":{"subsection":"","visibility":false}},"value":"res://player/Player.tscn"},"SettingsMenu":{"sections":["Scenes"],"settings":{"All":{"subsection":"","visibility":true},"Scenes":{"subsection":"","visibility":true}},"value":"res://menus/settings_menu/SettingsMenu.tscn"},"_ignore_list":["res://addons","res://assets","res://game_settings"],"_sections":["Scenes","Loading Scenes"],"pause":{"sections":[],"settings":{"All":{"subsection":"","visibility":false}},"value":"res://menus/pause/pause.tscn"},"test_debug_msg":{"sections":[],"settings":{"All":{"subsection":"","visibility":true}},"value":"res://examples/test/test.tscn"},"unicorn_map":{"sections":["Scenes"],"settings":{"All":{"subsection":"","visibility":true},"Scenes":{"subsection":"","visibility":true}},"value":"res://levels/unicorn_level/unicorn_map.tscn"}} diff --git a/levels/unicorn_level/unicorn_map.tscn b/levels/unicorn_level/unicorn_map.tscn index e1807f7..1d1b4b0 100644 --- a/levels/unicorn_level/unicorn_map.tscn +++ b/levels/unicorn_level/unicorn_map.tscn @@ -1,10 +1,11 @@ -[gd_scene load_steps=10 format=3 uid="uid://t5uneae6abmn"] +[gd_scene load_steps=11 format=3 uid="uid://t5uneae6abmn"] [ext_resource type="PackedScene" uid="uid://bpuiyd81j8177" path="res://assets/Farola.glb" id="1_naw6w"] [ext_resource type="PackedScene" uid="uid://1mmjp4ugn7kk" path="res://player/Player.tscn" id="1_yhk1e"] [ext_resource type="Shader" path="res://shaders/screen_shaders.gdshader" id="2_nguig"] [ext_resource type="MeshLibrary" uid="uid://didmc6xrsyrne" path="res://assets/plain_tiles.tres" id="3_g2il3"] [ext_resource type="PackedScene" uid="uid://cggqb75a8w8r" path="res://addons/debug_menu/debug_menu.tscn" id="3_s7w0p"] +[ext_resource type="PackedScene" uid="uid://cvx5mhciymsr2" path="res://menus/pause/Pause.tscn" id="5_ovgcu"] [sub_resource type="BoxShape3D" id="BoxShape3D_s6l2r"] size = Vector3(100, 6, 100) @@ -144,6 +145,9 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +[node name="Pause" parent="." instance=ExtResource("5_ovgcu")] +visible = false + [node name="DebugMenu" parent="." node_paths=PackedStringArray("fps", "frame_time", "frame_number", "frame_history_total_avg", "frame_history_total_min", "frame_history_total_max", "frame_history_total_last", "frame_history_cpu_avg", "frame_history_cpu_min", "frame_history_cpu_max", "frame_history_cpu_last", "frame_history_gpu_avg", "frame_history_gpu_min", "frame_history_gpu_max", "frame_history_gpu_last", "fps_graph", "total_graph", "cpu_graph", "gpu_graph", "information", "settings") instance=ExtResource("3_s7w0p")] visible = false fps = NodePath("DebugMenu/VBoxContainer/FPS") diff --git a/menus/main_menu/MainMenu.gd b/menus/main_menu/MainMenu.gd index a93cf15..e08984f 100644 --- a/menus/main_menu/MainMenu.gd +++ b/menus/main_menu/MainMenu.gd @@ -10,6 +10,7 @@ extends Control # Called when the node enters the scene tree for the first time. func _ready(): + SceneManager.process_mode = Node.PROCESS_MODE_ALWAYS SceneManager.validate_scene(playBtnSscene) SceneManager.validate_scene(settingsBtnScene) SceneManager.validate_scene(creditsBtnScene) diff --git a/menus/pause/Pause.gd b/menus/pause/Pause.gd new file mode 100644 index 0000000..7b30801 --- /dev/null +++ b/menus/pause/Pause.gd @@ -0,0 +1,33 @@ +extends Control + +@export var settingsBtnScene : String +@export var exitBtnScene : String + +@onready var fade_out_options = SceneManager.create_options() +@onready var fade_in_options = SceneManager.create_options() +@onready var general_options = SceneManager.create_general_options() + +func _init(): + SceneManager.validate_scene(settingsBtnScene) + SceneManager.validate_scene(exitBtnScene) + +func _input(event): + if event.is_action_pressed("ui_cancel"): + get_tree().paused = true + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + show() + + +func _on_unpause_button_pressed(): + hide() + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + get_tree().paused = false + + +func _on_settings_button_pressed(): + SceneManager.change_scene(settingsBtnScene, fade_out_options, fade_in_options, general_options) + + +func _on_exit_button_pressed(): + get_tree().paused = false + SceneManager.change_scene(exitBtnScene, fade_out_options, fade_in_options, general_options) diff --git a/menus/pause/Pause.tscn b/menus/pause/Pause.tscn new file mode 100644 index 0000000..ea87a08 --- /dev/null +++ b/menus/pause/Pause.tscn @@ -0,0 +1,86 @@ +[gd_scene load_steps=2 format=3 uid="uid://cvx5mhciymsr2"] + +[ext_resource type="Script" path="res://menus/pause/Pause.gd" id="1_b3njo"] + +[node name="Pause" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_b3njo") +settingsBtnScene = "SettingsMenu" +exitBtnScene = "MainMenu" + +[node name="ColorRect" type="ColorRect" parent="."] +process_mode = 2 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 0.686275) + +[node name="CenterContainer" type="CenterContainer" parent="."] +process_mode = 2 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 16 + +[node name="Label" type="Label" parent="CenterContainer/VBoxContainer/MarginContainer"] +layout_mode = 2 +text = "PAUSE" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="MarginContainer2" type="MarginContainer" parent="CenterContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 8 + +[node name="UnpauseButton" type="Button" parent="CenterContainer/VBoxContainer/MarginContainer2"] +layout_mode = 2 +text = "Return to Game" + +[node name="MarginContainer3" type="MarginContainer" parent="CenterContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 8 + +[node name="SettingsButton" type="Button" parent="CenterContainer/VBoxContainer/MarginContainer3"] +layout_mode = 2 +text = "Settings" + +[node name="MarginContainer4" type="MarginContainer" parent="CenterContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 64 + +[node name="ExitButton" type="Button" parent="CenterContainer/VBoxContainer/MarginContainer4"] +layout_mode = 2 +text = "Exit" + +[connection signal="pressed" from="CenterContainer/VBoxContainer/MarginContainer2/UnpauseButton" to="." method="_on_unpause_button_pressed"] +[connection signal="pressed" from="CenterContainer/VBoxContainer/MarginContainer3/SettingsButton" to="." method="_on_settings_button_pressed"] +[connection signal="pressed" from="CenterContainer/VBoxContainer/MarginContainer4/ExitButton" to="." method="_on_exit_button_pressed"] -- 2.30.2