using System; using System.Collections.Generic; using UnityEngine; public class SettingDataManager : GameSystemManager { 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 settingDataDict = new Dictionary(); public bool TryGetSettingData(int keyNum, out string setData) { return settingDataDict.TryGetValue(keyNum, out setData); } public Dictionary 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, }