Browse Source

Merge pull request 'Rework Pause Menu' (#10) from pause-menu into master

pull/12/head
Ryan Reed 1 month ago
parent
commit
e3109fe3ec
14 changed files with 303 additions and 127 deletions
  1. +11
    -0
      autoloads/signal_manager.gd
  2. +1
    -0
      autoloads/signal_manager.gd.uid
  3. +1
    -0
      project.godot
  4. +6
    -0
      resources/pause_menu_theme.tres
  5. +4
    -4
      save_load/autoloads/save_game_manager.gd
  6. +0
    -89
      scenes/ui/options_menu.tscn
  7. +35
    -0
      scenes/ui/pause_menu.gd
  8. +1
    -0
      scenes/ui/pause_menu.gd.uid
  9. +80
    -0
      scenes/ui/pause_menu.tscn
  10. +13
    -0
      scenes/ui/settings_menu.gd
  11. +1
    -0
      scenes/ui/settings_menu.gd.uid
  12. +98
    -0
      scenes/ui/settings_menu.tscn
  13. +45
    -24
      scenes/ui/ui.gd
  14. +7
    -10
      scenes/ui/ui.tscn

+ 11
- 0
autoloads/signal_manager.gd View File

@ -0,0 +1,11 @@
## General Purpose signals
extends Node
#signal pause_game
signal resume_game
signal open_pause_menu
signal close_pause_menu
signal open_settings_menu
signal close_settings_menu

+ 1
- 0
autoloads/signal_manager.gd.uid View File

@ -0,0 +1 @@
uid://biwce2o15q44g

+ 1
- 0
project.godot View File

@ -23,6 +23,7 @@ EntityManager="*res://autoloads/entity_manager.gd"
InventoryManager="*res://autoloads/inventory_manager.gd" InventoryManager="*res://autoloads/inventory_manager.gd"
DBItems="*res://autoloads/db_items.gd" DBItems="*res://autoloads/db_items.gd"
SaveGameManager="*res://save_load/autoloads/save_game_manager.gd" SaveGameManager="*res://save_load/autoloads/save_game_manager.gd"
SignalManager="*res://autoloads/signal_manager.gd"
[debug] [debug]


+ 6
- 0
resources/pause_menu_theme.tres View File

@ -0,0 +1,6 @@
[gd_resource type="Theme" format=3 uid="uid://b5q8b0l6qp1dt"]
[resource]
Button/colors/font_color = Color(0.839216, 0.933333, 1, 1)
Button/constants/outline_size = 2
Button/font_sizes/font_size = 20

+ 4
- 4
save_load/autoloads/save_game_manager.gd View File

@ -13,12 +13,12 @@ signal game_loaded
func _unhandled_input(event: InputEvent) -> void: func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("quick_save"): if event.is_action_pressed("quick_save"):
_save_game()
save_game()
if event.is_action_pressed("quick_load"): if event.is_action_pressed("quick_load"):
_load_game()
load_game()
func _save_game() -> void:
func save_game() -> void:
var save_level_data_component: SaveLevelDataComponent = get_tree().get_first_node_in_group("save_level_data_component") var save_level_data_component: SaveLevelDataComponent = get_tree().get_first_node_in_group("save_level_data_component")
if save_level_data_component == null: if save_level_data_component == null:
@ -28,7 +28,7 @@ func _save_game() -> void:
save_level_data_component.save_game() save_level_data_component.save_game()
game_saved.emit() game_saved.emit()
func _load_game() -> void:
func load_game() -> void:
EntityManager.reset_world.emit() EntityManager.reset_world.emit()
var save_level_data_component: SaveLevelDataComponent = get_tree().get_first_node_in_group("save_level_data_component") var save_level_data_component: SaveLevelDataComponent = get_tree().get_first_node_in_group("save_level_data_component")


+ 0
- 89
scenes/ui/options_menu.tscn View File

@ -1,89 +0,0 @@
[gd_scene format=3 uid="uid://w6wtjosjn1qu"]
[node name="OptionsMenu" type="MarginContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="PanelContainer" type="PanelContainer" parent="."]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"]
layout_mode = 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="LeftContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer/LeftContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/LeftContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 0
theme_type_variation = &"HeaderLarge"
text = "Options Menu"
horizontal_alignment = 1
[node name="BlockHighlights" type="HBoxContainer" parent="PanelContainer/MarginContainer/LeftContainer/VBoxContainer"]
layout_mode = 2
[node name="CheckButton" type="CheckButton" parent="PanelContainer/MarginContainer/LeftContainer/VBoxContainer/BlockHighlights"]
layout_mode = 2
button_pressed = true
text = "Enable Block Highlighting"
[node name="Waila" type="HBoxContainer" parent="PanelContainer/MarginContainer/LeftContainer/VBoxContainer"]
layout_mode = 2
[node name="CheckButton" type="CheckButton" parent="PanelContainer/MarginContainer/LeftContainer/VBoxContainer/Waila"]
layout_mode = 2
button_pressed = true
text = "Enable Waila"
[node name="BottomRightContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 8
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer/BottomRightContainer"]
layout_mode = 2
size_flags_horizontal = 8
[node name="ControlsLabel" type="Label" parent="PanelContainer/MarginContainer/BottomRightContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "Controls"
horizontal_alignment = 1
[node name="Controls" type="Label" parent="PanelContainer/MarginContainer/BottomRightContainer/VBoxContainer"]
layout_mode = 2
text = "Left Click - Create Block
Right Click - Delete Block
Scoll Wheel - Change Block
Ctrl - Crouch
Shift - Sprint (until stop or toggled)"
[node name="CenterContainer" type="CenterContainer" parent="PanelContainer/MarginContainer"]
layout_mode = 2
size_flags_vertical = 8
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer/CenterContainer"]
layout_mode = 2
theme_override_constants/separation = 10
[node name="CloseButton" type="Button" parent="PanelContainer/MarginContainer/CenterContainer/HBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 20
text = "Close Menu"
[node name="ExitButton" type="Button" parent="PanelContainer/MarginContainer/CenterContainer/HBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 20
text = "Exit Game"

+ 35
- 0
scenes/ui/pause_menu.gd View File

@ -0,0 +1,35 @@
class_name PauseMenu
extends Panel
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("ui_cancel") and self.visible:
hide_menu()
elif event.is_action_pressed("ui_cancel") and !self.visible:
show_menu()
func hide_menu() -> void:
SignalManager.close_pause_menu.emit()
func show_menu() -> void:
SignalManager.open_pause_menu.emit()
# Signals
func _on_exit_game_button_pressed() -> void:
get_tree().quit()
func _on_resume_button_pressed() -> void:
hide_menu()
func _on_quick_load_pressed() -> void:
SaveGameManager.load_game()
hide_menu()
func _on_quick_save_pressed() -> void:
SaveGameManager.save_game()
hide_menu()
func _on_settings_button_pressed() -> void:
SignalManager.open_settings_menu.emit()

+ 1
- 0
scenes/ui/pause_menu.gd.uid View File

@ -0,0 +1 @@
uid://d3ysjgxxmyqpw

+ 80
- 0
scenes/ui/pause_menu.tscn View File

@ -0,0 +1,80 @@
[gd_scene load_steps=3 format=3 uid="uid://bopvfwcgnnawg"]
[ext_resource type="Theme" uid="uid://b5q8b0l6qp1dt" path="res://resources/pause_menu_theme.tres" id="1_6tw0m"]
[ext_resource type="Script" uid="uid://d3ysjgxxmyqpw" path="res://scenes/ui/pause_menu.gd" id="2_0lmf7"]
[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 = ExtResource("1_6tw0m")
script = ExtResource("2_0lmf7")
[node name="MenuBody" type="ColorRect" parent="."]
custom_minimum_size = Vector2(400, 0)
layout_mode = 1
anchors_preset = 13
anchor_left = 0.5
anchor_right = 0.5
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.192157, 0.239216, 0.352941, 1)
[node name="MarginContainer" type="MarginContainer" parent="MenuBody"]
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="CenterContainer" type="VBoxContainer" parent="MenuBody/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 4
theme_override_constants/separation = 20
[node name="Title" type="Label" parent="MenuBody/MarginContainer/CenterContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 40
text = "Paused"
horizontal_alignment = 1
vertical_alignment = 1
[node name="ButtonsContainer" type="VBoxContainer" parent="MenuBody/MarginContainer/CenterContainer"]
layout_mode = 2
size_flags_vertical = 6
theme_override_constants/separation = 20
[node name="ResumeButton" type="Button" parent="MenuBody/MarginContainer/CenterContainer/ButtonsContainer"]
layout_mode = 2
text = "Resume"
[node name="QuickSave" type="Button" parent="MenuBody/MarginContainer/CenterContainer/ButtonsContainer"]
layout_mode = 2
text = "Quick Save"
[node name="QuickLoad" type="Button" parent="MenuBody/MarginContainer/CenterContainer/ButtonsContainer"]
layout_mode = 2
text = "Quick Load"
[node name="SettingsButton" type="Button" parent="MenuBody/MarginContainer/CenterContainer/ButtonsContainer"]
layout_mode = 2
text = "Settings"
[node name="ExitGameButton" type="Button" parent="MenuBody/MarginContainer/CenterContainer/ButtonsContainer"]
layout_mode = 2
text = "Exit Game"
[connection signal="pressed" from="MenuBody/MarginContainer/CenterContainer/ButtonsContainer/ResumeButton" to="." method="_on_resume_button_pressed"]
[connection signal="pressed" from="MenuBody/MarginContainer/CenterContainer/ButtonsContainer/QuickSave" to="." method="_on_quick_save_pressed"]
[connection signal="pressed" from="MenuBody/MarginContainer/CenterContainer/ButtonsContainer/QuickLoad" to="." method="_on_quick_load_pressed"]
[connection signal="pressed" from="MenuBody/MarginContainer/CenterContainer/ButtonsContainer/SettingsButton" to="." method="_on_settings_button_pressed"]
[connection signal="pressed" from="MenuBody/MarginContainer/CenterContainer/ButtonsContainer/ExitGameButton" to="." method="_on_exit_game_button_pressed"]

+ 13
- 0
scenes/ui/settings_menu.gd View File

@ -0,0 +1,13 @@
class_name SettingsMenu
extends Panel
func _on_block_highlighting_toggled(toggled_on: bool) -> void:
Globals.enable_block_highlight = toggled_on
func _on_enable_waila_toggled(toggled_on: bool) -> void:
Globals.enable_waila = toggled_on
func _on_close_button_pressed() -> void:
SignalManager.resume_game.emit()

+ 1
- 0
scenes/ui/settings_menu.gd.uid View File

@ -0,0 +1 @@
uid://37ftrpj14msn

+ 98
- 0
scenes/ui/settings_menu.tscn View File

@ -0,0 +1,98 @@
[gd_scene load_steps=3 format=3 uid="uid://4bdgwwx27m71"]
[ext_resource type="Script" uid="uid://37ftrpj14msn" path="res://scenes/ui/settings_menu.gd" id="1_qwcqe"]
[ext_resource type="Theme" uid="uid://b5q8b0l6qp1dt" path="res://resources/pause_menu_theme.tres" id="2_mhswj"]
[node name="SettingsMenu" type="Panel"]
process_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_qwcqe")
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -300.0
offset_right = 300.0
offset_bottom = 137.0
grow_horizontal = 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="MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 20
[node name="Title" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 40
text = "Settings"
horizontal_alignment = 1
[node name="TabContainer" type="TabContainer" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
current_tab = 0
[node name="Game" type="VBoxContainer" parent="MarginContainer/VBoxContainer/TabContainer"]
layout_mode = 2
metadata/_tab_index = 0
[node name="BlockHighlighting" type="CheckButton" parent="MarginContainer/VBoxContainer/TabContainer/Game"]
layout_mode = 2
button_pressed = true
text = "Enable Block Highlighting"
[node name="EnableWaila" type="CheckButton" parent="MarginContainer/VBoxContainer/TabContainer/Game"]
layout_mode = 2
button_pressed = true
text = "Enable Waila"
[node name="Graphics (Todo)" type="VBoxContainer" parent="MarginContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
metadata/_tab_index = 1
[node name="Audio (TODO)" type="VBoxContainer" parent="MarginContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
metadata/_tab_index = 2
[node name="Inputs (TODO)" type="VBoxContainer" parent="MarginContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
metadata/_tab_index = 3
[node name="BottomRow" type="MarginContainer" parent="."]
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 = -40.0
offset_right = 82.5
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_bottom = 10
[node name="HBoxContainer" type="HBoxContainer" parent="BottomRow"]
layout_mode = 2
theme_override_constants/separation = 20
[node name="CloseButton" type="Button" parent="BottomRow/HBoxContainer"]
custom_minimum_size = Vector2(141, 36)
layout_mode = 2
theme = ExtResource("2_mhswj")
text = "Close Settings"
[connection signal="toggled" from="MarginContainer/VBoxContainer/TabContainer/Game/BlockHighlighting" to="." method="_on_block_highlighting_toggled"]
[connection signal="toggled" from="MarginContainer/VBoxContainer/TabContainer/Game/EnableWaila" to="." method="_on_enable_waila_toggled"]
[connection signal="pressed" from="BottomRow/HBoxContainer/CloseButton" to="." method="_on_close_button_pressed"]

+ 45
- 24
scenes/ui/ui.gd View File

@ -4,40 +4,61 @@ extends CanvasLayer
@onready var crosshair: CenterContainer = $Crosshair @onready var crosshair: CenterContainer = $Crosshair
@onready var inventory: Inventory = $Inventory @onready var inventory: Inventory = $Inventory
@onready var options_menu: MarginContainer = $OptionsMenu
@onready var quick_slots: MarginContainer = $QuickSlots @onready var quick_slots: MarginContainer = $QuickSlots
@onready var pause_menu: PauseMenu = $PauseMenu
@onready var settings_menu: SettingsMenu = $SettingsMenu
@onready var waila: Waila = $Waila @onready var waila: Waila = $Waila
func _process(_delta: float) -> void:
if Input.is_action_just_pressed("ui_cancel"):
toggle_options_menu()
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)
func toggle_options_menu() -> void:
options_menu.visible = !options_menu.visible
Globals.is_options_menu_active = options_menu.visible
crosshair.visible = !options_menu.visible
quick_slots.visible = !options_menu.visible
func hide_menus() -> void:
pause_menu.visible = false
settings_menu.visible = false
inventory.visible = false
if options_menu.visible:
waila.visible = false
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
else:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
func hide_ui_elements() -> void:
crosshair.visible = false
quick_slots.visible = false
waila.visible = false
# Options
func _on_block_highlights_toggled(toggled_on: bool) -> void:
Globals.enable_block_highlight = toggled_on
func _on_close_pause_menu() -> void:
SignalManager.resume_game.emit()
func _on_waila_toggled(toggled_on: bool) -> void:
Globals.enable_waila = toggled_on
func _on_close_settings_menu() -> void:
SignalManager.resume_game.emit()
func _on_open_pause_menu() -> void:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
# Signals
func _on_close_button_pressed() -> void:
toggle_options_menu()
hide_ui_elements()
hide_menus()
pause_menu.visible = true
func _on_exit_button_pressed() -> void:
get_tree().quit()
get_tree().paused = true
func _on_open_settings_menu() -> void:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
hide_ui_elements()
hide_menus()
settings_menu.visible = true
get_tree().paused = true
func _on_resume_game() -> void:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
hide_menus()
crosshair.visible = true
quick_slots.visible = true
waila.visible = true
get_tree().paused = false

+ 7
- 10
scenes/ui/ui.tscn View File

@ -1,11 +1,12 @@
[gd_scene load_steps=7 format=3 uid="uid://c7fj7wla8bd70"]
[gd_scene load_steps=8 format=3 uid="uid://c7fj7wla8bd70"]
[ext_resource type="Script" uid="uid://bslimr2y4lnvq" path="res://scenes/ui/ui.gd" id="1_aac20"] [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://dvogu3djluqsn" path="res://scenes/ui/waila.tscn" id="1_u7n8c"]
[ext_resource type="PackedScene" uid="uid://w6wtjosjn1qu" path="res://scenes/ui/options_menu.tscn" id="2_f5cxw"]
[ext_resource type="PackedScene" uid="uid://cbiygbgpfk220" path="res://scenes/ui/quick_slots.tscn" id="4_g5kmx"] [ext_resource type="PackedScene" uid="uid://cbiygbgpfk220" path="res://scenes/ui/quick_slots.tscn" id="4_g5kmx"]
[ext_resource type="PackedScene" uid="uid://dcr25y1lw4wjp" path="res://scenes/ui/inventory/inventory.tscn" id="5_0dwhk"] [ext_resource type="PackedScene" uid="uid://dcr25y1lw4wjp" path="res://scenes/ui/inventory/inventory.tscn" id="5_0dwhk"]
[ext_resource type="PackedScene" uid="uid://bopvfwcgnnawg" path="res://scenes/ui/pause_menu.tscn" id="6_7vp6q"]
[ext_resource type="Resource" uid="uid://blfp6tiir282o" path="res://resources/inventory/player_inventory_testing.tres" id="6_pfayw"] [ext_resource type="Resource" uid="uid://blfp6tiir282o" path="res://resources/inventory/player_inventory_testing.tres" id="6_pfayw"]
[ext_resource type="PackedScene" uid="uid://4bdgwwx27m71" path="res://scenes/ui/settings_menu.tscn" id="7_7vp6q"]
[node name="UI" type="CanvasLayer"] [node name="UI" type="CanvasLayer"]
script = ExtResource("1_aac20") script = ExtResource("1_aac20")
@ -29,18 +30,14 @@ mouse_filter = 2
[node name="Waila" parent="." instance=ExtResource("1_u7n8c")] [node name="Waila" parent="." instance=ExtResource("1_u7n8c")]
[node name="OptionsMenu" parent="." instance=ExtResource("2_f5cxw")]
visible = false
[node name="QuickSlots" parent="." instance=ExtResource("4_g5kmx")] [node name="QuickSlots" parent="." instance=ExtResource("4_g5kmx")]
[node name="Inventory" parent="." instance=ExtResource("5_0dwhk")] [node name="Inventory" parent="." instance=ExtResource("5_0dwhk")]
visible = false visible = false
inventory_resource = ExtResource("6_pfayw") inventory_resource = ExtResource("6_pfayw")
[connection signal="toggled" from="OptionsMenu/PanelContainer/MarginContainer/LeftContainer/VBoxContainer/BlockHighlights/CheckButton" to="." method="_on_block_highlights_toggled"]
[connection signal="toggled" from="OptionsMenu/PanelContainer/MarginContainer/LeftContainer/VBoxContainer/Waila/CheckButton" to="." method="_on_waila_toggled"]
[connection signal="pressed" from="OptionsMenu/PanelContainer/MarginContainer/CenterContainer/HBoxContainer/CloseButton" to="." method="_on_close_button_pressed"]
[connection signal="pressed" from="OptionsMenu/PanelContainer/MarginContainer/CenterContainer/HBoxContainer/ExitButton" to="." method="_on_exit_button_pressed"]
[node name="PauseMenu" parent="." instance=ExtResource("6_7vp6q")]
visible = false
[editable path="OptionsMenu"]
[node name="SettingsMenu" parent="." instance=ExtResource("7_7vp6q")]
visible = false

Loading…
Cancel
Save