使用 public property 而不是 field

master
lightyears 2 years ago
parent 7cfe069804
commit 947bdc83f0
Signed by: lightyears
GPG Key ID: 98D80DDF26D4F2F9

@ -9,7 +9,7 @@ namespace CMSGame
public record class VideoSettings : GameSettings public record class VideoSettings : GameSettings
{ {
public bool UseFullScreen = false; public bool UseFullScreen { set; get; } = false;
} }
public record class AudioSettings : GameSettings public record class AudioSettings : GameSettings
@ -17,11 +17,11 @@ namespace CMSGame
/// <summary> /// <summary>
/// 音乐音量 /// 音乐音量
/// </summary> /// </summary>
public double MusicVolume = 80; public double MusicVolume { set; get; } = 80;
/// <summary> /// <summary>
/// 音效音量 /// 音效音量
/// </summary> /// </summary>
public double SoundEffectVolume = 80; public double SoundEffectVolume { set; get; } = 80;
} }
} }

@ -11,7 +11,7 @@ namespace CMSGame
{ {
protected Dictionary<Type, GameSettings> CurrentSettings = new(); protected Dictionary<Type, GameSettings> CurrentSettings = new();
protected Dictionary<Type, GameSettings> OriginalSettings = new(); protected Dictionary<Type, GameSettings> PreviousSettings = new();
protected Dictionary<Type, string> SettingsPaths = new(); protected Dictionary<Type, string> SettingsPaths = new();
@ -24,12 +24,9 @@ namespace CMSGame
public GameSettingsNode() public GameSettingsNode()
{ {
RegisterAllSettings(); RegisterAllSettings();
}
public override void _Ready()
{
MakeDirectories(); MakeDirectories();
LoadAllSettings(); LoadAllSettings();
ApplyVideoSettings();
} }
protected void RegisterAllSettings() protected void RegisterAllSettings()
@ -58,7 +55,7 @@ namespace CMSGame
{ {
foreach (var settingsType in SettingsPaths.Keys) foreach (var settingsType in SettingsPaths.Keys)
{ {
if (!OriginalSettings.ContainsKey(settingsType) || OriginalSettings[settingsType] != CurrentSettings[settingsType]) if (!PreviousSettings.ContainsKey(settingsType) || PreviousSettings[settingsType] != CurrentSettings[settingsType])
{ {
SaveSettings(settingsType); SaveSettings(settingsType);
} }
@ -76,8 +73,8 @@ namespace CMSGame
var settings = JsonConvert.DeserializeObject(settingsText, settingsType); var settings = JsonConvert.DeserializeObject(settingsText, settingsType);
if (settings != null) if (settings != null)
{ {
OriginalSettings[settingsType] = (GameSettings)settings; PreviousSettings[settingsType] = (GameSettings)settings;
CurrentSettings[settingsType] = (GameSettings)settings; CurrentSettings[settingsType] = (GameSettings)settings with { };
} }
} }
@ -102,5 +99,17 @@ namespace CMSGame
using var file = FileAccess.Open(SettingsPaths[settingsType], FileAccess.ModeFlags.Write); using var file = FileAccess.Open(SettingsPaths[settingsType], FileAccess.ModeFlags.Write);
file.StoreString(settingsText); file.StoreString(settingsText);
} }
public void ApplyVideoSettings()
{
if (VideoSettings.UseFullScreen)
{
DisplayServer.WindowSetMode(DisplayServer.WindowMode.Fullscreen);
}
else
{
DisplayServer.WindowSetMode(DisplayServer.WindowMode.Windowed);
}
}
} }
} }

@ -16,7 +16,6 @@ script = ExtResource("1_av57b")
[node name="BattleSettingsMenu" type="Control" parent="."] [node name="BattleSettingsMenu" type="Control" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
visible = false
layout_mode = 2 layout_mode = 2
script = ExtResource("2_xtjo5") script = ExtResource("2_xtjo5")
@ -36,6 +35,7 @@ layout_mode = 2
[node name="VideoSettingsMenu" type="Control" parent="."] [node name="VideoSettingsMenu" type="Control" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
visible = false
layout_mode = 2 layout_mode = 2
script = ExtResource("3_68iki") script = ExtResource("3_68iki")

@ -12,9 +12,9 @@ namespace CMSGame
this.GetUniqueNode(ref FullScreenCheckButton, nameof(FullScreenCheckButton)); this.GetUniqueNode(ref FullScreenCheckButton, nameof(FullScreenCheckButton));
FullScreenCheckButton!.SetPressedNoSignal(Settings.UseFullScreen); FullScreenCheckButton!.Toggled += FullScreenCheckButton_Toggled;
FullScreenCheckButton.Toggled += FullScreenCheckButton_Toggled; ; FullScreenCheckButton.ButtonPressed = Settings.UseFullScreen;
} }
private void FullScreenCheckButton_Toggled(bool buttonPressed) private void FullScreenCheckButton_Toggled(bool buttonPressed)

@ -17,6 +17,7 @@ config/name_localized={
"zh_Hant": "山與海的囯" "zh_Hant": "山與海的囯"
} }
run/main_scene="res://Scenes/LandingScene/LandingScene.tscn" run/main_scene="res://Scenes/LandingScene/LandingScene.tscn"
config/project_settings_override="user://Engine.cfg"
config/features=PackedStringArray("4.0", "C#", "Forward Plus") config/features=PackedStringArray("4.0", "C#", "Forward Plus")
config/icon="res://icon.svg" config/icon="res://icon.svg"

Loading…
Cancel
Save