From 10d0008017926bc22e66b8668059b6771d8f712c Mon Sep 17 00:00:00 2001 From: lightyears Date: Fri, 2 Jun 2023 22:05:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=9F=B3=E9=87=8F=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Autoloads/GameSettings.cs | 3 + Components/Settings/AudioSettingsMenu.cs | 22 +++++ Components/Settings/BattleSettingsMenu.cs | 10 +++ Components/Settings/DeveloperOptionsMenu.cs | 14 ++++ Components/Settings/SettingsMenu.cs | 12 +++ Components/Settings/SettingsMenu.tscn | 80 +++++++++++++++++++ .../{ => Settings}/SettingsMenuPopup.cs | 0 .../{ => Settings}/SettingsMenuPopup.tscn | 4 +- Components/Settings/VideoSettingsMenu.cs | 10 +++ Components/SettingsMenu.cs | 19 ----- Components/SettingsMenu.tscn | 13 --- Scenes/MainScene.tscn | 23 +++--- default_bus_layout.tres | 6 ++ 13 files changed, 171 insertions(+), 45 deletions(-) create mode 100644 Components/Settings/AudioSettingsMenu.cs create mode 100644 Components/Settings/BattleSettingsMenu.cs create mode 100644 Components/Settings/DeveloperOptionsMenu.cs create mode 100644 Components/Settings/SettingsMenu.cs create mode 100644 Components/Settings/SettingsMenu.tscn rename Components/{ => Settings}/SettingsMenuPopup.cs (100%) rename Components/{ => Settings}/SettingsMenuPopup.tscn (81%) create mode 100644 Components/Settings/VideoSettingsMenu.cs delete mode 100644 Components/SettingsMenu.cs delete mode 100644 Components/SettingsMenu.tscn diff --git a/Autoloads/GameSettings.cs b/Autoloads/GameSettings.cs index 7d8fdc9..063ce93 100644 --- a/Autoloads/GameSettings.cs +++ b/Autoloads/GameSettings.cs @@ -17,6 +17,8 @@ namespace CMSGame public VideoSettings VideoSettings => GetSettings(); + public AudioSettings AudioSettings => GetSettings(); + public GameSettings() { RegisterAllSettings(); @@ -32,6 +34,7 @@ namespace CMSGame { RegisterSettings("BattleSettings.json"); RegisterSettings("VideoSettings.json"); + RegisterSettings("AudioSettings.json"); } protected void RegisterSettings(string filename) where TSettings : SettingsBase, new() diff --git a/Components/Settings/AudioSettingsMenu.cs b/Components/Settings/AudioSettingsMenu.cs new file mode 100644 index 0000000..2789ee9 --- /dev/null +++ b/Components/Settings/AudioSettingsMenu.cs @@ -0,0 +1,22 @@ +namespace CMSGame +{ + public partial class AudioSettingsMenu : VBoxContainer + { + public GameSettings? GameSettings; + + public HSlider? MasterVolumeSlider; + + public HSlider? MusicVolumeSlider; + + public HSlider? SoundEffectVolumeSlider; + + public override void _Ready() + { + this.GetAutoloadNode(ref GameSettings, nameof(GameSettings)); + + MasterVolumeSlider = this.GetUniqueNode(nameof(MasterVolumeSlider)); + MusicVolumeSlider = this.GetUniqueNode(nameof(MusicVolumeSlider)); + SoundEffectVolumeSlider = this.GetUniqueNode(nameof(SoundEffectVolumeSlider)); + } + } +} diff --git a/Components/Settings/BattleSettingsMenu.cs b/Components/Settings/BattleSettingsMenu.cs new file mode 100644 index 0000000..9158357 --- /dev/null +++ b/Components/Settings/BattleSettingsMenu.cs @@ -0,0 +1,10 @@ +namespace CMSGame +{ + public partial class BattleSettingsMenu : VBoxContainer + { + public override void _Ready() + { + } + } +} + diff --git a/Components/Settings/DeveloperOptionsMenu.cs b/Components/Settings/DeveloperOptionsMenu.cs new file mode 100644 index 0000000..b8aefb3 --- /dev/null +++ b/Components/Settings/DeveloperOptionsMenu.cs @@ -0,0 +1,14 @@ +namespace CMSGame +{ + public partial class DeveloperOptionsMenu : VBoxContainer + { + public override void _Ready() + { + } + + public void On_OpenUserDataDirButton_Pressed() + { + OS.ShellOpen(new GodotPath("user://")); + } + } +} diff --git a/Components/Settings/SettingsMenu.cs b/Components/Settings/SettingsMenu.cs new file mode 100644 index 0000000..eb76b21 --- /dev/null +++ b/Components/Settings/SettingsMenu.cs @@ -0,0 +1,12 @@ +namespace CMSGame +{ + public partial class SettingsMenu : TabContainer + { + public GameSettings? Settings; + + public override void _Ready() + { + this.GetAutoloadNode(ref Settings, nameof(GameSettings)); + } + } +} diff --git a/Components/Settings/SettingsMenu.tscn b/Components/Settings/SettingsMenu.tscn new file mode 100644 index 0000000..7532ad6 --- /dev/null +++ b/Components/Settings/SettingsMenu.tscn @@ -0,0 +1,80 @@ +[gd_scene load_steps=6 format=3 uid="uid://blk2uswpo2a7k"] + +[ext_resource type="Script" path="res://Components/Settings/SettingsMenu.cs" id="1_av57b"] +[ext_resource type="Script" path="res://Components/Settings/DeveloperOptionsMenu.cs" id="2_dgytf"] +[ext_resource type="Script" path="res://Components/Settings/BattleSettingsMenu.cs" id="2_xtjo5"] +[ext_resource type="Script" path="res://Components/Settings/VideoSettingsMenu.cs" id="3_68iki"] +[ext_resource type="Script" path="res://Components/Settings/AudioSettingsMenu.cs" id="4_ciy5h"] + +[node name="SettingsMenu" type="TabContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_av57b") + +[node name="BattleSettingsMenu" type="VBoxContainer" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 +script = ExtResource("2_xtjo5") + +[node name="VideoSettingsMenu" type="VBoxContainer" parent="."] +unique_name_in_owner = true +visible = false +layout_mode = 2 +script = ExtResource("3_68iki") + +[node name="AudioSettingsMenu" type="VBoxContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 +script = ExtResource("4_ciy5h") + +[node name="GridContainer" type="GridContainer" parent="AudioSettingsMenu"] +layout_mode = 2 +columns = 2 + +[node name="Label3" type="Label" parent="AudioSettingsMenu/GridContainer"] +layout_mode = 2 +text = "主音量" + +[node name="MasterVolumnSlider" type="HSlider" parent="AudioSettingsMenu/GridContainer"] +layout_mode = 2 +max_value = 1.0 +step = 0.01 +value = 0.8 + +[node name="Label" type="Label" parent="AudioSettingsMenu/GridContainer"] +layout_mode = 2 +text = "音乐音量" + +[node name="MusicVolumnSlider" type="HSlider" parent="AudioSettingsMenu/GridContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 +max_value = 1.0 +step = 0.01 +value = 0.8 + +[node name="Label2" type="Label" parent="AudioSettingsMenu/GridContainer"] +layout_mode = 2 +text = "音效音量" + +[node name="SoundEffectVolumnSlider" type="HSlider" parent="AudioSettingsMenu/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +max_value = 1.0 +step = 0.01 +value = 0.8 + +[node name="DeveloperOptionsMenu" type="VBoxContainer" parent="."] +visible = false +layout_mode = 2 +script = ExtResource("2_dgytf") + +[node name="OpenUserDataDirButton" type="Button" parent="DeveloperOptionsMenu"] +layout_mode = 2 +text = "打开用户数据目录" + +[connection signal="pressed" from="DeveloperOptionsMenu/OpenUserDataDirButton" to="DeveloperOptionsMenu" method="On_OpenUserDataDirButton_Pressed"] diff --git a/Components/SettingsMenuPopup.cs b/Components/Settings/SettingsMenuPopup.cs similarity index 100% rename from Components/SettingsMenuPopup.cs rename to Components/Settings/SettingsMenuPopup.cs diff --git a/Components/SettingsMenuPopup.tscn b/Components/Settings/SettingsMenuPopup.tscn similarity index 81% rename from Components/SettingsMenuPopup.tscn rename to Components/Settings/SettingsMenuPopup.tscn index 3437318..a54444b 100644 --- a/Components/SettingsMenuPopup.tscn +++ b/Components/Settings/SettingsMenuPopup.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://cslqihnfw0me2"] -[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"] +[ext_resource type="Script" path="res://Components/Settings/SettingsMenuPopup.cs" id="1_it4yp"] +[ext_resource type="PackedScene" uid="uid://blk2uswpo2a7k" path="res://Components/Settings/SettingsMenu.tscn" id="2_qc1kk"] [node name="SettingsMenuPopup" type="Popup"] size = Vector2i(172, 101) diff --git a/Components/Settings/VideoSettingsMenu.cs b/Components/Settings/VideoSettingsMenu.cs new file mode 100644 index 0000000..9bbee34 --- /dev/null +++ b/Components/Settings/VideoSettingsMenu.cs @@ -0,0 +1,10 @@ +namespace CMSGame +{ + public partial class VideoSettingsMenu : VBoxContainer + { + public override void _Ready() + { + } + } +} + diff --git a/Components/SettingsMenu.cs b/Components/SettingsMenu.cs deleted file mode 100644 index 17ce223..0000000 --- a/Components/SettingsMenu.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace CMSGame -{ - public partial class SettingsMenu : VBoxContainer - { - public GameSettings? Settings; - - public CheckBox? PauseBattleWhenCharacterIsSelectedCheckBox; - - public override void _Ready() - { - this.GetAutoloadNode(ref Settings, nameof(GameSettings)); - this.GetUniqueNode(ref PauseBattleWhenCharacterIsSelectedCheckBox, nameof(PauseBattleWhenCharacterIsSelectedCheckBox)); - } - - public void On_PauseBattleWhenCharacterIsSelectedCheckBox_Toggled(bool pressed) - { - } - } -} diff --git a/Components/SettingsMenu.tscn b/Components/SettingsMenu.tscn deleted file mode 100644 index 3508da7..0000000 --- a/Components/SettingsMenu.tscn +++ /dev/null @@ -1,13 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://blk2uswpo2a7k"] - -[ext_resource type="Script" path="res://Components/SettingsMenu.cs" id="1_b12ly"] - -[node name="SettingsMenu" type="VBoxContainer"] -script = ExtResource("1_b12ly") - -[node name="PauseBattleWhenCharacterIsSelectedCheckBox" type="CheckBox" parent="."] -unique_name_in_owner = true -layout_mode = 2 -text = "选中角色时暂停战斗" - -[connection signal="toggled" from="PauseBattleWhenCharacterIsSelectedCheckBox" to="." method="On_PauseBattleWhenCharacterIsSelectedCheckBox_Toggled"] diff --git a/Scenes/MainScene.tscn b/Scenes/MainScene.tscn index 1c14afe..b5fe19a 100644 --- a/Scenes/MainScene.tscn +++ b/Scenes/MainScene.tscn @@ -24,29 +24,30 @@ text = "背景图像" horizontal_alignment = 1 vertical_alignment = 1 -[node name="GameMenu" type="VBoxContainer" parent="."] +[node name="StartMenu" type="VBoxContainer" parent="."] layout_mode = 1 anchors_preset = 4 anchor_top = 0.5 anchor_bottom = 0.5 -offset_left = 85.0 -offset_top = -50.5 -offset_right = 221.0 -offset_bottom = 50.5 +offset_left = 151.0 +offset_top = -65.5 +offset_right = 287.0 +offset_bottom = 65.5 grow_vertical = 2 +theme_override_constants/separation = 16 -[node name="StartButton" type="Button" parent="GameMenu"] +[node name="StartButton" type="Button" parent="StartMenu"] layout_mode = 2 text = "开始游戏" -[node name="SettingsButton" type="Button" parent="GameMenu"] +[node name="SettingsButton" type="Button" parent="StartMenu"] layout_mode = 2 text = "设置" -[node name="QuitButton" type="Button" parent="GameMenu"] +[node name="QuitButton" type="Button" parent="StartMenu"] layout_mode = 2 text = "退出" -[connection signal="pressed" from="GameMenu/StartButton" to="." method="On_BattleDemo1Button_Pressed"] -[connection signal="pressed" from="GameMenu/SettingsButton" to="." method="On_SettingsPopupButton_Pressed"] -[connection signal="pressed" from="GameMenu/QuitButton" to="." method="On_QuitButton_Pressed"] +[connection signal="pressed" from="StartMenu/StartButton" to="." method="On_BattleDemo1Button_Pressed"] +[connection signal="pressed" from="StartMenu/SettingsButton" to="." method="On_SettingsPopupButton_Pressed"] +[connection signal="pressed" from="StartMenu/QuitButton" to="." method="On_QuitButton_Pressed"] diff --git a/default_bus_layout.tres b/default_bus_layout.tres index 03948d4..9eff256 100644 --- a/default_bus_layout.tres +++ b/default_bus_layout.tres @@ -7,3 +7,9 @@ bus/1/mute = false bus/1/bypass_fx = false bus/1/volume_db = 0.0 bus/1/send = &"Master" +bus/2/name = &"SoundEffect" +bus/2/solo = false +bus/2/mute = false +bus/2/bypass_fx = false +bus/2/volume_db = 0.0 +bus/2/send = &"Master"