using Framework; using PhxhSDK; using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 卡池数据管理器 /// public class DrawInfoManager : Singlenton, IInitable { /// /// 所有卡池数据字典 /// public Dictionary DicDrawInfo { get; private set; } /// /// 显示的卡池数据列表 /// public List ListShowDrawInfo { get; private set; } public void Init() { DicDrawInfo = new Dictionary(); ListShowDrawInfo = new List(); EventManager.Instance.Register(EventManager.EventName.AllConfigLoad, LoadDrawData); EventManager.Instance.Register(EventManager.EventName.DrawRefresh, RefreshData); EventManager.Instance.Register(EventManager.EventName.ItemChange, CheckRefreshData); } public void Release() { EventManager.Instance.Unregister(EventManager.EventName.ItemChange, CheckRefreshData); EventManager.Instance.Unregister(EventManager.EventName.DrawRefresh, RefreshData); EventManager.Instance.Unregister(EventManager.EventName.AllConfigLoad, LoadDrawData); if (null != ListShowDrawInfo) { ListShowDrawInfo.Clear(); ListShowDrawInfo = null; } if (null != DicDrawInfo) { DicDrawInfo.Clear(); DicDrawInfo = null; } } /// /// 加载卡池数据 /// private void LoadDrawData() { for (int i = 0; i < TableManager.Instance.Tables.Gacha.DataList.Count; i++) { DicDrawInfo[TableManager.Instance.Tables.Gacha.DataList[i].Id] = new DrawInfo(TableManager.Instance.Tables.Gacha.DataList[i]); } } /// /// 刷新数据 /// private void RefreshData() { ListShowDrawInfo.Clear(); foreach (DrawInfo rafflePoolForDisplay in DicDrawInfo.Values) { rafflePoolForDisplay.Refresh(); if (rafflePoolForDisplay.IsDraw) ListShowDrawInfo.Add(rafflePoolForDisplay); } } /// /// 检测是否刷新数据 /// /// private void CheckRefreshData(uint itemID) { if (1110001 == itemID) // 只有抽卡券数量发生变化才刷新抽卡数据 { RefreshData(); return; } if (1110002 == itemID) { RefreshData(); return; } } }