108 lines
3.6 KiB
C#
108 lines
3.6 KiB
C#
using Framework;
|
|
using Gameplay;
|
|
using Gameplay.Performance;
|
|
using UnityEngine;
|
|
|
|
public class GameSettingManager
|
|
{
|
|
private static GameSettingManager instance;
|
|
|
|
public static GameSettingManager Instance
|
|
{
|
|
get
|
|
{
|
|
if (instance == null)
|
|
{
|
|
CreateInstance();
|
|
}
|
|
|
|
return instance;
|
|
}
|
|
}
|
|
|
|
private static void CreateInstance()
|
|
{
|
|
if (instance != null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
instance = new GameSettingManager();
|
|
}
|
|
|
|
public GameSettingData SettingData { get; private set; }
|
|
public GameSettingData DefaultSettingData{ get; private set; }
|
|
private bool privacyAgreement;
|
|
|
|
public void Init()
|
|
{
|
|
DefaultSettingData = new GameSettingData();
|
|
DefaultSettingData.PerformanceID = PerformanceManager.instance.defaultPerformanceId;
|
|
DefaultSettingData.Account = Gameplay.Net.Actor.Instance.Login.AccountID;
|
|
|
|
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();
|
|
}
|
|
|
|
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;
|
|
SettingData.enableSkillRotateCamera = newData.enableSkillRotateCamera;
|
|
|
|
//保存至本地
|
|
StorageMgr.Instance.SyncForce = true;
|
|
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;
|
|
SettingData.enableSkillRotateCamera = DefaultSettingData.enableSkillRotateCamera;
|
|
|
|
PlayerPrefs.SetInt("PrivacyAgreement", privacyAgreement ? BIManager.Agree_Privacy : default);
|
|
//保存至本地
|
|
StorageMgr.Instance.SyncForce = true;
|
|
}
|
|
|
|
private void ChangeGameSettings()
|
|
{
|
|
AudioManager.Instance.GlobalMusicVolume = SettingData.BGMValue;
|
|
AudioManager.Instance.GlobalSoundsVolume = SettingData.EffectValue;
|
|
AudioManager.Instance.GlobalSpeakVolume = SettingData.TalkValue;
|
|
|
|
PerformanceManager.instance.SetPerformance(GetPerformanceConfig());
|
|
PerformanceManager.instance.SetFrameRate(SettingData.FrameRate);
|
|
}
|
|
|
|
private PerformanceData GetPerformanceConfig()
|
|
{
|
|
return PerformanceManager.instance.GetPerformanceData(SettingData.PerformanceID);
|
|
}
|
|
} |