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(); public List LtgGbItemData3 => _ltgGbItemData3; //圆形样式数据4--等级条件的数据 private List _ltgGbItemData4 = new List(); public List LtgGbItemData4 => _ltgGbItemData4; //圆形样式数据5--时间条件的数据 private List _ltgGbItemData5 = new List(); public List LtgGbItemData5 => _ltgGbItemData5; // 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 >= TimeInfo.Instance.ServerNow()) { ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData; //判断是否是类型3的数据 if (activityOpenCfg.type == ConstActivityType.ActLimitGiftShByLevel) { var paramsArr = activityOpenCfg.paramsArr; Array.Sort(paramsArr); foreach (var shopCfgId in 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 }; } ltgGbItemData.EndTime = itemKv.Value.ActivityEndTime; _ltgGbItemData3.Add(ltgGbItemData); } else { ltgGbItemData = new LimitedTimeGiftBoxItemData { IndexType = shopCfg.menu2, ShopCfgIds = new List { shopCfgId }, EndTime = itemKv.Value.ActivityEndTime }; _ltgGbItemData3.Add(ltgGbItemData); } } } } } _ltgGbItemData3 = _ltgGbItemData3.OrderBy(a => a.IndexType).ToList(); } public void UpLtgGbItemData4() { _ltgGbItemData4.Clear(); foreach (var itemKv in _activityOpenEndTimeDic) { if (itemKv.Value.ActivityEndTime >= TimeInfo.Instance.ServerNow()) { ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData; //判断是否是类型4的数据 if (activityOpenCfg.type == ConstActivityType.ActLimitGiftYxByLevel) { foreach (var shopCfgId in activityOpenCfg.paramsArr) { FillData(_ltgGbItemData4, shopCfgId, itemKv.Value.ActivityEndTime); } } } } _ltgGbItemData4 = _ltgGbItemData4.OrderBy(a => a.ShopCfgId).ToList(); } public void UpLtgGbItemData5() { _ltgGbItemData5.Clear(); foreach (var itemKv in _activityOpenEndTimeDic) { if (itemKv.Value.ActivityEndTime >= TimeInfo.Instance.ServerNow()) { ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData; //判断是否是类型4的数据 if (activityOpenCfg.type == ConstActivityType.ActLimitGiftYxByTime) { FillData(_ltgGbItemData5, activityOpenCfg.paramsArr[0], itemKv.Value.ActivityEndTime); } } } _ltgGbItemData5 = _ltgGbItemData5.OrderBy(a => a.ShopCfgId).ToList(); } private void FillData(List listData, int shopCfgId, long endTime) { 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 LimitedTimeGiftBoxItemYxData { EndTime = endTime, ShopCfgId = shopCfg.id, IndexType = shopCfg.menu2 }); } else { var index = listData.IndexOf(ltgGbItemData); ltgGbItemData.IndexType = shopCfg.menu2; ltgGbItemData.EndTime = endTime; listData[index] = ltgGbItemData; } } } }