显示暂停菜单

master
lightyears 2 years ago
parent 00fca1bce0
commit f001034025
Signed by: lightyears
GPG Key ID: 98D80DDF26D4F2F9

@ -1,22 +0,0 @@
using CommunityToolkit.Diagnostics;
namespace CMSGame
{
public partial class PauseMenu : VBoxContainer
{
public void On_ResumeBattleButton_Pressed()
{
Hide();
}
public void On_SettingsMenuButton_Pressed()
{
GetNode<Popup>("%SettingsPopup").PopupCentered();
}
public void On_EscapeFromBattleButton_Pressed()
{
ThrowHelper.ThrowNotSupportedException();
}
}
}

@ -1,43 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://c1c87rr8eubhg"]
[ext_resource type="Script" path="res://Components/PauseMenu.cs" id="1_p1e8d"]
[ext_resource type="PackedScene" uid="uid://dpd2tih2iudvb" path="res://Components/SettingsPopup.tscn" id="2_bymub"]
[node name="PauseMenu" type="VBoxContainer"]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -86.0
offset_top = -33.0
offset_right = 86.0
offset_bottom = 33.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
size_flags_vertical = 4
script = ExtResource("1_p1e8d")
[node name="ResumeBattleButton" type="Button" parent="."]
unique_name_in_owner = true
layout_mode = 2
text = "继续战斗"
[node name="SettingsMenuButton" type="Button" parent="."]
unique_name_in_owner = true
layout_mode = 2
text = "游戏设置"
[node name="EscapeFromBattleButton" type="Button" parent="."]
unique_name_in_owner = true
layout_mode = 2
text = "退出战斗"
[node name="SettingsPopup" parent="." instance=ExtResource("2_bymub")]
unique_name_in_owner = true
visible = false
[connection signal="pressed" from="ResumeBattleButton" to="." method="On_ResumeBattleButton_Pressed"]
[connection signal="pressed" from="SettingsMenuButton" to="." method="On_SettingsMenuButton_Pressed"]
[connection signal="pressed" from="EscapeFromBattleButton" to="." method="On_EscapeFromBattleButton_Pressed"]

