LimitedTimeGiftBoxDataManager.cs 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Concurrent;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using ET;
  7. using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
  8. using UI.DressUp;
  9. namespace GFGGame
  10. {
  11. public class LimitedTimeGiftBoxDataManager : SingletonBase<EnduringGiftBoxDataManager>
  12. {
  13. //测试数据定义--等之后搞好活动有效期组件之后,再替换成真实数据 <活动id,活动结束时间戳精确到秒> --假设这个就是我排好序的活动列表
  14. private Dictionary<int, ActivityOpenData> _activityOpenEndTimeDic = new Dictionary<int, ActivityOpenData>();
  15. public Dictionary<int, ActivityOpenData> ActivityOpenEndTimeDic => _activityOpenEndTimeDic;
  16. //列表数据3--等级条件的数据
  17. private List<LimitedTimeGiftBoxItemData> _ltgGbItemData3 = new List<LimitedTimeGiftBoxItemData>();
  18. //圆形样式数据4--等级条件的数据
  19. private List<LimitedTimeGiftBoxItemData2> _ltgGbItemData4 = new List<LimitedTimeGiftBoxItemData2>();
  20. //圆形样式数据5--时间条件的数据
  21. private List<LimitedTimeGiftBoxItemData2> _ltgGbItemData5 = new List<LimitedTimeGiftBoxItemData2>();
  22. // public void InitData()
  23. // {
  24. // _activityOpenEndTimeDic.Clear();
  25. // _ltgGbItemData3.Clear();
  26. // _ltgGbItemData4.Clear();
  27. // _ltgGbItemData5.Clear();
  28. // }
  29. public void UpAllData()
  30. {
  31. //UpActivityOpenEndTimeDic(); //等之后搞好活动有效期组件之后,再替换成真实数据的更新
  32. UpLtgGbItemData3();
  33. UpLtgGbItemData4();
  34. UpLtgGbItemData5();
  35. }
  36. public void UpLtgGbItemData3()
  37. {
  38. _ltgGbItemData3.Clear();
  39. foreach (var itemKv in _activityOpenEndTimeDic)
  40. {
  41. if (itemKv.Value.ActivityEndTime >= 0) //当前服务器时间戳---稍迟再从原来的代码里找个获取当前服务器时间戳的代码copy过来
  42. {
  43. ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData;
  44. //判断是否是类型3的数据
  45. if (activityOpenCfg.type == 3)
  46. {
  47. foreach (var shopCfgId in activityOpenCfg.paramsArr)
  48. {
  49. ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
  50. if (shopCfg == null)
  51. {
  52. Log.Error("shopCfg is null");
  53. continue;
  54. }
  55. LimitedTimeGiftBoxItemData ltgGbItemData =
  56. _ltgGbItemData3.FirstOrDefault(a => a.IndexType == shopCfg.menu2);
  57. if (ltgGbItemData != null)
  58. {
  59. if (ltgGbItemData.ShopCfgIds != null)
  60. {
  61. if (ltgGbItemData.ShopCfgIds.Count < 3)
  62. {
  63. ltgGbItemData.ShopCfgIds.Add(shopCfgId);
  64. }
  65. }
  66. else
  67. {
  68. ltgGbItemData.ShopCfgIds = new List<int> { shopCfgId };
  69. }
  70. _ltgGbItemData3.Add(ltgGbItemData);
  71. }
  72. else
  73. {
  74. ltgGbItemData = new LimitedTimeGiftBoxItemData
  75. {
  76. IndexType = shopCfg.menu2,
  77. ShopCfgIds = new List<int> { shopCfgId }
  78. };
  79. _ltgGbItemData3.Add(ltgGbItemData);
  80. }
  81. }
  82. }
  83. }
  84. }
  85. }
  86. public void UpLtgGbItemData4()
  87. {
  88. _ltgGbItemData4.Clear();
  89. foreach (var itemKv in _activityOpenEndTimeDic)
  90. {
  91. if (itemKv.Value.ActivityEndTime >= 0) //当前服务器时间戳---稍迟再从原来的代码里找个获取当前服务器时间戳的代码copy过来
  92. {
  93. ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData;
  94. //判断是否是类型4的数据
  95. if (activityOpenCfg.type == 4)
  96. {
  97. foreach (var shopCfgId in activityOpenCfg.paramsArr)
  98. {
  99. FillData(_ltgGbItemData4, shopCfgId);
  100. }
  101. }
  102. }
  103. }
  104. _ltgGbItemData4 = _ltgGbItemData4.OrderBy(a => a.ShopCfgId).ToList();
  105. }
  106. public void UpLtgGbItemData5()
  107. {
  108. _ltgGbItemData5.Clear();
  109. foreach (var itemKv in _activityOpenEndTimeDic)
  110. {
  111. if (itemKv.Value.ActivityEndTime >= 0) //当前服务器时间戳---稍迟再从原来的代码里找个获取当前服务器时间戳的代码copy过来
  112. {
  113. ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData;
  114. //判断是否是类型4的数据
  115. if (activityOpenCfg.type == 5)
  116. {
  117. FillData(_ltgGbItemData5, activityOpenCfg.paramsArr[0]);
  118. }
  119. }
  120. }
  121. _ltgGbItemData5 = _ltgGbItemData5.OrderBy(a => a.ShopCfgId).ToList();
  122. }
  123. private void FillData(List<LimitedTimeGiftBoxItemData2> listData, int shopCfgId)
  124. {
  125. ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
  126. if (shopCfg == null)
  127. {
  128. Log.Error("shopCfg is null");
  129. return;
  130. }
  131. var ltgGbItemData = listData.FirstOrDefault(a => a.ShopCfgId == shopCfgId);
  132. if (ltgGbItemData == null)
  133. {
  134. listData.Add(new LimitedTimeGiftBoxItemData2
  135. {
  136. ShopCfgId = shopCfg.id,
  137. IndexType = shopCfg.menu2
  138. });
  139. }
  140. else
  141. {
  142. var index = listData.IndexOf(ltgGbItemData);
  143. ltgGbItemData.IndexType = shopCfg.menu2;
  144. listData[index] = ltgGbItemData;
  145. }
  146. }
  147. }
  148. public class ActivityOpenData
  149. {
  150. //活动开启配置
  151. public ActivityOpenCfg ActivityOpenCfgData;
  152. //活动结束时间戳
  153. public long ActivityEndTime;
  154. }
  155. /// <summary>
  156. /// 限时礼包列表数据模型
  157. /// </summary>
  158. public class LimitedTimeGiftBoxItemData
  159. {
  160. //限时礼包_ShopCfg的menu2
  161. public int IndexType;
  162. //只存同一个menu2的3条数据,超出忽略
  163. public List<int> ShopCfgIds;
  164. }
  165. /// <summary>
  166. /// 圆形样式数据模型
  167. /// </summary>
  168. public class LimitedTimeGiftBoxItemData2
  169. {
  170. public int ShopCfgId;
  171. //限时礼包_ShopCfg的menu2
  172. public int IndexType;
  173. }
  174. }