StoreSummerGiftView.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using ET;
  5. using FairyGUI;
  6. using UI.Store;
  7. using UI.CommonGame;
  8. using UnityEngine;
  9. using static GFGGame.ShopSProxy;
  10. namespace GFGGame
  11. {
  12. class StoreSummerGiftView : BaseWindow
  13. {
  14. private UI_StoreSummerGiftUI _ui;
  15. private List<CoolDownCfg> _rewardCfgs;
  16. private ActivityOpenCfg activityOpenCfg;
  17. public override void Dispose()
  18. {
  19. if (_ui != null)
  20. {
  21. _ui.Dispose();
  22. _ui = null;
  23. }
  24. base.Dispose();
  25. }
  26. protected override void OnInit()
  27. {
  28. base.OnInit();
  29. packageName = UI_StoreSummerGiftUI.PACKAGE_NAME;
  30. _ui = UI_StoreSummerGiftUI.Create();
  31. viewCom = _ui.target;
  32. isfullScreen = true;
  33. clickBlankToClose = false;
  34. _ui.m_btnOpen.onClick.Add(OnBtnOpenClick);
  35. _ui.m_btnGetAll.onClick.Add(OnBtnGetAllClick);
  36. _ui.m_RewardList.itemRenderer = ListBoxRewardItemRender;
  37. //_ui.m_tip.onClick.Add(RuleController.ShowRuleView);
  38. //_ui.m_tip.data = 300012;
  39. }
  40. protected override void OnHide()
  41. {
  42. base.OnHide();
  43. Timers.inst.Remove(UpdateTime);
  44. }
  45. protected override void OnShown()
  46. {
  47. base.OnShown();
  48. activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(ActivityAfuGiftDataManager.Instance.SummerActivityID);
  49. FreshReward();
  50. Timers.inst.AddUpdate(UpdateTime);
  51. }
  52. protected override void AddEventListener()
  53. {
  54. base.AddEventListener();
  55. //监听通行证等级变化
  56. EventAgent.AddEventListener(ConstMessage.SHOP_BUY, SetBuyBtnStatus);
  57. EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, FreshReward);
  58. }
  59. protected override void RemoveEventListener()
  60. {
  61. base.RemoveEventListener();
  62. EventAgent.RemoveEventListener(ConstMessage.SHOP_BUY, SetBuyBtnStatus);
  63. EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, FreshReward);
  64. }
  65. //购买礼包
  66. private async void OnBtnOpenClick(EventContext context)
  67. {
  68. if(GetBuyStatus())
  69. {
  70. return;
  71. }
  72. await ReqShopBuy(activityOpenCfg.paramsArr[0]);
  73. await ActivityAfuGiftSProxy.GetSummerGiftInfo();
  74. _ui.m_RewardList.numItems = _rewardCfgs.Count;
  75. }
  76. //领取全部奖励
  77. private async void OnBtnGetAllClick(EventContext context)
  78. {
  79. if(!ActivityAfuGiftDataManager.Instance.GetSummerGiftRewardAllState())
  80. {
  81. return;
  82. }
  83. await ActivityAfuGiftSProxy.ReqGetSummerGiftAllReward();
  84. _ui.m_RewardList.numItems = _rewardCfgs.Count;
  85. }
  86. private void ListBoxRewardItemRender(int index, GObject obj)
  87. {
  88. var item = UI_BrocadeWeavRewardItem.Proxy(obj);
  89. var level = index;
  90. var battlePassCfg = _rewardCfgs[level];
  91. item.m_Level.text = (index + 1).ToString()+ "天";
  92. //设置奖励
  93. var bonusNormalArr = battlePassCfg.bonusFreeArr;
  94. if (bonusNormalArr != null && bonusNormalArr.Length > 0)
  95. {
  96. item.m_NormalReward.visible = true;
  97. ItemCfg itemNormal = ItemCfgArray.Instance.GetCfg(bonusNormalArr[0][0]);
  98. UI_ComItem comItem = UI_ComItem.Proxy(item.m_NormalReward);
  99. comItem.m_loaIcon.url = ResPathUtil.GetIconPath(itemNormal);
  100. comItem.m_txtCount.text = bonusNormalArr[0][1].ToString();
  101. comItem.m_QualityType.selectedIndex = itemNormal.rarity - 1;
  102. if (ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[0][index] == 0)
  103. {
  104. comItem.m_Lock.selectedIndex = 2;
  105. }
  106. else
  107. {
  108. comItem.m_Lock.selectedIndex = 0;
  109. }
  110. if (index <= ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[0].Count)
  111. {
  112. if (ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[0][index] == 2)
  113. {
  114. comItem.m_grpGot.visible = true;
  115. }
  116. else
  117. {
  118. comItem.m_grpGot.visible = false;
  119. }
  120. }
  121. else
  122. {
  123. comItem.m_grpGot.visible = false;
  124. }
  125. if (comItem.target.data == null)
  126. {
  127. comItem.target.onClick.Add(OnItemClick);
  128. }
  129. comItem.target.data = new List<int>() { 0, index, bonusNormalArr[0][0] };
  130. if (index <= ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[0].Count)
  131. {
  132. RedDotController.Instance.SetComRedDot(item.m_NormalReward, ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[0][index] == 1, "", -12, 24);
  133. }
  134. UI_ComItem.ProxyEnd();
  135. }
  136. else
  137. {
  138. item.m_NormalReward.data = null;
  139. item.m_NormalReward.visible = false;
  140. }
  141. if (item.m_RewardList.data == null)
  142. {
  143. item.m_RewardList.itemRenderer = SpecialRewardRender;
  144. }
  145. item.m_RewardList.data = _rewardCfgs[index];
  146. item.m_RewardList.numItems = battlePassCfg.bonusPayArr.Length;
  147. UI_BrocadeWeavRewardItem.ProxyEnd();
  148. }
  149. private void SpecialRewardRender(int index, GObject obj)
  150. {
  151. var keyValuePair = (CoolDownCfg)obj.parent.data;
  152. var itemInfo = keyValuePair.bonusPayArr;
  153. int day = keyValuePair.num - 1;
  154. ItemCfg itemNormal = ItemCfgArray.Instance.GetCfg(itemInfo[index][0]);
  155. UI_ComItem comItem = UI_ComItem.Proxy(obj);
  156. comItem.m_loaIcon.url = ResPathUtil.GetIconPath(itemNormal);
  157. comItem.m_txtCount.text = itemInfo[index][1].ToString();
  158. comItem.m_QualityType.selectedIndex = itemNormal.rarity - 1;
  159. if (ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[1][day] == 0)
  160. {
  161. comItem.m_Lock.selectedIndex = 1;
  162. }
  163. else
  164. {
  165. comItem.m_Lock.selectedIndex = 0;
  166. }
  167. if (day <= ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[1].Count)
  168. {
  169. if (ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[1][day] == 2)
  170. {
  171. comItem.m_grpGot.visible = true;
  172. }
  173. else
  174. {
  175. comItem.m_grpGot.visible = false;
  176. }
  177. }
  178. if (comItem.target.data == null)
  179. {
  180. comItem.target.onClick.Add(OnItemClick);
  181. }
  182. comItem.target.data = new List<int>() {1, day, itemInfo[index][0] };
  183. if (day <= ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[1].Count)
  184. {
  185. RedDotController.Instance.SetComRedDot(comItem.target, ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[1][day] == 1, "", -12, 24);
  186. }
  187. UI_ComItem.ProxyEnd();
  188. }
  189. private void OnItemClick(EventContext eventContext)
  190. {
  191. GObject sender = eventContext.sender as GObject;
  192. List<int> info = (List<int>)sender.data;
  193. if(info[1] <= ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[info[0]].Count)
  194. {
  195. if (ActivityAfuGiftDataManager.Instance.SummerGiftRewardState[info[0]][info[1]] == 1)
  196. {
  197. if(info[0] == 0)
  198. {
  199. ActivityAfuGiftSProxy.ReqGetSummerGiftReward(false,info[1] + 1).Coroutine();
  200. }
  201. else
  202. {
  203. ActivityAfuGiftSProxy.ReqGetSummerGiftReward(true,info[1] + 1).Coroutine();
  204. }
  205. _ui.m_RewardList.numItems = _rewardCfgs.Count;
  206. RedDotController.Instance.SetComRedDot(_ui.m_btnGetAll, ActivityAfuGiftDataManager.Instance.GetSummerGiftRewardAllState(), "");
  207. }
  208. else
  209. {
  210. GoodsItemTipsController.ShowItemTips(info[2]);
  211. }
  212. }
  213. }
  214. private void UpdateTime(object param)
  215. {
  216. long curTime = TimeHelper.ServerNow();
  217. var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(ActivityAfuGiftDataManager.Instance.SummerActivityID);
  218. if (activityInfo != null)
  219. {
  220. long endTime = activityInfo.EndTime;
  221. _ui.m_LeftTime.text = TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime);
  222. }
  223. else
  224. {
  225. _ui.m_LeftTime.text = "";
  226. }
  227. }
  228. private void FreshReward()
  229. {
  230. //刷新奖励列表
  231. _rewardCfgs = CoolDownCfgArray.Instance.dataArray.ToList();
  232. //去掉第一个为0的配置
  233. _ui.m_RewardList.numItems = _rewardCfgs.Count;
  234. SetBuyBtnStatus();
  235. }
  236. private void SetBuyBtnStatus(EventContext context = null)
  237. {
  238. //通行证是否购买
  239. ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(activityOpenCfg.paramsArr[0]);
  240. int buyNum = ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id);
  241. if (shopCfg.maxBuyNum == 0 || buyNum < shopCfg.maxBuyNum)
  242. {
  243. _ui.m_btnOpen.text = "¥ 68 解 锁";
  244. _ui.m_btnGetAll.visible = false;
  245. }
  246. else
  247. {
  248. _ui.m_btnOpen.text = "已解锁";
  249. _ui.m_btnGetAll.visible = true;
  250. }
  251. RedDotController.Instance.SetComRedDot(_ui.m_btnGetAll, ActivityAfuGiftDataManager.Instance.GetSummerGiftRewardAllState(), "");
  252. }
  253. private bool GetBuyStatus()
  254. {
  255. //通行证是否购买
  256. ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(activityOpenCfg.paramsArr[0]);
  257. int buyNum = ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id);
  258. if (shopCfg.maxBuyNum == 0 || buyNum < shopCfg.maxBuyNum)
  259. {
  260. return false;
  261. }
  262. else
  263. {
  264. return true;
  265. }
  266. }
  267. }
  268. }