NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Draw/DrawInfoManager.cs

94 lines
2.6 KiB
C#

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