使用 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 bool UseFullScreen = false;
public bool UseFullScreen { set; get; } = false;
}
public record class AudioSettings : GameSettings
@ -17,11 +17,11 @@ namespace CMSGame
/// <summary>
/// 音乐音量
/// </summary>
public double MusicVolume = 80;
public double MusicVolume { set; get; } = 80;
/// <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> OriginalSettings = new();
protected Dictionary<Type, GameSettings> PreviousSettings = new();
protected Dictionary<Type, string> SettingsPaths = new();
@ -24,12 +24,9 @@ namespace CMSGame
public GameSettingsNode()
{
RegisterAllSettings();
}
public override void _Ready()
{
MakeDirectories();
LoadAllSettings();
ApplyVideoSettings();
}
protected void RegisterAllSettings()
@ -58,7 +55,7 @@ namespace CMSGame
{
foreach (var settingsType in SettingsPaths.Keys)
{
if (!OriginalSettings.ContainsKey(settingsType) || OriginalSettings[settingsType] != CurrentSettings[settingsType])
if (!PreviousSettings.ContainsKey(settingsType) || PreviousSettings[settingsType] != CurrentSettings[settingsType])
{
SaveSettings(settingsType);
}
@ -76,8 +73,8 @@ namespace CMSGame
var settings = JsonConvert.DeserializeObject(settingsText, settingsType);
if (settings != null)
{
OriginalSettings[settingsType] = (GameSettings)settings;
CurrentSettings[settingsType] = (GameSettings)settings;
PreviousSettings[settingsType] = (GameSettings)settings;
CurrentSettings[settingsType] = (GameSettings)settings with { };
}
}
@ -102,5 +99,17 @@ namespace CMSGame
using var file = FileAccess.Open(SettingsPaths[settingsType], FileAccess.ModeFlags.Write);
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="."]
unique_name_in_owner = true
visible = false
layout_mode = 2
script = ExtResource("2_xtjo5")
@ -36,6 +35,7 @@ layout_mode = 2
[node name="VideoSettingsMenu" type="Control" parent="."]
unique_name_in_owner = true
visible = false
layout_mode = 2
script = ExtResource("3_68iki")

@ -12,9 +12,9 @@ namespace CMSGame
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)

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

Loading…
Cancel
Save