@ -1,11 +1,7 @@
namespace CMSGame
{
public partial class SettingsPopup : Popup
public partial class SettingsMenuPopup : Popup
{
public override void _Ready()
{
}
public void On_ConfirmButton_Pressed()
{
Hide();

@ -1,18 +1,18 @@
[gd_scene load_steps=3 format=3 uid="uid://dpd2tih2iudvb"]
[gd_scene load_steps=3 format=3 uid="uid://cslqihnfw0me2"]
[ext_resource type="PackedScene" uid="uid://blk2uswpo2a7k" path="res://Components/SettingsMenu.tscn" id="1_573hy"]
[ext_resource type="Script" path="res://Components/SettingsPopup.cs" id="1_ts6p7"]
[ext_resource type="Script" path="res://Components/SettingsMenuPopup.cs" id="1_it4yp"]
[ext_resource type="PackedScene" uid="uid://blk2uswpo2a7k" path="res://Components/SettingsMenu.tscn" id="2_qc1kk"]
[node name="SettingsPopup" type="Popup"]
[node name="SettingsMenuPopup" type="Popup"]
size = Vector2i(172, 101)
visible = true
script = ExtResource("1_ts6p7")
script = ExtResource("1_it4yp")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
offset_right = 40.0
offset_bottom = 40.0
[node name="SettingsMenu" parent="VBoxContainer" instance=ExtResource("1_573hy")]
[node name="SettingsMenu" parent="VBoxContainer" instance=ExtResource("2_qc1kk")]
layout_mode = 2
[node name="ConfirmButton" type="Button" parent="VBoxContainer"]

@ -0,0 +1,10 @@
namespace CMSGame
{
public static class NodeExtension
{
public static T GetUniqueNode<T>(this Node node, string uniqueName) where T : Node
{
return node.GetNode<T>($"%{uniqueName}");
}
}
}

@ -2,15 +2,23 @@ namespace CMSGame
{
public partial class BattleScene : Node3D
{
public Popup PauseMenuPopup;
public Popup SettingsMenuPopup;
public Label BattleTimeLabel;
public double Time;
public bool IsPause = false;
private bool IsPauseBeforePauseMenuPopup = false;
public override void _Ready()
{
BattleTimeLabel = GetNode<Label>($"%{nameof(BattleTimeLabel)}");
PauseMenuPopup = this.GetUniqueNode<Popup>($"%{nameof(PauseMenuPopup)}");
SettingsMenuPopup = this.GetUniqueNode<Popup>($"%{nameof(SettingsMenuPopup)}");
BattleTimeLabel = this.GetUniqueNode<Label>($"%{nameof(BattleTimeLabel)}");
}
public override void _Process(double delta)
@ -24,10 +32,14 @@ namespace CMSGame
public override void _UnhandledInput(InputEvent input)
{
if (Input.IsActionPressed("battle_pause_toggle"))
if (input.IsActionPressed("battle_pause_toggle"))
{
TogglePauseBattle();
}
else if (input.IsActionPressed("battle_pause"))
{
ShowPauseMenu();
}
}
public void UpdateUI()
@ -40,9 +52,31 @@ namespace CMSGame
IsPause = !IsPause;
}
public void On_PauseBattleButton_Pressed()
private void ShowPauseMenu()
{
IsPauseBeforePauseMenuPopup = IsPause;
IsPause = true;
PauseMenuPopup.PopupCentered();
}
private void On_PauseBattleButton_Pressed()
{
TogglePauseBattle();
}
private void On_PauseMenuPopup_PopupHide()
{
IsPause = IsPauseBeforePauseMenuPopup;
}
private void On_ResumeBattleButton_Pressed()
{
PauseMenuPopup.Hide();
}
private void On_SettingsMenuButton_Pressed()
{
SettingsMenuPopup.PopupCentered();
}
}
}

@ -1,6 +1,7 @@
[gd_scene load_steps=6 format=3 uid="uid://cx6yq8awwkqv3"]
[gd_scene load_steps=7 format=3 uid="uid://cx6yq8awwkqv3"]
[ext_resource type="Script" path="res://Scenes/BattleScene.cs" id="1_n6bn7"]
[ext_resource type="PackedScene" uid="uid://cslqihnfw0me2" path="res://Components/SettingsMenuPopup.tscn" id="2_aucd7"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_vrgig"]
sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
@ -27,7 +28,6 @@ environment = SubResource("Environment_hv4sx")
transform = Transform3D(1, 0, 0, 0, 0.93328, 0.35915, 0, -0.35915, 0.93328, 0, 1.08667, 0)
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(0.944216, -0.122152, 0.305836, 0, 0.928667, 0.370914, -0.329328, -0.350223, 0.876862, 1.24593, 0.913904, 0)
[node name="CanvasLayer" type="CanvasLayer" parent="Camera3D"]
@ -62,10 +62,51 @@ grow_vertical = 0
focus_mode = 0
text = "按下 Space 暂停时间"
[node name="PauseMenuPopup" type="Popup" parent="Camera3D/CanvasLayer/HUD"]
unique_name_in_owner = true
size = Vector2i(242, 306)
[node name="PauseMenu" type="VBoxContainer" parent="Camera3D/CanvasLayer/HUD/PauseMenuPopup"]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -86.0
offset_top = -50.5
offset_right = 86.0
offset_bottom = 50.5
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
size_flags_vertical = 4
[node name="ResumeBattleButton" type="Button" parent="Camera3D/CanvasLayer/HUD/PauseMenuPopup/PauseMenu"]
unique_name_in_owner = true
layout_mode = 2
text = "继续战斗"
[node name="SettingsMenuButton" type="Button" parent="Camera3D/CanvasLayer/HUD/PauseMenuPopup/PauseMenu"]
unique_name_in_owner = true
layout_mode = 2
text = "游戏设置"
[node name="EscapeFromBattleButton" type="Button" parent="Camera3D/CanvasLayer/HUD/PauseMenuPopup/PauseMenu"]
unique_name_in_owner = true
layout_mode = 2
text = "退出战斗"
[node name="SettingsMenuPopup" parent="Camera3D/CanvasLayer/HUD/PauseMenuPopup" instance=ExtResource("2_aucd7")]
unique_name_in_owner = true
visible = false
[node name="Characters" type="Node3D" parent="."]
[node name="MeshInstance3D" type="MeshInstance3D" parent="Characters"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -2.36628)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.30333, 0, -2.36628)
mesh = SubResource("BoxMesh_7g2up")
[connection signal="pressed" from="Camera3D/CanvasLayer/HUD/PauseBattleButton" to="." method="On_PauseBattleButton_Pressed"]
[connection signal="popup_hide" from="Camera3D/CanvasLayer/HUD/PauseMenuPopup" to="." method="On_PauseMenuPopup_PopupHide"]
[connection signal="pressed" from="Camera3D/CanvasLayer/HUD/PauseMenuPopup/PauseMenu/ResumeBattleButton" to="." method="On_ResumeBattleButton_Pressed"]
[connection signal="pressed" from="Camera3D/CanvasLayer/HUD/PauseMenuPopup/PauseMenu/SettingsMenuButton" to="." method="On_SettingsMenuButton_Pressed"]

@ -1,7 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://dxnmltew81ny0"]
[gd_scene load_steps=3 format=3 uid="uid://c3ovsoq6o7y3t"]
[ext_resource type="Script" path="res://Scenes/MainScene.cs" id="1_kso8c"]
[ext_resource type="PackedScene" uid="uid://dpd2tih2iudvb" path="res://Components/SettingsPopup.tscn" id="2_d0nn6"]
[ext_resource type="PackedScene" uid="uid://cslqihnfw0me2" path="res://Components/SettingsMenuPopup.tscn" id="2_d0nn6"]
[node name="MainScene" type="Control"]
layout_mode = 3

@ -47,3 +47,8 @@ battle_pause_toggle={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"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":0,"echo":false,"script":null)
, null]
}
battle_pause={
"deadzone": 0.5,
"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":4194305,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}

Loading…
Cancel
Save