using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
public class SettingDataManager : GameSystemManager<SettingDataManager>
|
{
|
public override void Init()
|
{
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
|
}
|
|
public override void Release()
|
{
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeEventOnRelogin;
|
}
|
|
private void OnBeforePlayerDataInitializeEventOnRelogin()
|
{
|
settingDataDict.Clear();
|
}
|
|
public event Action OnUpdateSettingDataEvent;
|
Dictionary<int, string> settingDataDict = new Dictionary<int, string>();
|
|
public bool TryGetSettingData(int keyNum, out string setData)
|
{
|
return settingDataDict.TryGetValue(keyNum, out setData);
|
}
|
|
public Dictionary<int, string> GetSettingData()
|
{
|
return settingDataDict;
|
}
|
|
public void UpdateSettingData(HA131_tagSCSettingDataInfo pack)
|
{
|
if (pack == null || pack.SettingDataList.IsNullOrEmpty())
|
return;
|
for (int i = 0; i < pack.SettingDataList.Length; i++)
|
{
|
var info = pack.SettingDataList[i];
|
settingDataDict[info.KeyNum] = info.SetData;
|
}
|
OnUpdateSettingDataEvent?.Invoke();
|
}
|
|
public void ClearSettingData(int keyNum)
|
{
|
SendSettingData(keyNum, string.Empty);
|
}
|
|
public void SendSettingData(SettingDataKeyNum keyNum, string setData)
|
{
|
SendSettingData((int)keyNum, setData);
|
}
|
|
public void SendSettingData(int keyNum, string setData)
|
{
|
// 检查数据长度是否超过byte最大值
|
if (setData.Length > byte.MaxValue)
|
{
|
Debug.LogError($"设置数据长度({setData.Length})超过byte最大值({byte.MaxValue})");
|
return;
|
}
|
CA131_tagCSSettingData pack = new CA131_tagCSSettingData();
|
pack.KeyNum = (byte)keyNum;
|
pack.SetData = setData;
|
pack.DataLen = (byte)setData.Length;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
|
}
|
public enum SettingDataKeyNum
|
{
|
TimingGiftType = 1,
|
}
|