NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Setting/GameSettingManager.cs

92 lines
2.8 KiB
C#

using Framework;
using Gameplay.Performance;
using UnityEngine;
public class GameSettingManager
{
private static GameSettingManager instance;
public static GameSettingManager Instance
{
get
{
if (instance == null)
{
CreateInstance();
}
return instance;
}
}
public static void CreateInstance()
{
if (instance != null)
{
return;
}
instance = new GameSettingManager();
}
public GameSettingData SettingData;
private GameSettingData _defaultSettingData;
public void Init()
{
_defaultSettingData = new GameSettingData();
_defaultSettingData.PerformanceID = PerformanceManager.instance.performanceId;
SettingData = StorageMgr.Instance.GetStorage<GameSettingData>("SettingData");
if (SettingData.PerformanceID == 0)
SettingData.PerformanceID = _defaultSettingData.PerformanceID;
ChangeGameSettings();
}
public void ChangeGameSettings()
{
AudioManager.Instance.GlobalMusicVolume = SettingData.BGMValue;
AudioManager.Instance.GlobalSoundsVolume = SettingData.EffectValue;
//TODO 开启格子 语音
PerformanceManager.SetPerformance(GetPerformanceConfig());
PerformanceManager.instance.SetFrameRate(SettingData.FrameRate);
//保存至本地
StorageMgr.Instance.SyncForce = true;
}
private PerformanceData GetPerformanceConfig()
{
var data = new PerformanceData();
if (TableManager.Instance.Tables.PerformanceConfig.DataMap.TryGetValue(SettingData.PerformanceID, out var pConfig))
{
data.enableShadow = pConfig.EnableShadow;
data.enablePostOutline = pConfig.EnablePostoutline;
data.enableTireMark = pConfig.EnableTireMark;
data.useSimpleShader = pConfig.UseSimpleShader;
data.resolution = pConfig.Resolution;
data.targetFrameRate = pConfig.TargetFps;
data.enableHDR = pConfig.EnableHDR;
data.enableCloth = pConfig.EnableCloth;
data.enableBulletTail = pConfig.EnableBulletTail;
}
return data;
}
public void RevertDefault()
{
SettingData.PerformanceID = _defaultSettingData.PerformanceID;
SettingData.FrameRate = _defaultSettingData.FrameRate;
SettingData.BGMValue = _defaultSettingData.BGMValue;
SettingData.EffectValue = _defaultSettingData.EffectValue;
SettingData.TalkValue = _defaultSettingData.TalkValue;
SettingData.IsOpenGrid = _defaultSettingData.IsOpenGrid;
ChangeGameSettings();
//保存至本地
StorageMgr.Instance.SyncForce = true;
}
}