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

110 lines
3.6 KiB
C#
Raw Normal View History

2023-12-08 14:56:34 +08:00
using Framework;
2024-04-30 14:31:46 +08:00
using Gameplay;
2023-12-08 14:16:12 +08:00
using Gameplay.Performance;
using UnityEngine;
2023-12-08 14:16:12 +08:00
public class GameSettingManager
{
private static GameSettingManager instance;
2023-12-08 14:16:12 +08:00
public static GameSettingManager Instance
{
get
{
if (instance == null)
{
CreateInstance();
}
2023-12-08 14:16:12 +08:00
return instance;
}
}
private static void CreateInstance()
2023-12-08 14:16:12 +08:00
{
if (instance != null)
{
return;
}
2023-12-08 14:16:12 +08:00
instance = new GameSettingManager();
}
public GameSettingData SettingData { get; private set; }
2023-12-08 14:16:12 +08:00
private GameSettingData _defaultSettingData;
private bool privacyAgreement;
2023-12-08 14:16:12 +08:00
public void Init()
{
_defaultSettingData = new GameSettingData();
2024-04-30 13:58:17 +08:00
_defaultSettingData.PerformanceID = PerformanceManager.instance.defaultPerformanceId;
_defaultSettingData.Account = Gameplay.Net.Actor.Instance.Login.AccountID;
2023-12-08 14:16:12 +08:00
SettingData = StorageMgr.Instance.GetStorage<GameSettingData>("SettingData");
privacyAgreement = PlayerPrefs.GetInt("PrivacyAgreement", default) == BIManager.Agree_Privacy;
if (!SettingData.Account.Equals(Gameplay.Net.Actor.Instance.Login.AccountID))
{
//清空本地缓存 恢复设置和性能系统默认值
StorageMgr.Instance.DeleteSaveData();
SettingData = StorageMgr.Instance.GetStorage<GameSettingData>("SettingData");
RevertDefault();
}
2023-12-08 14:56:34 +08:00
if (SettingData.PerformanceID == 0)
SettingData.PerformanceID = _defaultSettingData.PerformanceID;
//保存至本地
StorageMgr.Instance.SyncForce = true;
ChangeGameSettings();
}
public void SaveNewSettings(GameSettingData newData)
{
SettingData.PerformanceID = newData.PerformanceID;
SettingData.FrameRate = newData.FrameRate;
SettingData.BGMValue = newData.BGMValue;
SettingData.EffectValue = newData.EffectValue;
SettingData.TalkValue = newData.TalkValue;
SettingData.IsOpenGrid = newData.IsOpenGrid;
2024-09-19 14:56:14 +08:00
SettingData.enableSkillRotateCamera = newData.enableSkillRotateCamera;
//保存至本地
StorageMgr.Instance.SyncForce = true;
2023-12-08 14:16:12 +08:00
ChangeGameSettings();
}
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;
SettingData.Account = _defaultSettingData.Account;
2024-09-19 14:56:14 +08:00
SettingData.enableSkillRotateCamera = _defaultSettingData.enableSkillRotateCamera;
PlayerPrefs.SetInt("PrivacyAgreement", privacyAgreement ? BIManager.Agree_Privacy : default);
//保存至本地
StorageMgr.Instance.SyncForce = true;
ChangeGameSettings();
}
private void ChangeGameSettings()
2023-12-08 14:16:12 +08:00
{
AudioManager.Instance.GlobalMusicVolume = SettingData.BGMValue;
AudioManager.Instance.GlobalSoundsVolume = SettingData.EffectValue;
2024-04-30 13:08:56 +08:00
AudioManager.Instance.GlobalSpeakVolume = SettingData.TalkValue;
2024-09-18 16:03:02 +08:00
PerformanceManager.instance.SetPerformance(GetPerformanceConfig());
2023-12-08 14:56:34 +08:00
PerformanceManager.instance.SetFrameRate(SettingData.FrameRate);
2023-12-08 14:16:12 +08:00
}
2023-12-08 14:56:34 +08:00
private PerformanceData GetPerformanceConfig()
{
return PerformanceManager.instance.GetPerformanceData(SettingData.PerformanceID);
2023-12-08 14:56:34 +08:00
}
}