using UnityEngine;
using BaseGames.Core.Events;
namespace BaseGames.Core
{
///
/// 游戏全局设置数据(运行时值)。
///
[System.Serializable]
public class GlobalSettingsData
{
public float MasterVolume = 1f;
public float BGMVolume = 0.8f;
public float SFXVolume = 1f;
public float AmbientVolume = 0.8f;
public bool VSync = true;
public int TargetFPS = 60;
public bool FullScreen = true;
public string Language = "zh-CN";
public bool ShowSpeedrunTimer = false;
}
///
/// 全局设置默认值 SO(资产:Assets/Data/Settings/SET_GlobalSettings.asset)。
///
[CreateAssetMenu(menuName = "Settings/GlobalSettings")]
public class GlobalSettingsSO : ScriptableObject
{
[Header("Audio")]
public float DefaultMasterVolume = 1f;
public float DefaultBGMVolume = 0.8f;
public float DefaultSFXVolume = 1f;
public float DefaultAmbientVolume = 0.8f;
[Header("Display")]
public bool DefaultVSync = true;
public int DefaultTargetFPS = 60;
public bool DefaultFullScreen = true;
[Header("Language")]
public string DefaultLanguage = "zh-CN";
[Header("Speedrun")]
public bool ShowSpeedrunTimer = false;
/// 将 SO 默认值填入 GlobalSettingsData。
public GlobalSettingsData CreateDefault() => new GlobalSettingsData
{
MasterVolume = DefaultMasterVolume,
BGMVolume = DefaultBGMVolume,
SFXVolume = DefaultSFXVolume,
AmbientVolume = DefaultAmbientVolume,
VSync = DefaultVSync,
TargetFPS = DefaultTargetFPS,
FullScreen = DefaultFullScreen,
Language = DefaultLanguage,
ShowSpeedrunTimer = ShowSpeedrunTimer,
};
}
}