From a00fe83a037c14c4ab7b225ed25d2e297c9226a5 Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Sat, 29 Mar 2025 21:18:44 -0400 Subject: [PATCH] Initial work on the redesign --- autoloads/signal_manager.gd | 2 +- .../ui/menus/saves_manager/save_files_list.gd | 9 +- .../ui/menus/saves_manager/save_load_ui.tscn | 3 +- scenes/ui/pause_menu/base_menu.gd | 34 + scenes/ui/pause_menu/base_menu.gd.uid | 1 + scenes/ui/pause_menu/main_menu.gd | 16 + scenes/ui/pause_menu/main_menu.gd.uid | 1 + scenes/ui/pause_menu/pause_menu.gd | 79 ++ scenes/ui/pause_menu/pause_menu.gd.uid | 1 + scenes/ui/pause_menu/pause_menu.tscn | 769 ++++++++++++++++++ scenes/ui/pause_menu/saves_menu.gd | 55 ++ scenes/ui/pause_menu/saves_menu.gd.uid | 1 + scenes/ui/pause_menu/settings_menu.gd | 97 +++ scenes/ui/pause_menu/settings_menu.gd.uid | 1 + scenes/ui/ui.gd | 74 +- scenes/ui/ui.tscn | 18 +- 16 files changed, 1084 insertions(+), 77 deletions(-) create mode 100644 scenes/ui/pause_menu/base_menu.gd create mode 100644 scenes/ui/pause_menu/base_menu.gd.uid create mode 100644 scenes/ui/pause_menu/main_menu.gd create mode 100644 scenes/ui/pause_menu/main_menu.gd.uid create mode 100644 scenes/ui/pause_menu/pause_menu.gd create mode 100644 scenes/ui/pause_menu/pause_menu.gd.uid create mode 100644 scenes/ui/pause_menu/pause_menu.tscn create mode 100644 scenes/ui/pause_menu/saves_menu.gd create mode 100644 scenes/ui/pause_menu/saves_menu.gd.uid create mode 100644 scenes/ui/pause_menu/settings_menu.gd create mode 100644 scenes/ui/pause_menu/settings_menu.gd.uid diff --git a/autoloads/signal_manager.gd b/autoloads/signal_manager.gd index 32e012b..7b11d65 100644 --- a/autoloads/signal_manager.gd +++ b/autoloads/signal_manager.gd @@ -2,7 +2,7 @@ extends Node -#signal pause_game +signal pause_game signal resume_game signal open_pause_menu diff --git a/scenes/ui/menus/saves_manager/save_files_list.gd b/scenes/ui/menus/saves_manager/save_files_list.gd index ebe9209..0d92c25 100644 --- a/scenes/ui/menus/saves_manager/save_files_list.gd +++ b/scenes/ui/menus/saves_manager/save_files_list.gd @@ -1,12 +1,8 @@ +class_name SaveFilesListUI extends VBoxContainer @export var save_file_scene: PackedScene -@export var save_load_ui: SaveLoadUI - - -func _ready() -> void: - save_load_ui.open_save_list.connect(_on_open_save_list) # TODO: Reconsider this setup ## Clear the SaveFilesList node of all saves and load most recent saves @@ -24,6 +20,3 @@ func refresh_saves_list() -> void: func _clear_save_files_list() -> void: for _panel: SaveFilePanel in get_children(): _panel.queue_free() - -func _on_open_save_list() -> void: - refresh_saves_list() diff --git a/scenes/ui/menus/saves_manager/save_load_ui.tscn b/scenes/ui/menus/saves_manager/save_load_ui.tscn index 0e70e6c..74d6a20 100644 --- a/scenes/ui/menus/saves_manager/save_load_ui.tscn +++ b/scenes/ui/menus/saves_manager/save_load_ui.tscn @@ -58,10 +58,9 @@ custom_minimum_size = Vector2(0, 500) layout_mode = 2 horizontal_scroll_mode = 0 -[node name="SaveFilesList" parent="Panel/MarginContainer/VBoxContainer/ScrollContainer" node_paths=PackedStringArray("save_load_ui") instance=ExtResource("1_tqtxm")] +[node name="SaveFilesList" parent="Panel/MarginContainer/VBoxContainer/ScrollContainer" instance=ExtResource("1_tqtxm")] layout_mode = 2 size_flags_horizontal = 6 -save_load_ui = NodePath("../../../../..") [node name="SaveFilePanel" parent="Panel/MarginContainer/VBoxContainer/ScrollContainer/SaveFilesList" instance=ExtResource("2_6uxbh")] layout_mode = 2 diff --git a/scenes/ui/pause_menu/base_menu.gd b/scenes/ui/pause_menu/base_menu.gd new file mode 100644 index 0000000..c8d8494 --- /dev/null +++ b/scenes/ui/pause_menu/base_menu.gd @@ -0,0 +1,34 @@ +class_name BaseMenu +extends ColorRect + + +@export var animation_player: AnimationPlayer + +var pause_menu: PauseMenu + + +func init() -> void: + reset_menu() + update_animation_tracks() + +func close_menu() -> void: + animation_player.play("hide") + +func open_menu() -> void: + animation_player.play("show") + +func reset_menu() -> void: + animation_player.play("RESET") + +## Update the animation tracks to account for the size of the different container sizes[br] +## Only the x position is modified.[br][br] +## Requires:[br] +## Track 1 - Must be for the content_container[br] +## First Property - Must be position[br] +## Keys - Must only have 2 keys, the start and end position keys +func update_animation_tracks() -> void: + var hide_animation: Animation = animation_player.get_animation("hide") + var show_animation: Animation = animation_player.get_animation("show") + + hide_animation.track_set_key_value(0, 1, Vector2(-size.x, hide_animation.track_get_key_value(0, 1).y)) + show_animation.track_set_key_value(0, 0, Vector2(-size.x, show_animation.track_get_key_value(0, 0).y)) diff --git a/scenes/ui/pause_menu/base_menu.gd.uid b/scenes/ui/pause_menu/base_menu.gd.uid new file mode 100644 index 0000000..c607592 --- /dev/null +++ b/scenes/ui/pause_menu/base_menu.gd.uid @@ -0,0 +1 @@ +uid://c71f7fatmvsra diff --git a/scenes/ui/pause_menu/main_menu.gd b/scenes/ui/pause_menu/main_menu.gd new file mode 100644 index 0000000..2ca069e --- /dev/null +++ b/scenes/ui/pause_menu/main_menu.gd @@ -0,0 +1,16 @@ +class_name PauseMenuMain +extends BaseMenu + + +# Signals +func _on_exit_game_button_pressed() -> void: + get_tree().quit() + +func _on_resume_button_pressed() -> void: + close_menu() + +func _on_settings_button_pressed() -> void: + pause_menu.open_menu.emit("SettingsMenu") + +func _on_saves_button_pressed() -> void: + pause_menu.open_menu.emit("SavesMenu") diff --git a/scenes/ui/pause_menu/main_menu.gd.uid b/scenes/ui/pause_menu/main_menu.gd.uid new file mode 100644 index 0000000..1bcdd3e --- /dev/null +++ b/scenes/ui/pause_menu/main_menu.gd.uid @@ -0,0 +1 @@ +uid://bwvwpiwhp52e diff --git a/scenes/ui/pause_menu/pause_menu.gd b/scenes/ui/pause_menu/pause_menu.gd new file mode 100644 index 0000000..93597bc --- /dev/null +++ b/scenes/ui/pause_menu/pause_menu.gd @@ -0,0 +1,79 @@ +## Handle changing of pause menus +class_name PauseMenu +extends Panel + + +signal open_menu(menu_name: String) + + +@onready var menu_mapping: Dictionary[String, BaseMenu] = { + "MainMenu": $MainMenu, + "SettingsMenu": $SettingsMenu, + "SavesMenu": $SavesMenu, +} + +var _active_menu: String = "MainMenu" +var _next_menu: String = "" + + +func _ready() -> void: + open_menu.connect(_on_change_menu) + + for menu: BaseMenu in get_children(): + menu.animation_player.animation_finished.connect(_on_animation_finished) + menu.pause_menu = self + menu.init() + + SaveGameManager.load_save.connect(_on_load_save) + SaveGameManager.create_save.connect(_on_create_save) + +func _unhandled_input(event: InputEvent) -> void: + if event.is_action_pressed("ui_cancel") and !visible: + _open_pause_menu() + elif event.is_action_pressed("ui_cancel") and visible and _active_menu == "MainMenu": + menu_mapping["MainMenu"].animation_player.play("hide") + elif event.is_action_pressed("ui_cancel"): + menu_mapping[_active_menu].animation_player.play("hide") + + +## The animation to show the next menu will take place in _on_animation_finished() +func _change_menu(menu_name: String) -> void: + visible = true + _next_menu = menu_name + if _next_menu == "": + menu_mapping["MainMenu"].animation_player.play("hide") + else: + menu_mapping[_active_menu].animation_player.play("hide") + +func _close_pause_menu() -> void: + visible = false + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + _next_menu = "" + SignalManager.resume_game.emit() + +func _open_pause_menu() -> void: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + SignalManager.pause_game.emit() + menu_mapping["MainMenu"].animation_player.play("show") + + +## When the hide animation finished, we can move on to opening the next menu +func _on_animation_finished(animation_name: String) -> void: + if animation_name == "hide" and _next_menu == "": + _active_menu = "MainMenu" + _close_pause_menu() + elif animation_name == "hide": + _active_menu = _next_menu + _next_menu = "" + menu_mapping[_active_menu].animation_player.play("show") + +func _on_change_menu(menu_name: String) -> void: + _change_menu(menu_name) + +func _on_create_save(_save: String) -> void: + menu_mapping["SavesMenu"].reset_menu() + _close_pause_menu() + +func _on_load_save(_save: String) -> void: + menu_mapping["SavesMenu"].reset_menu() + _close_pause_menu() diff --git a/scenes/ui/pause_menu/pause_menu.gd.uid b/scenes/ui/pause_menu/pause_menu.gd.uid new file mode 100644 index 0000000..b426a1f --- /dev/null +++ b/scenes/ui/pause_menu/pause_menu.gd.uid @@ -0,0 +1 @@ +uid://domfn2obgmavw diff --git a/scenes/ui/pause_menu/pause_menu.tscn b/scenes/ui/pause_menu/pause_menu.tscn new file mode 100644 index 0000000..2f611cb --- /dev/null +++ b/scenes/ui/pause_menu/pause_menu.tscn @@ -0,0 +1,769 @@ +[gd_scene load_steps=25 format=3 uid="uid://by0gd600mbcr5"] + +[ext_resource type="Script" uid="uid://bwvwpiwhp52e" path="res://scenes/ui/pause_menu/main_menu.gd" id="1_4xojl"] +[ext_resource type="Script" uid="uid://domfn2obgmavw" path="res://scenes/ui/pause_menu/pause_menu.gd" id="1_ugqbi"] +[ext_resource type="Theme" uid="uid://b5q8b0l6qp1dt" path="res://resources/pause_menu_theme.tres" id="2_0jq6q"] +[ext_resource type="Script" uid="uid://ccei1q7fb022x" path="res://scenes/ui/pause_menu/settings_menu.gd" id="2_ightw"] +[ext_resource type="PackedScene" uid="uid://cyxieflejsggu" path="res://scenes/ui/menus/saves_manager/save_files_list.tscn" id="4_c1aak"] +[ext_resource type="Script" uid="uid://di8dm3fdxfwo1" path="res://scenes/ui/pause_menu/saves_menu.gd" id="4_mym86"] +[ext_resource type="PackedScene" uid="uid://bb7poutsn4ex2" path="res://scenes/ui/menus/saves_manager/save_file.tscn" id="5_mym86"] +[ext_resource type="Texture2D" uid="uid://ja8bc1h5x85o" path="res://assets/ui/save-normal.png" id="6_fjuhq"] +[ext_resource type="Texture2D" uid="uid://crqgyft4gfilt" path="res://assets/ui/save-pressed.png" id="7_uedyg"] +[ext_resource type="Texture2D" uid="uid://o3l0j53mgkan" path="res://assets/ui/save-hover.png" id="8_npsoq"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4xojl"] +bg_color = Color(0.176419, 0.176419, 0.176419, 0.462745) + +[sub_resource type="Animation" id="Animation_ightw"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-400, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_0jq6q"] +resource_name = "hide" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(-400, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} + +[sub_resource type="Animation" id="Animation_4xojl"] +resource_name = "show" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(-400, 0), Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_0jq6q"] +_data = { +&"RESET": SubResource("Animation_ightw"), +&"hide": SubResource("Animation_0jq6q"), +&"show": SubResource("Animation_4xojl") +} + +[sub_resource type="Animation" id="Animation_vx2qe"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-400, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_q12vw"] +resource_name = "hide" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(-400, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} + +[sub_resource type="Animation" id="Animation_3mo8w"] +resource_name = "show" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(-400, 0), Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_q12vw"] +_data = { +&"RESET": SubResource("Animation_vx2qe"), +&"hide": SubResource("Animation_q12vw"), +&"show": SubResource("Animation_3mo8w") +} + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ightw"] +content_margin_left = 10.0 +content_margin_top = 10.0 +content_margin_right = 10.0 +content_margin_bottom = 10.0 +bg_color = Color(0, 0, 0, 0.27451) +corner_radius_top_left = 2 +corner_radius_top_right = 2 +corner_radius_bottom_right = 2 +corner_radius_bottom_left = 2 + +[sub_resource type="Animation" id="Animation_h2y1u"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-450, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_ba5iv"] +resource_name = "hide" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(-450, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} + +[sub_resource type="Animation" id="Animation_ugqbi"] +resource_name = "show" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(-450, 0), Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_h2y1u"] +_data = { +&"RESET": SubResource("Animation_h2y1u"), +&"hide": SubResource("Animation_ba5iv"), +&"show": SubResource("Animation_ugqbi") +} + +[node name="PauseMenu" type="Panel"] +process_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_4xojl") +script = ExtResource("1_ugqbi") + +[node name="MainMenu" type="ColorRect" parent="." node_paths=PackedStringArray("animation_player")] +visible = false +custom_minimum_size = Vector2(400, 0) +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_left = -400.0 +grow_vertical = 2 +color = Color(0.133333, 0.133333, 0.133333, 0.784314) +script = ExtResource("1_4xojl") +animation_player = NodePath("AnimationPlayer") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="MainMenu"] +libraries = { +&"": SubResource("AnimationLibrary_0jq6q") +} +autoplay = "RESET" + +[node name="MainContent" type="MarginContainer" parent="MainMenu"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="MenuContainer" type="VBoxContainer" parent="MainMenu/MainContent"] +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_constants/separation = 20 + +[node name="Title" type="Label" parent="MainMenu/MainContent/MenuContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 40 +text = "Paused" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="ButtonsContainer" type="VBoxContainer" parent="MainMenu/MainContent/MenuContainer"] +layout_mode = 2 +size_flags_vertical = 6 +theme_override_constants/separation = 20 + +[node name="ResumeButton" type="Button" parent="MainMenu/MainContent/MenuContainer/ButtonsContainer"] +layout_mode = 2 +text = "Resume" + +[node name="SavesButton" type="Button" parent="MainMenu/MainContent/MenuContainer/ButtonsContainer"] +layout_mode = 2 +text = "Saves" + +[node name="SettingsButton" type="Button" parent="MainMenu/MainContent/MenuContainer/ButtonsContainer"] +layout_mode = 2 +text = "Settings" + +[node name="ExitGameButton" type="Button" parent="MainMenu/MainContent/MenuContainer/ButtonsContainer"] +layout_mode = 2 +text = "Exit Game" + +[node name="SettingsMenu" type="ColorRect" parent="." node_paths=PackedStringArray("autosaves_input", "block_highlight_input", "held_block_ui_input", "quick_slots_ui_input", "screenshot_icon_input", "waila_input", "resolution_input", "fullscreen_input", "vsync_input", "fov_slider", "fov_value_label", "animation_player")] +visible = false +custom_minimum_size = Vector2(400, 0) +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_left = -400.0 +grow_vertical = 2 +color = Color(0.133333, 0.133333, 0.133333, 0.784314) +script = ExtResource("2_ightw") +autosaves_input = NodePath("MainContent/VBoxContainer/TabContainer/Game/Autosaves/CheckButton") +block_highlight_input = NodePath("MainContent/VBoxContainer/TabContainer/Game/BlockHighlight/CheckButton") +held_block_ui_input = NodePath("MainContent/VBoxContainer/TabContainer/Game/HeldBlockUI/CheckButton") +quick_slots_ui_input = NodePath("MainContent/VBoxContainer/TabContainer/Game/QuickslotsUI/CheckButton") +screenshot_icon_input = NodePath("MainContent/VBoxContainer/TabContainer/Game/ScreenshotIcon/CheckButton") +waila_input = NodePath("MainContent/VBoxContainer/TabContainer/Game/Waila/CheckButton") +resolution_input = NodePath("MainContent/VBoxContainer/TabContainer/Graphics/Resolution/OptionButton") +fullscreen_input = NodePath("MainContent/VBoxContainer/TabContainer/Graphics/Fullscreen/CheckBox") +vsync_input = NodePath("MainContent/VBoxContainer/TabContainer/Graphics/VSync/CheckBox") +fov_slider = NodePath("MainContent/VBoxContainer/TabContainer/Graphics/FOV/HSlider") +fov_value_label = NodePath("MainContent/VBoxContainer/TabContainer/Graphics/FOV/Value") +animation_player = NodePath("AnimationPlayer") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="SettingsMenu"] +libraries = { +&"": SubResource("AnimationLibrary_q12vw") +} +autoplay = "RESET" + +[node name="MainContent" type="MarginContainer" parent="SettingsMenu"] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -155.0 +offset_right = 155.0 +offset_bottom = 310.0 +grow_horizontal = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="VBoxContainer" type="VBoxContainer" parent="SettingsMenu/MainContent"] +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_constants/separation = 20 + +[node name="Title" type="Label" parent="SettingsMenu/MainContent/VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 40 +text = "Settings" +horizontal_alignment = 1 + +[node name="TabContainer" type="TabContainer" parent="SettingsMenu/MainContent/VBoxContainer"] +layout_mode = 2 +theme_override_constants/side_margin = 0 +theme_override_styles/panel = SubResource("StyleBoxFlat_ightw") +current_tab = 0 +clip_tabs = false + +[node name="Game" type="VBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer"] +layout_mode = 2 +metadata/_tab_index = 0 + +[node name="BlockHighlight" type="HBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game"] +layout_mode = 2 + +[node name="Label" type="Label" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/BlockHighlight"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Enable Block Highlighting" + +[node name="CheckButton" type="CheckButton" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/BlockHighlight"] +layout_mode = 2 +button_pressed = true + +[node name="Waila" type="HBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game"] +layout_mode = 2 + +[node name="Label" type="Label" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/Waila"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Enable Waila" + +[node name="CheckButton" type="CheckButton" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/Waila"] +layout_mode = 2 +button_pressed = true + +[node name="QuickslotsUI" type="HBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game"] +layout_mode = 2 + +[node name="Label" type="Label" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/QuickslotsUI"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Enable Quickslots UI" + +[node name="CheckButton" type="CheckButton" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/QuickslotsUI"] +layout_mode = 2 +button_pressed = true + +[node name="HeldBlockUI" type="HBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game"] +layout_mode = 2 + +[node name="Label" type="Label" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/HeldBlockUI"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Enable Player Held Block" + +[node name="CheckButton" type="CheckButton" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/HeldBlockUI"] +layout_mode = 2 +button_pressed = true + +[node name="ScreenshotIcon" type="HBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game"] +layout_mode = 2 + +[node name="Label" type="Label" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/ScreenshotIcon"] +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "Enable/Disable the taking of a screenshot to utilize as the save icon." +mouse_filter = 1 +text = "Enable Save Screenshot" + +[node name="CheckButton" type="CheckButton" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/ScreenshotIcon"] +layout_mode = 2 +tooltip_text = "Enable/Disable the taking of a screenshot to utilize as the save icon." +button_pressed = true + +[node name="Autosaves" type="HBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game"] +layout_mode = 2 + +[node name="Label" type="Label" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/Autosaves"] +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "Enable/Disable the taking of a screenshot to utilize as the save icon." +mouse_filter = 1 +text = "Enable Autosaves" + +[node name="CheckButton" type="CheckButton" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/Autosaves"] +layout_mode = 2 +tooltip_text = "Enable/Disable the taking of a screenshot to utilize as the save icon." +button_pressed = true + +[node name="Graphics" type="VBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer"] +visible = false +layout_mode = 2 +metadata/_tab_index = 1 + +[node name="Resolution" type="HBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics"] +layout_mode = 2 + +[node name="Label" type="Label" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/Resolution"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Resolution" + +[node name="OptionButton" type="OptionButton" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/Resolution"] +layout_mode = 2 +selected = 0 +item_count = 6 +popup/item_0/text = "1280x720" +popup/item_0/id = 0 +popup/item_1/text = "1280x800" +popup/item_1/id = 4 +popup/item_2/text = "1920x1080" +popup/item_2/id = 1 +popup/item_3/text = "2560x1440" +popup/item_3/id = 2 +popup/item_4/text = "3440x1440" +popup/item_4/id = 3 +popup/item_5/text = "3840 x 2160" +popup/item_5/id = 5 + +[node name="Fullscreen" type="HBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics"] +layout_mode = 2 + +[node name="Label" type="Label" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/Fullscreen"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Fullscreen" + +[node name="CheckBox" type="CheckBox" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/Fullscreen"] +layout_mode = 2 + +[node name="VSync" type="HBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics"] +layout_mode = 2 + +[node name="Label" type="Label" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/VSync"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "VSync" + +[node name="CheckBox" type="CheckBox" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/VSync"] +layout_mode = 2 + +[node name="FOV" type="HBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics"] +layout_mode = 2 + +[node name="Label" type="Label" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/FOV"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "FOV" + +[node name="HSlider" type="HSlider" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/FOV"] +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 60.0 +max_value = 120.0 +value = 75.0 +rounded = true +ticks_on_borders = true + +[node name="Value" type="Label" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/FOV"] +layout_mode = 2 +text = "75" + +[node name="HSeparator" type="HSeparator" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics"] +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="CenterContainer" type="CenterContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics"] +layout_mode = 2 + +[node name="ApplyButton" type="Button" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/CenterContainer"] +layout_mode = 2 +text = "Apply/Save" + +[node name="Audio" type="VBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer"] +visible = false +layout_mode = 2 +metadata/_tab_index = 2 + +[node name="Inputs" type="VBoxContainer" parent="SettingsMenu/MainContent/VBoxContainer/TabContainer"] +visible = false +layout_mode = 2 +metadata/_tab_index = 3 + +[node name="BottomRow" type="MarginContainer" parent="SettingsMenu"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -82.5 +offset_top = -46.0 +offset_right = 82.5 +grow_horizontal = 2 +grow_vertical = 0 +theme_override_constants/margin_bottom = 10 + +[node name="CloseButton" type="Button" parent="SettingsMenu/BottomRow"] +custom_minimum_size = Vector2(141, 36) +layout_mode = 2 +theme = ExtResource("2_0jq6q") +text = "Close Settings" + +[node name="SavesMenu" type="ColorRect" parent="." node_paths=PackedStringArray("show_save_ui_button", "new_save_ui", "save_name_input", "create_save_button", "create_save_cancel_button", "save_files_list_ui", "animation_player")] +visible = false +custom_minimum_size = Vector2(450, 0) +layout_mode = 1 +anchors_preset = 9 +anchor_bottom = 1.0 +offset_left = -450.0 +grow_vertical = 2 +color = Color(0.133333, 0.133333, 0.133333, 0.784314) +script = ExtResource("4_mym86") +show_save_ui_button = NodePath("MarginContainer/VBoxContainer/BottomRow/SaveButton") +new_save_ui = NodePath("NewSaveUI") +save_name_input = NodePath("NewSaveUI/MarginContainer/VBoxContainer/SaveNameInput") +create_save_button = NodePath("NewSaveUI/MarginContainer/VBoxContainer/SaveButton") +create_save_cancel_button = NodePath("NewSaveUI/MarginContainer/VBoxContainer/CancelButton") +save_files_list_ui = NodePath("MarginContainer/VBoxContainer/ScrollContainer/SaveFilesList") +animation_player = NodePath("AnimationPlayer") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="SavesMenu"] +libraries = { +&"": SubResource("AnimationLibrary_h2y1u") +} +autoplay = "RESET" + +[node name="MarginContainer" type="MarginContainer" parent="SavesMenu"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="SavesMenu/MarginContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="SavesMenu/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 40 +text = "Save/Load Game" +horizontal_alignment = 1 + +[node name="ScrollContainer" type="ScrollContainer" parent="SavesMenu/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 500) +layout_mode = 2 +horizontal_scroll_mode = 0 + +[node name="SaveFilesList" parent="SavesMenu/MarginContainer/VBoxContainer/ScrollContainer" instance=ExtResource("4_c1aak")] +layout_mode = 2 +size_flags_horizontal = 6 + +[node name="SaveFilePanel" parent="SavesMenu/MarginContainer/VBoxContainer/ScrollContainer/SaveFilesList" instance=ExtResource("5_mym86")] +layout_mode = 2 + +[node name="BottomRow" type="HBoxContainer" parent="SavesMenu/MarginContainer/VBoxContainer"] +layout_mode = 2 +alignment = 1 + +[node name="SaveButton" type="TextureButton" parent="SavesMenu/MarginContainer/VBoxContainer/BottomRow"] +clip_contents = true +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +tooltip_text = "New Save" +texture_normal = ExtResource("6_fjuhq") +texture_pressed = ExtResource("7_uedyg") +texture_hover = ExtResource("8_npsoq") +ignore_texture_size = true +stretch_mode = 5 + +[node name="NewSaveUI" type="Panel" parent="SavesMenu"] +visible = false +custom_minimum_size = Vector2(450, 100) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="MarginContainer" type="MarginContainer" parent="SavesMenu/NewSaveUI"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -205.0 +offset_top = -29.5 +offset_right = 205.0 +offset_bottom = 29.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 5 +theme_override_constants/margin_top = 5 +theme_override_constants/margin_right = 5 +theme_override_constants/margin_bottom = 5 + +[node name="VBoxContainer" type="VBoxContainer" parent="SavesMenu/NewSaveUI/MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="SaveNameLabel" type="Label" parent="SavesMenu/NewSaveUI/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 20 +text = "Create New Save" + +[node name="SaveNameInput" type="LineEdit" parent="SavesMenu/NewSaveUI/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(400, 0) +layout_mode = 2 +placeholder_text = "New Save File Name" + +[node name="SaveButton" type="Button" parent="SavesMenu/NewSaveUI/MarginContainer/VBoxContainer"] +layout_mode = 2 +text = "Create Save" + +[node name="CancelButton" type="Button" parent="SavesMenu/NewSaveUI/MarginContainer/VBoxContainer"] +layout_mode = 2 +text = "Cancel" + +[connection signal="pressed" from="MainMenu/MainContent/MenuContainer/ButtonsContainer/ResumeButton" to="MainMenu" method="_on_resume_button_pressed"] +[connection signal="pressed" from="MainMenu/MainContent/MenuContainer/ButtonsContainer/SavesButton" to="MainMenu" method="_on_saves_button_pressed"] +[connection signal="pressed" from="MainMenu/MainContent/MenuContainer/ButtonsContainer/SettingsButton" to="MainMenu" method="_on_settings_button_pressed"] +[connection signal="pressed" from="MainMenu/MainContent/MenuContainer/ButtonsContainer/ExitGameButton" to="MainMenu" method="_on_exit_game_button_pressed"] +[connection signal="toggled" from="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/BlockHighlight/CheckButton" to="SettingsMenu" method="_on_block_highlighting_toggled"] +[connection signal="toggled" from="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/Waila/CheckButton" to="SettingsMenu" method="_on_enable_waila_toggled"] +[connection signal="toggled" from="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/QuickslotsUI/CheckButton" to="SettingsMenu" method="_on_quickslots_ui_toggled"] +[connection signal="toggled" from="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/HeldBlockUI/CheckButton" to="SettingsMenu" method="_on_held_block_ui_toggled"] +[connection signal="toggled" from="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/ScreenshotIcon/CheckButton" to="SettingsMenu" method="_on_screenshot_icon_button_toggled"] +[connection signal="toggled" from="SettingsMenu/MainContent/VBoxContainer/TabContainer/Game/Autosaves/CheckButton" to="SettingsMenu" method="_on_autosaves_button_toggled"] +[connection signal="changed" from="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/FOV/HSlider" to="SettingsMenu" method="_on_fov_slider_changed"] +[connection signal="pressed" from="SettingsMenu/MainContent/VBoxContainer/TabContainer/Graphics/CenterContainer/ApplyButton" to="SettingsMenu" method="_on_graphics_apply_button_pressed"] +[connection signal="pressed" from="SettingsMenu/BottomRow/CloseButton" to="SettingsMenu" method="_on_close_button_pressed"] diff --git a/scenes/ui/pause_menu/saves_menu.gd b/scenes/ui/pause_menu/saves_menu.gd new file mode 100644 index 0000000..8edd9cc --- /dev/null +++ b/scenes/ui/pause_menu/saves_menu.gd @@ -0,0 +1,55 @@ +class_name PauseMenuSaves +extends BaseMenu + +signal close_save_list +signal open_save_list + + +@export var show_save_ui_button: BaseButton +@export var new_save_ui: Control +@export var save_name_input: LineEdit +@export var create_save_button: BaseButton +@export var create_save_cancel_button: BaseButton + +@export var ui_node: CanvasLayer ## The UI to Show/Hide when taking screenshot (e.g. save icon generation) +@export var save_files_list_ui: SaveFilesListUI + + +func init() -> void: + super.init() + show_save_ui_button.pressed.connect(_on_show_save_ui_button_pressed) + create_save_button.pressed.connect(_on_create_save_button_pressed) + create_save_cancel_button.pressed.connect(_on_create_save_cancel_button_pressed) + + pause_menu.open_menu.connect(_on_open_menu) + + +#func open_menu() -> void: +# save_files_list_ui.refresh_saves_list() +# super.open_menu() + + +func _on_create_save_button_pressed() -> void: + var save_name: String = save_name_input.text + if save_name.strip_edges() == "": + save_name = Time.get_datetime_string_from_system(false, true) + + #if ui_node != null: + # ui_node.visible = false + # await get_tree().create_timer(.150).timeout # A hack to allow time for UI to hide before taking screenshot + SaveGameManager.create_save.emit(save_name) + #if ui_node != null: + # ui_node.visible = true + new_save_ui.hide() + SignalManager.resume_game.emit() + +func _on_create_save_cancel_button_pressed() -> void: + new_save_ui.hide() + +func _on_open_menu(menu_name: String) -> void: + if menu_name == name: + save_files_list_ui.refresh_saves_list() + +func _on_show_save_ui_button_pressed() -> void: + save_name_input.text = Time.get_datetime_string_from_system(false, true) + new_save_ui.show() diff --git a/scenes/ui/pause_menu/saves_menu.gd.uid b/scenes/ui/pause_menu/saves_menu.gd.uid new file mode 100644 index 0000000..48e64f4 --- /dev/null +++ b/scenes/ui/pause_menu/saves_menu.gd.uid @@ -0,0 +1 @@ +uid://di8dm3fdxfwo1 diff --git a/scenes/ui/pause_menu/settings_menu.gd b/scenes/ui/pause_menu/settings_menu.gd new file mode 100644 index 0000000..d8ae936 --- /dev/null +++ b/scenes/ui/pause_menu/settings_menu.gd @@ -0,0 +1,97 @@ +class_name PauseMenuSettings +extends BaseMenu + + +@export_group("Game Option Nodes") +@export var autosaves_input: CheckButton +@export var block_highlight_input: CheckButton +@export var held_block_ui_input: CheckButton +@export var quick_slots_ui_input: CheckButton +@export var screenshot_icon_input: CheckButton +@export var waila_input: CheckButton + +@export_group("Graphics Settings Nodes") +@export var resolution_input: OptionButton +@export var fullscreen_input: CheckBox +@export var vsync_input: CheckBox +@export var fov_slider: HSlider +@export var fov_value_label: Label + + +func init() -> void: + super.init() + + apply_default_values() + + +## Sets the default values of all the inputs +func apply_default_values() -> void: + #region Game Options + autosaves_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_autosaves) + block_highlight_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_block_highlight) + held_block_ui_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_held_block) + quick_slots_ui_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_quickslots_ui) + screenshot_icon_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_save_screenshots) + waila_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_waila) + #endregion + + #region Graphics Settings + # Changing the FOV value should trigger the value_changed signal which should update the camera and label automatically + fov_slider.value = GameSettingsManager.settings.graphics.fov + fullscreen_input.set_pressed_no_signal(GameSettingsManager.settings.graphics.fullscreen) + vsync_input.set_pressed_no_signal(GameSettingsManager.settings.graphics.vsync) + + var current_resolution_index: int = resolution_input.get_item_index(GameSettingsManager.settings.graphics.resolution_id) + resolution_input.select(current_resolution_index) + #endregion + + + +#region Game Settings +func _on_block_highlighting_toggled(toggled_on: bool) -> void: + GameSettingsManager.game_options_block_highlight_changed.emit(toggled_on) + +func _on_held_block_ui_toggled(toggled_on: bool) -> void: + GameSettingsManager.game_options_held_block_ui_changed.emit(toggled_on) + +func _on_quickslots_ui_toggled(toggled_on: bool) -> void: + GameSettingsManager.game_options_quickslots_ui_changed.emit(toggled_on) + +func _on_enable_waila_toggled(toggled_on: bool) -> void: + GameSettingsManager.game_options_waila_changed.emit(toggled_on) + +func _on_screenshot_icon_button_toggled(toggled_on: bool) -> void: + GameSettingsManager.game_options_screenshot_saves_changed.emit(toggled_on) + SaveGameManager.toggle_save_icon_generation.emit(toggled_on) + +func _on_autosaves_button_toggled(toggled_on: bool) -> void: + if toggled_on: + SaveGameManager.enable_autosaves.emit() + else: + SaveGameManager.disable_autosaves.emit() +#endregion + +#region Graphics Settings +func _on_fov_slider_changed(value: float) -> void: + fov_value_label.text = str(int(value)) + GameSettingsManager.graphics_fov_changed.emit(int(fov_slider.value)) + +func _on_graphics_apply_button_pressed() -> void: + var values: Array = resolution_input.text.split_floats("x") + var id: int = resolution_input.get_selected_id() + + GameSettingsManager.graphics_resolution_changed.emit(Vector2i(values[0], values[1]), id) + GameSettingsManager.graphics_fullscreen_changed.emit(fullscreen_input.button_pressed) + GameSettingsManager.graphics_vsync_changed.emit(vsync_input.button_pressed) + GameSettingsManager.apply_graphics_settings.emit() +#endregion + +#region Audio Settings +#endregion + +#region Input Settings +#endregion + + +func _on_close_button_pressed() -> void: + pause_menu.open_menu.emit("MainMenu") diff --git a/scenes/ui/pause_menu/settings_menu.gd.uid b/scenes/ui/pause_menu/settings_menu.gd.uid new file mode 100644 index 0000000..5c86812 --- /dev/null +++ b/scenes/ui/pause_menu/settings_menu.gd.uid @@ -0,0 +1 @@ +uid://ccei1q7fb022x diff --git a/scenes/ui/ui.gd b/scenes/ui/ui.gd index 3bf674d..ca3f8fa 100644 --- a/scenes/ui/ui.gd +++ b/scenes/ui/ui.gd @@ -5,82 +5,52 @@ extends CanvasLayer @onready var crosshair: CenterContainer = $Crosshair @onready var quick_slots: MarginContainer = $QuickSlots @onready var pause_menu: PauseMenu = $PauseMenu -@onready var save_load_ui: SaveLoadUI = $SaveLoadUI -@onready var settings_menu: SettingsMenu = $SettingsMenu @onready var waila: Waila = $Waila func _ready() -> void: - SignalManager.close_pause_menu.connect(_on_close_pause_menu) - SignalManager.open_pause_menu.connect(_on_open_pause_menu) - SignalManager.close_settings_menu.connect(_on_close_settings_menu) - SignalManager.open_settings_menu.connect(_on_open_settings_menu) - SignalManager.resume_game.connect(_on_resume_game) - - save_load_ui.close_save_list.connect(_on_close_save_list_ui) - save_load_ui.open_save_list.connect(_on_open_save_list_ui) - SaveGameManager.load_complete.connect(_on_load_complete) + SignalManager.pause_game.connect(_on_pause_game) + SignalManager.resume_game.connect(_on_resume_game) - _on_resume_game() + resume_game() func hide_menus() -> void: pause_menu.visible = false - settings_menu.visible = false - save_load_ui.visible = false + +func show_menus() -> void: + pause_menu.visible = true + func hide_ui_elements() -> void: crosshair.visible = false quick_slots.visible = false waila.visible = false +func show_ui_elements() -> void: + crosshair.visible = true + quick_slots.visible = true and GameSettingsManager.settings.game_options.enable_quickslots_ui + waila.visible = true -func _on_close_pause_menu() -> void: - SignalManager.resume_game.emit() - -func _on_close_save_list_ui() -> void: - SignalManager.open_settings_menu.emit() - -func _on_close_settings_menu() -> void: - SignalManager.resume_game.emit() - -func _on_load_complete() -> void: - _on_resume_game() - -func _on_open_pause_menu() -> void: - Input.mouse_mode = Input.MOUSE_MODE_VISIBLE - - hide_ui_elements() - hide_menus() - pause_menu.visible = true +func pause_game() -> void: + show_menus() get_tree().paused = true - -func _on_open_save_list_ui() -> void: - Input.mouse_mode = Input.MOUSE_MODE_VISIBLE - hide_ui_elements() + +func resume_game() -> void: hide_menus() - save_load_ui.visible = true + show_ui_elements() - get_tree().paused = true + get_tree().paused = false -func _on_open_settings_menu() -> void: - Input.mouse_mode = Input.MOUSE_MODE_VISIBLE - hide_ui_elements() - hide_menus() - settings_menu.visible = true +func _on_load_complete() -> void: + resume_game() - get_tree().paused = true +func _on_pause_game() -> void: + pause_game() func _on_resume_game() -> void: - Input.mouse_mode = Input.MOUSE_MODE_CAPTURED - - hide_menus() - crosshair.visible = true - quick_slots.visible = true and GameSettingsManager.settings.game_options.enable_quickslots_ui - waila.visible = true - - get_tree().paused = false + resume_game() diff --git a/scenes/ui/ui.tscn b/scenes/ui/ui.tscn index 3db600e..3109d97 100644 --- a/scenes/ui/ui.tscn +++ b/scenes/ui/ui.tscn @@ -1,12 +1,10 @@ -[gd_scene load_steps=8 format=3 uid="uid://c7fj7wla8bd70"] +[gd_scene load_steps=6 format=3 uid="uid://c7fj7wla8bd70"] [ext_resource type="Script" uid="uid://bslimr2y4lnvq" path="res://scenes/ui/ui.gd" id="1_aac20"] [ext_resource type="PackedScene" uid="uid://dvogu3djluqsn" path="res://scenes/ui/waila.tscn" id="1_u7n8c"] [ext_resource type="PackedScene" uid="uid://cbiygbgpfk220" path="res://scenes/ui/quick_slots.tscn" id="4_g5kmx"] -[ext_resource type="PackedScene" uid="uid://bopvfwcgnnawg" path="res://scenes/ui/menus/pause_menu.tscn" id="6_7vp6q"] -[ext_resource type="PackedScene" uid="uid://4bdgwwx27m71" path="res://scenes/ui/menus/settings_menu.tscn" id="7_7vp6q"] +[ext_resource type="PackedScene" uid="uid://by0gd600mbcr5" path="res://scenes/ui/pause_menu/pause_menu.tscn" id="5_0dwhk"] [ext_resource type="PackedScene" uid="uid://rfknvv8b0d4i" path="res://scenes/ui/autosave_notification.tscn" id="7_jcn1r"] -[ext_resource type="PackedScene" uid="uid://dauchkhmnyk7n" path="res://scenes/ui/menus/saves_manager/save_load_ui.tscn" id="8_jcn1r"] [node name="UI" type="CanvasLayer"] script = ExtResource("1_aac20") @@ -32,16 +30,8 @@ mouse_filter = 2 [node name="QuickSlots" parent="." instance=ExtResource("4_g5kmx")] -[node name="PauseMenu" parent="." node_paths=PackedStringArray("save_load_ui") instance=ExtResource("6_7vp6q")] -visible = false -save_load_ui = NodePath("../SaveLoadUI") - -[node name="SettingsMenu" parent="." instance=ExtResource("7_7vp6q")] -visible = false - -[node name="SaveLoadUI" parent="." node_paths=PackedStringArray("ui_node") instance=ExtResource("8_jcn1r")] +[node name="AutosaveNotification" parent="." instance=ExtResource("7_jcn1r")] visible = false -ui_node = NodePath("..") -[node name="AutosaveNotification" parent="." instance=ExtResource("7_jcn1r")] +[node name="PauseMenu" parent="." instance=ExtResource("5_0dwhk")] visible = false