|
@@ -0,0 +1,199 @@
|
|
|
+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<EnduringGiftBoxDataManager>
|
|
|
+ {
|
|
|
+ //测试数据定义--等之后搞好活动有效期组件之后,再替换成真实数据 <活动id,活动结束时间戳精确到秒> --假设这个就是我排好序的活动列表
|
|
|
+ private Dictionary<int, ActivityOpenData> _activityOpenEndTimeDic = new Dictionary<int, ActivityOpenData>();
|
|
|
+
|
|
|
+ public Dictionary<int, ActivityOpenData> ActivityOpenEndTimeDic => _activityOpenEndTimeDic;
|
|
|
+
|
|
|
+ //列表数据3--等级条件的数据
|
|
|
+ private List<LimitedTimeGiftBoxItemData> _ltgGbItemData3 = new List<LimitedTimeGiftBoxItemData>();
|
|
|
+
|
|
|
+ //圆形样式数据4--等级条件的数据
|
|
|
+ private List<LimitedTimeGiftBoxItemData2> _ltgGbItemData4 = new List<LimitedTimeGiftBoxItemData2>();
|
|
|
+
|
|
|
+ //圆形样式数据5--时间条件的数据
|
|
|
+ private List<LimitedTimeGiftBoxItemData2> _ltgGbItemData5 = new List<LimitedTimeGiftBoxItemData2>();
|
|
|
+
|
|
|
+ // 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<int> { shopCfgId };
|
|
|
+ }
|
|
|
+
|
|
|
+ _ltgGbItemData3.Add(ltgGbItemData);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ltgGbItemData = new LimitedTimeGiftBoxItemData
|
|
|
+ {
|
|
|
+ IndexType = shopCfg.menu2,
|
|
|
+ ShopCfgIds = new List<int> { 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<LimitedTimeGiftBoxItemData2> 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 限时礼包列表数据模型
|
|
|
+ /// </summary>
|
|
|
+ public class LimitedTimeGiftBoxItemData
|
|
|
+ {
|
|
|
+ //限时礼包_ShopCfg的menu2
|
|
|
+ public int IndexType;
|
|
|
+
|
|
|
+ //只存同一个menu2的3条数据,超出忽略
|
|
|
+ public List<int> ShopCfgIds;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 圆形样式数据模型
|
|
|
+ /// </summary>
|
|
|
+ public class LimitedTimeGiftBoxItemData2
|
|
|
+ {
|
|
|
+ public int ShopCfgId;
|
|
|
+
|
|
|
+ //限时礼包_ShopCfg的menu2
|
|
|
+ public int IndexType;
|
|
|
+ }
|
|
|
+}
|