ActivityAfuGiftView.cs 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. using System.Collections;
  2. using UnityEngine;
  3. using UI.ActivityAFuGift;
  4. using ET;
  5. using FairyGUI;
  6. using System;
  7. using UI.CommonGame;
  8. using static GFGGame.ShopSProxy;
  9. namespace GFGGame
  10. {
  11. public class ActivityAfuGiftView : BaseWindow
  12. {
  13. private UI_ActivityAFuGiftUI _ui;
  14. private GList _rewardListUI;
  15. private struct GetState
  16. {
  17. public int rewardID;
  18. public int dayIndex;
  19. public bool canGet;
  20. public bool isVip;
  21. }
  22. public override void Dispose()
  23. {
  24. base.Dispose();
  25. }
  26. protected override void OnInit()
  27. {
  28. base.OnInit();
  29. packageName = UI_ActivityAFuGiftUI.PACKAGE_NAME;
  30. _ui = UI_ActivityAFuGiftUI.Create();
  31. viewCom = _ui.target;
  32. viewCom.Center();
  33. modal = true;
  34. viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
  35. _ui.m_btnClose.onClick.Add(Hide);
  36. _ui.m_btnGet.onClick.Add(OnClickBtnGet);
  37. // Data
  38. ActivityAfuGiftDataManager.Instance.InitActivityInfo();
  39. // UI
  40. _rewardListUI = _ui.m_panel.m_scrollPane.m_list;
  41. _rewardListUI.itemRenderer = RenderListReward;
  42. _rewardListUI.numItems = ActivityAfuGiftDataManager.Instance.RewardCfgs.Count;
  43. InitUI();
  44. }
  45. protected override void OnShown()
  46. {
  47. base.OnShown();
  48. _ui.m_panel.m_scrollPane.target.scrollPane.posX = 0;
  49. UpdateTime(null);
  50. Timers.inst.Add(1, 0, UpdateTime);
  51. }
  52. protected override void OnHide()
  53. {
  54. base.OnHide();
  55. Timers.inst.Remove(UpdateTime);
  56. }
  57. protected override void AddEventListener()
  58. {
  59. base.AddEventListener();
  60. EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateState);
  61. }
  62. protected override void RemoveEventListener()
  63. {
  64. base.RemoveEventListener();
  65. EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateState);
  66. }
  67. private void InitUI()
  68. {
  69. _ui.m_c1.SetSelectedIndex(ActivityAfuGiftDataManager.Instance.GetIsBuy() ? 1 : 0);
  70. // 使列表宽度等于子节点的总宽度
  71. float itemWidth = _rewardListUI.GetChildAt(0).width;
  72. float columnGap = _rewardListUI.columnGap;
  73. _rewardListUI.width = CalculateListWidth(_rewardListUI.numItems, itemWidth, columnGap);
  74. Timers.inst.StartCoroutine(InitProgressWidth());
  75. }
  76. private IEnumerator InitProgressWidth()
  77. {
  78. yield return new WaitForSeconds(0.5f);
  79. // 根据列表 初始化进度条长度
  80. float marginLeft = 149;
  81. GProgressBar gProgressBar = _ui.m_panel.m_scrollPane.m_progress;
  82. gProgressBar.width = marginLeft + _rewardListUI.GetChildAt(_rewardListUI.numChildren - 1).position.x - _rewardListUI.GetChildAt(0).position.x;
  83. }
  84. private float CalculateListWidth(int num, float itemWidth, float columnGap)
  85. {
  86. return num * itemWidth + (num - 1) * columnGap;
  87. }
  88. private void UpdateTime(object param)
  89. {
  90. long curTime = TimeHelper.ServerNow();
  91. long endTime = ActivityAfuGiftDataManager.Instance.GetEndTime();
  92. _ui.m_txtTime.text = TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime);
  93. }
  94. private void RenderListReward(int index, GObject item)
  95. {
  96. UI_reward rewardUI = UI_reward.Proxy(item);
  97. rewardUI.m_day.m_day.SetVar("day", (index + 1).ToString()).FlushVars();
  98. // 已经到达的日期
  99. int passDay = ActivityAfuGiftDataManager.Instance.GetMaxPassDay();
  100. int arrive = (index + 1) <= passDay ? 0 : 1;
  101. rewardUI.m_day.m_light.SetSelectedIndex(arrive);
  102. int itemNormalId = ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusFreeArr[0][0];
  103. int itemVipId1 = ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[0][0];
  104. int itemVipId2 = ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[1][0];
  105. LoadItem(itemNormalId, rewardUI.m_reward_normal, ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusFreeArr[0][1]);
  106. LoadItem(itemVipId1, rewardUI.m_reward_vip1, ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[0][1], true);
  107. LoadItem(itemVipId2, rewardUI.m_reward_vip2, ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[1][1], true);
  108. UI_reward.ProxyEnd();
  109. }
  110. private void LoadItem(int id, GObject obj, int num, bool isVip = false)
  111. {
  112. ItemCfg itemNormal = ItemCfgArray.Instance.GetCfg(id);
  113. UI_ComItem comItem = UI_ComItem.Proxy(obj);
  114. comItem.m_loaIcon.url = ResPathUtil.GetIconPath(itemNormal);
  115. comItem.m_txtCount.text = num.ToString();
  116. comItem.m_QualityType.selectedIndex = itemNormal.rarity - 1;
  117. comItem.target.onClick.Add(OnItemClick);
  118. int isLock = 0;
  119. if (isVip)
  120. {
  121. isLock = ActivityAfuGiftDataManager.Instance.GetIsBuy() ? 0 : 1;
  122. }
  123. comItem.m_Lock.selectedIndex = isLock;
  124. int dayIndex = _rewardListUI.GetChildIndex(obj) + 1;
  125. // 已经到达的日期
  126. int passDay = ActivityAfuGiftDataManager.Instance.GetMaxPassDay();
  127. bool arrive = dayIndex <= passDay;
  128. comItem.target.data = new GetState
  129. {
  130. rewardID = id,
  131. canGet = arrive,
  132. dayIndex = dayIndex,
  133. isVip = isVip
  134. };
  135. if (arrive)
  136. {
  137. ActivityInfo activityInfo = ActivityAfuGiftDataManager.Instance.Info;
  138. bool canGet = false;
  139. // Vip专属
  140. if (isVip)
  141. {
  142. canGet = ActivityAfuGiftDataManager.Instance.CanGetSuperReward(dayIndex);
  143. }
  144. else
  145. {
  146. canGet = ActivityAfuGiftDataManager.Instance.CanGetNormalReward(dayIndex);
  147. }
  148. // 已领
  149. if (!canGet)
  150. {
  151. //bonus.m_imgGot.visible = true;
  152. obj.touchable = false;
  153. // 隐藏红点
  154. RedDotController.Instance.SetComRedDot(obj.asCom, false);
  155. }
  156. // 未领
  157. else
  158. {
  159. //bonus.m_imgGot.visible = false;
  160. // 显示红点
  161. RedDotController.Instance.SetComRedDot(obj.asCom, true);
  162. }
  163. }
  164. UI_ComItem.ProxyEnd();
  165. }
  166. private void OnItemClick(EventContext eventContext)
  167. {
  168. GObject obj = (GObject)eventContext.sender;
  169. GetState getState = (GetState)(obj.data);
  170. if (getState.canGet)
  171. {
  172. // Vip奖励同时领取两个
  173. if (getState.isVip)
  174. {
  175. int rewardID1 = ActivityAfuGiftDataManager.Instance.RewardCfgs[getState.dayIndex - 1].bonusPayArr[0][1];
  176. int rewardID2 = ActivityAfuGiftDataManager.Instance.RewardCfgs[getState.dayIndex - 1].bonusPayArr[1][1];
  177. }
  178. else
  179. {
  180. int ID = ActivityAfuGiftDataManager.Instance.RewardCfgs[getState.dayIndex - 1].bonusFreeArr[0][1];
  181. }
  182. //ActivityGlobalSProxy.ReqGetActivityBonus(_activityInfo.ActivityId, getState.rewardID).Coroutine();
  183. }
  184. else
  185. {
  186. GoodsItemTipsController.ShowItemTips(getState.rewardID);
  187. }
  188. }
  189. /// <summary>
  190. /// 领取所有奖励按钮
  191. /// </summary>
  192. private void OnClickBtnGet()
  193. {
  194. if (!ActivityAfuGiftDataManager.Instance.GetIsBuy())
  195. {
  196. // 跳转充值画面
  197. ReqShopBuy(990005).Coroutine();
  198. return;
  199. }
  200. // 一键领取
  201. int passDay = ActivityAfuGiftDataManager.Instance.GetMaxPassDay();
  202. for(int i = passDay - 1; i >= 0; i++)
  203. {
  204. int itemNormalId = ActivityAfuGiftDataManager.Instance.RewardCfgs[i].bonusFreeArr[0][0];
  205. int itemVipId1 = ActivityAfuGiftDataManager.Instance.RewardCfgs[i].bonusPayArr[0][0];
  206. int itemVipId2 = ActivityAfuGiftDataManager.Instance.RewardCfgs[i].bonusPayArr[1][0];
  207. if (ActivityAfuGiftDataManager.Instance.CanGetNormalReward(itemNormalId))
  208. {
  209. }
  210. if (ActivityAfuGiftDataManager.Instance.CanGetSuperReward(itemVipId1))
  211. {
  212. }
  213. if (ActivityAfuGiftDataManager.Instance.CanGetSuperReward(itemVipId2))
  214. {
  215. }
  216. }
  217. }
  218. /// <summary>
  219. /// 充值,领取东西后调用
  220. /// </summary>
  221. private void UpdateState()
  222. {
  223. // 更新底部按钮
  224. _ui.m_c1.SetSelectedIndex(ActivityAfuGiftDataManager.Instance.GetIsBuy() ? 1 : 0);
  225. // 更新锁 红点状态
  226. _rewardListUI.numItems = ActivityAfuGiftDataManager.Instance.RewardCfgs.Count;
  227. }
  228. }
  229. }