Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / setting / SettingPanel.cs
using Config;
using Godot;

namespace UI.Setting;

public partial class SettingPanel : Setting
{
    public override void OnCreateUi()
    {
        if (PrevUi != null)
        {
            //返回上一级UI
            S_Back.Instance.Pressed += () =>
            {
                OpenPrevUi();
            };
        }
        else
        {
            S_Back.Instance.Pressed += () =>
            {
                Destroy();
            };
        }
        
        //声音设置BGM
        S_BGM.Instance.ValueChanged += (double v) =>
        {
            var value = (float)v;
            GameApplication.Instance.GameSave.BgmVolume = value;
            SoundManager.SetBusValue(BUS.BGM, value);
        };
        //声音设置SFX
        S_SFX.Instance.ValueChanged += (double v) =>
        {
            var value = (float)v;
            GameApplication.Instance.GameSave.SfxVolume = value;
            SoundManager.SetBusValue(BUS.SFX, value);
        };
        //声音设置设置BGM SFX的值
        S_SFX.Instance.VisibilityChanged += () =>
        {
            S_BGM.Instance.Value = GameApplication.Instance.GameSave.BgmVolume;
            S_SFX.Instance.Value = GameApplication.Instance.GameSave.SfxVolume;
        };

        //---------------------- 视频设置 -----------------------------
        //全屏属性
        S_FullScreen.L_CheckBox.Instance.ButtonPressed = DisplayServer.WindowGetMode() == DisplayServer.WindowMode.Fullscreen;
        S_FullScreen.L_CheckBox.Instance.Pressed += OnChangeFullScreen;
        //-----------------------------------------------------------
    }

    public override void OnDestroyUi()
    {
        GameApplication.Instance.GameSave.Save();
    }

    //切换全屏/非全屏
    private void OnChangeFullScreen()
    {
        var checkBox = S_FullScreen.L_CheckBox.Instance;
        GameApplication.Instance.GameSave.FullScreen = checkBox.ButtonPressed;
        if (checkBox.ButtonPressed)
        {
            DisplayServer.WindowSetMode(DisplayServer.WindowMode.Fullscreen);
        }
        else
        {
            DisplayServer.WindowSetMode(DisplayServer.WindowMode.Windowed);
        }
    }

}