Add PauseManager functionality; implement pause menu and toggle logic

This commit is contained in:
2025-08-23 23:09:07 +02:00
parent 7e8ccb061a
commit c0d18507e3
4 changed files with 82 additions and 1 deletions

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=22 format=3 uid="uid://bfil8sd154327"]
[gd_scene load_steps=24 format=3 uid="uid://bfil8sd154327"]
[ext_resource type="Script" uid="uid://t71ewkpa5uqs" path="res://Scenes/Main/Main.cs" id="1_p8rbg"]
[ext_resource type="Script" uid="uid://b77vh831r1e3c" path="res://Scenes/Main/MiraclePanel.cs" id="2_hcu3t"]
@@ -16,11 +16,15 @@
[ext_resource type="PackedScene" uid="uid://8w7tvsgkev1y" path="res://Scenes/tree.tscn" id="8_hcu3t"]
[ext_resource type="Shader" uid="uid://bf8nk145fjkgh" path="res://Shaders/corruption_shader.gdshader" id="9_wgovn"]
[ext_resource type="PackedScene" uid="uid://cqkye7yykakns" path="res://Scenes/Followers/FollowerMarker.tscn" id="11_5ci8a"]
[ext_resource type="Script" uid="uid://djmtle2h3yd2e" path="res://Scripts/Components/PauseManager.cs" id="11_xggvw"]
[ext_resource type="PackedScene" uid="uid://wysxqe44rxhf" path="res://Scenes/TempleMarker.tscn" id="14_udh0u"]
[ext_resource type="PackedScene" uid="uid://xk2xirjd1sma" path="res://Scenes/moddable_visual.tscn" id="17_qdkat"]
[ext_resource type="Script" uid="uid://furbvcmw31bx" path="res://Scripts/Components/ForestVisualizer.cs" id="18_qdkat"]
[ext_resource type="Script" uid="uid://cw8gpeaq3yfjn" path="res://Scripts/Components/RoadManager.cs" id="19_qdkat"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xggvw"]
bg_color = Color(0, 0, 0, 0.733333)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_cv8e0"]
shader = ExtResource("9_wgovn")
shader_parameter/terrain_color = Color(0.152941, 0.682353, 0.376471, 1)
@@ -133,6 +137,48 @@ _sfx = NodePath("Advance Age")
[node name="Advance Age" type="AudioStreamPlayer" parent="Notification Layer"]
stream = ExtResource("8_4etfk")
[node name="PauseManager" type="CanvasLayer" parent="." node_paths=PackedStringArray("_pauseButton", "_pauseMenu")]
script = ExtResource("11_xggvw")
_pauseButton = NodePath("MarginContainer/Button")
_pauseMenu = NodePath("PanelContainer")
[node name="MarginContainer" type="MarginContainer" parent="PauseManager"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 4
theme_override_constants/margin_top = 4
theme_override_constants/margin_right = 4
theme_override_constants/margin_bottom = 4
[node name="Button" type="Button" parent="PauseManager/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 0
focus_mode = 0
text = "Pause"
[node name="PanelContainer" type="PanelContainer" parent="PauseManager"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
size_flags_vertical = 4
mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_xggvw")
[node name="Label" type="Label" parent="PauseManager/PanelContainer"]
layout_mode = 2
size_flags_vertical = 1
text = "Paused"
horizontal_alignment = 1
vertical_alignment = 1
uppercase = true
[node name="Camera2D" type="Camera2D" parent="."]
[node name="World Sprite" type="Sprite2D" parent="."]

View File

@@ -0,0 +1,29 @@
using Godot;
namespace ParasiticGod.Scripts.Components;
[GlobalClass]
public partial class PauseManager : CanvasLayer
{
[Export] private Button _pauseButton;
[Export] private Control _pauseMenu;
public override void _Ready()
{
ProcessMode = ProcessModeEnum.Always;
_pauseMenu.Hide();
_pauseButton.Pressed += TogglePause;
}
public override void _Input(InputEvent @event)
{
if (@event.IsActionPressed("pause")) TogglePause();
}
private void TogglePause()
{
var isPaused = !GetTree().Paused;
GetTree().Paused = isPaused;
_pauseMenu.Visible = isPaused;
}
}

View File

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

View File

@@ -56,6 +56,11 @@ limbo_console_search_history={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":82,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
pause={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
]
}
[rendering]