using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using ET; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using UI.DressUp; namespace GFGGame { public class LimitedTimeGiftBoxDataManager : SingletonBase { //测试数据定义--等之后搞好活动有效期组件之后,再替换成真实数据 <活动id,活动结束时间戳精确到秒> --假设这个就是我排好序的活动列表 private Dictionary _activityOpenEndTimeDic = new Dictionary(); public Dictionary ActivityOpenEndTimeDic => _activityOpenEndTimeDic; //列表数据3--等级条件的数据 private List _ltgGbItemData3 = new List(); //圆形样式数据4--等级条件的数据 private List _ltgGbItemData4 = new List(); //圆形样式数据5--时间条件的数据 private List _ltgGbItemData5 = new List(); // public void InitData() // { // _activityOpenEndTimeDic.Clear(); // _ltgGbItemData3.Clear(); // _ltgGbItemData4.Clear(); // _ltgGbItemData5.Clear(); // } public void UpAllData() { //UpActivityOpenEndTimeDic(); //等之后搞好活动有效期组件之后,再替换成真实数据的更新 UpLtgGbItemData3(); UpLtgGbItemData4(); UpLtgGbItemData5(); } public void UpLtgGbItemData3() { _ltgGbItemData3.Clear(); foreach (var itemKv in _activityOpenEndTimeDic) { if (itemKv.Value.ActivityEndTime >= 0) //当前服务器时间戳---稍迟再从原来的代码里找个获取当前服务器时间戳的代码copy过来 { ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData; //判断是否是类型3的数据 if (activityOpenCfg.type == 3) { foreach (var shopCfgId in activityOpenCfg.paramsArr) { ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId); if (shopCfg == null) { Log.Error("shopCfg is null"); continue; } LimitedTimeGiftBoxItemData ltgGbItemData = _ltgGbItemData3.FirstOrDefault(a => a.IndexType == shopCfg.menu2); if (ltgGbItemData != null) { if (ltgGbItemData.ShopCfgIds != null) { if (ltgGbItemData.ShopCfgIds.Count < 3) { ltgGbItemData.ShopCfgIds.Add(shopCfgId); } } else { ltgGbItemData.ShopCfgIds = new List { shopCfgId }; } _ltgGbItemData3.Add(ltgGbItemData); } else { ltgGbItemData = new LimitedTimeGiftBoxItemData { IndexType = shopCfg.menu2, ShopCfgIds = new List { shopCfgId } }; _ltgGbItemData3.Add(ltgGbItemData); } } } } } } public void UpLtgGbItemData4() { _ltgGbItemData4.Clear(); foreach (var itemKv in _activityOpenEndTimeDic) { if (itemKv.Value.ActivityEndTime >= 0) //当前服务器时间戳---稍迟再从原来的代码里找个获取当前服务器时间戳的代码copy过来 { ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData; //判断是否是类型4的数据 if (activityOpenCfg.type == 4) { foreach (var shopCfgId in activityOpenCfg.paramsArr) { FillData(_ltgGbItemData4, shopCfgId); } } } } _ltgGbItemData4 = _ltgGbItemData4.OrderBy(a => a.ShopCfgId).ToList(); } public void UpLtgGbItemData5() { _ltgGbItemData5.Clear(); foreach (var itemKv in _activityOpenEndTimeDic) { if (itemKv.Value.ActivityEndTime >= 0) //当前服务器时间戳---稍迟再从原来的代码里找个获取当前服务器时间戳的代码copy过来 { ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData; //判断是否是类型4的数据 if (activityOpenCfg.type == 5) { FillData(_ltgGbItemData5, activityOpenCfg.paramsArr[0]); } } } _ltgGbItemData5 = _ltgGbItemData5.OrderBy(a => a.ShopCfgId).ToList(); } private void FillData(List listData, int shopCfgId) { ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId); if (shopCfg == null) { Log.Error("shopCfg is null"); return; } var ltgGbItemData = listData.FirstOrDefault(a => a.ShopCfgId == shopCfgId); if (ltgGbItemData == null) { listData.Add(new LimitedTimeGiftBoxItemData2 { ShopCfgId = shopCfg.id, IndexType = shopCfg.menu2 }); } else { var index = listData.IndexOf(ltgGbItemData); ltgGbItemData.IndexType = shopCfg.menu2; listData[index] = ltgGbItemData; } } } public class ActivityOpenData { //活动开启配置 public ActivityOpenCfg ActivityOpenCfgData; //活动结束时间戳 public long ActivityEndTime; } /// /// 限时礼包列表数据模型 /// public class LimitedTimeGiftBoxItemData { //限时礼包_ShopCfg的menu2 public int IndexType; //只存同一个menu2的3条数据,超出忽略 public List ShopCfgIds; } /// /// 圆形样式数据模型 /// public class LimitedTimeGiftBoxItemData2 { public int ShopCfgId; //限时礼包_ShopCfg的menu2 public int IndexType; } }