LimitedTimeGiftBoxDataManager.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using ET;
  5. namespace GFGGame
  6. {
  7. public class LimitedTimeGiftBoxDataManager : SingletonBase<LimitedTimeGiftBoxDataManager>
  8. {
  9. //每日特惠每次登录没有打开过就给红点
  10. private bool _isOpenMeiRiTeHui = false;
  11. public bool IsOpenMeiRiTeHui => _isOpenMeiRiTeHui;
  12. //列表数据3--等级条件的数据
  13. private List<LimitedTimeGiftBoxItemData> _ltgGbItemData3 = new List<LimitedTimeGiftBoxItemData>();
  14. public List<LimitedTimeGiftBoxItemData> LtgGbItemData3 => _ltgGbItemData3;
  15. //圆形样式数据4--等级条件的数据
  16. private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData4 = new List<LimitedTimeGiftBoxItemYxData>();
  17. public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData4 => _ltgGbItemData4;
  18. //圆形样式数据5--时间条件的数据
  19. private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData5 = new List<LimitedTimeGiftBoxItemYxData>();
  20. public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData5 => _ltgGbItemData5;
  21. public void Clear()
  22. {
  23. _ltgGbItemData3.Clear();
  24. _ltgGbItemData4.Clear();
  25. _ltgGbItemData5.Clear();
  26. _isOpenMeiRiTeHui = false;
  27. }
  28. public void SetIsOpenMeiRiTeHui()
  29. {
  30. _isOpenMeiRiTeHui = true;
  31. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  32. }
  33. public void UpLtgGbItemData3()
  34. {
  35. _ltgGbItemData3.Clear();
  36. foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
  37. ActivityType.XSLB1))
  38. {
  39. if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())
  40. {
  41. ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
  42. var paramsArr = activityOpenCfg.paramsArr;
  43. Array.Sort(paramsArr);
  44. foreach (var shopCfgId in paramsArr)
  45. {
  46. ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
  47. if (shopCfg == null)
  48. {
  49. Log.Error("shopCfg is null");
  50. continue;
  51. }
  52. LimitedTimeGiftBoxItemData ltgGbItemData =
  53. _ltgGbItemData3.FirstOrDefault(a => a.IndexType == shopCfg.menu2);
  54. if (ltgGbItemData != null)
  55. {
  56. var index = _ltgGbItemData3.IndexOf(ltgGbItemData);
  57. ltgGbItemData.EndTime = activityInfo.EndTime;
  58. if (ltgGbItemData.ShopCfgIds != null)
  59. {
  60. if (ltgGbItemData.ShopCfgIds.Count < 3)
  61. {
  62. ltgGbItemData.ShopCfgIds.Add(shopCfgId);
  63. }
  64. }
  65. else
  66. {
  67. ltgGbItemData.ShopCfgIds = new List<int> { shopCfgId };
  68. }
  69. _ltgGbItemData3[index] = ltgGbItemData;
  70. }
  71. else
  72. {
  73. ltgGbItemData = new LimitedTimeGiftBoxItemData
  74. {
  75. IndexType = shopCfg.menu2,
  76. ShopCfgIds = new List<int> { shopCfgId },
  77. EndTime = activityInfo.EndTime
  78. };
  79. _ltgGbItemData3.Add(ltgGbItemData);
  80. }
  81. }
  82. }
  83. }
  84. //排序
  85. foreach (var item in _ltgGbItemData3)
  86. {
  87. item.ShopCfgIds = item.ShopCfgIds.OrderBy(id => id).ToList();
  88. }
  89. _ltgGbItemData3 = _ltgGbItemData3.OrderBy(a => a.IndexType).ToList();
  90. }
  91. public void UpLtgGbItemData4()
  92. {
  93. _ltgGbItemData4.Clear();
  94. foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
  95. ActivityType.XSLB2))
  96. {
  97. if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())
  98. {
  99. ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
  100. //判断是否是类型4的数据
  101. if (activityOpenCfg.type == ActivityType.XSLB2)
  102. {
  103. foreach (var shopCfgId in activityOpenCfg.paramsArr)
  104. {
  105. FillData(_ltgGbItemData4, shopCfgId, activityInfo.EndTime);
  106. }
  107. }
  108. }
  109. }
  110. _ltgGbItemData4 = _ltgGbItemData4.OrderBy(a => a.ShopCfgId).ToList();
  111. }
  112. public void UpLtgGbItemData5()
  113. {
  114. _ltgGbItemData5.Clear();
  115. foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
  116. ActivityType.XSLB3))
  117. {
  118. if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())
  119. {
  120. ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
  121. //判断是否是类型4的数据
  122. if (activityOpenCfg.type == ActivityType.XSLB3)
  123. {
  124. FillData(_ltgGbItemData5, activityOpenCfg.paramsArr[0], activityInfo.EndTime);
  125. }
  126. }
  127. }
  128. _ltgGbItemData5 = _ltgGbItemData5.OrderBy(a => a.ShopCfgId).ToList();
  129. }
  130. private void FillData(List<LimitedTimeGiftBoxItemYxData> listData, int shopCfgId, long endTime)
  131. {
  132. ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
  133. if (shopCfg == null)
  134. {
  135. Log.Error("shopCfg is null");
  136. return;
  137. }
  138. var ltgGbItemData = listData.FirstOrDefault(a => a.ShopCfgId == shopCfgId);
  139. if (ltgGbItemData == null)
  140. {
  141. listData.Add(new LimitedTimeGiftBoxItemYxData
  142. {
  143. EndTime = endTime,
  144. ShopCfgId = shopCfg.id,
  145. IndexType = shopCfg.menu2
  146. });
  147. }
  148. else
  149. {
  150. var index = listData.IndexOf(ltgGbItemData);
  151. ltgGbItemData.IndexType = shopCfg.menu2;
  152. ltgGbItemData.EndTime = endTime;
  153. listData[index] = ltgGbItemData;
  154. }
  155. }
  156. //1元礼包是否还可购买
  157. public bool SpecialOfferGiftBoxCanBuy()
  158. {
  159. LimitedTimeGiftBoxDataManager.Instance.UpLtgGbItemData3();
  160. if (SpecialOfferGiftBoxCanTypeBuy(ListUtil.NavigateType.None))
  161. return true;
  162. if (SpecialOfferGiftBoxCanTypeBuy(ListUtil.NavigateType.Next))
  163. return true;
  164. return false;
  165. }
  166. public bool SpecialOfferGiftBoxCanTypeBuy(ListUtil.NavigateType type)
  167. {
  168. var list = LimitedTimeGiftBoxDataManager.Instance.LtgGbItemData3;
  169. list = list.Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
  170. if (list.Count == 0)
  171. return false;
  172. var data = ListUtil.Navigate(list, type, 0, out int newIndex);
  173. foreach (var shopCfgId in data.ShopCfgIds)
  174. {
  175. var shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
  176. var remainBuyNum = shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id);
  177. if (remainBuyNum > 0)
  178. return true;
  179. }
  180. return false;
  181. }
  182. }
  183. }