LimitedTimeGiftBoxDataManager.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  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. //圆形样式数据4--等级条件的数据
  13. private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData4 = new List<LimitedTimeGiftBoxItemYxData>();
  14. public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData4 => _ltgGbItemData4;
  15. //圆形样式数据5--时间条件的数据
  16. private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData5 = new List<LimitedTimeGiftBoxItemYxData>();
  17. public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData5 => _ltgGbItemData5;
  18. public void Clear()
  19. {
  20. _ltgGbItemData4.Clear();
  21. _ltgGbItemData5.Clear();
  22. _isOpenMeiRiTeHui = false;
  23. }
  24. public void SetIsOpenMeiRiTeHui()
  25. {
  26. _isOpenMeiRiTeHui = true;
  27. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  28. }
  29. public void UpLtgGbItemData4()
  30. {
  31. _ltgGbItemData4.Clear();
  32. foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
  33. ActivityType.XSLB2))
  34. {
  35. if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())
  36. {
  37. ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
  38. //判断是否是类型4的数据
  39. if (activityOpenCfg.type == ActivityType.XSLB2)
  40. {
  41. foreach (var shopCfgId in activityOpenCfg.paramsArr)
  42. {
  43. FillData(_ltgGbItemData4, shopCfgId, activityInfo.EndTime);
  44. }
  45. }
  46. }
  47. }
  48. _ltgGbItemData4 = _ltgGbItemData4.OrderBy(a => a.ShopCfgId).ToList();
  49. }
  50. public void UpLtgGbItemData5()
  51. {
  52. _ltgGbItemData5.Clear();
  53. foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
  54. ActivityType.XSLB3))
  55. {
  56. if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())
  57. {
  58. ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
  59. //判断是否是类型4的数据
  60. if (activityOpenCfg.type == ActivityType.XSLB3)
  61. {
  62. FillData(_ltgGbItemData5, activityOpenCfg.paramsArr[0], activityInfo.EndTime);
  63. }
  64. }
  65. }
  66. _ltgGbItemData5 = _ltgGbItemData5.OrderBy(a => a.ShopCfgId).ToList();
  67. }
  68. private void FillData(List<LimitedTimeGiftBoxItemYxData> listData, int shopCfgId, long endTime)
  69. {
  70. ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
  71. if (shopCfg == null)
  72. {
  73. Log.Error("shopCfg is null");
  74. return;
  75. }
  76. var ltgGbItemData = listData.FirstOrDefault(a => a.ShopCfgId == shopCfgId);
  77. if (ltgGbItemData == null)
  78. {
  79. listData.Add(new LimitedTimeGiftBoxItemYxData
  80. {
  81. EndTime = endTime,
  82. ShopCfgId = shopCfg.id,
  83. IndexType = shopCfg.menu2
  84. });
  85. }
  86. else
  87. {
  88. var index = listData.IndexOf(ltgGbItemData);
  89. ltgGbItemData.IndexType = shopCfg.menu2;
  90. ltgGbItemData.EndTime = endTime;
  91. listData[index] = ltgGbItemData;
  92. }
  93. }
  94. //1元礼包是否还可购买
  95. public bool SpecialOfferGiftBoxCanBuy()
  96. {
  97. var activityInfoByTypeList =
  98. ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB1);
  99. var list = activityInfoByTypeList
  100. .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
  101. return list.Count == 0;
  102. }
  103. //获得特惠礼包展示的列表id
  104. public List<int> TryShopCfg()
  105. {
  106. int activityId = 0;
  107. foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
  108. ActivityType.XSLB1))
  109. {
  110. if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow()) {
  111. activityId = activityInfo.ActivityId;
  112. break;
  113. }
  114. }
  115. ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityId);
  116. List<int> shopCfgIds = new List<int>();
  117. bool same = false;
  118. int sellShowId = 0;
  119. var paramsArr = activityOpenCfg.paramsArr;
  120. var params2Arr = activityOpenCfg.params2Arr;
  121. for (int j = 0; j < params2Arr.Length; j++)
  122. {
  123. for (int i = 0; i < paramsArr.Length; i++)
  124. {
  125. if (params2Arr[j] == paramsArr[i])
  126. {
  127. var shopCfg = ShopCfgArray.Instance.GetCfg(paramsArr[i]);
  128. bool isSellOut = shopCfg.maxBuyNum > 0 &&
  129. shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id) <= 0;
  130. if (!isSellOut)
  131. sellShowId = paramsArr[i];
  132. break;
  133. }
  134. }
  135. if (sellShowId > 0)
  136. break;
  137. }
  138. if (sellShowId <= 0)
  139. sellShowId = params2Arr[params2Arr.Length - 1];
  140. shopCfgIds.Add(sellShowId);
  141. for (int i = 0; i < paramsArr.Length; i++)
  142. {
  143. same = false;
  144. for (int j = 0; j < params2Arr.Length; j++)
  145. {
  146. if (params2Arr[j] == paramsArr[i])
  147. {
  148. same = true;
  149. break;
  150. }
  151. }
  152. if (!same)
  153. shopCfgIds.Add(paramsArr[i]);
  154. }
  155. return shopCfgIds;
  156. }
  157. }
  158. }