BrocadeWeavTask.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using cfg.GfgCfg;
  4. using ET;
  5. using FairyGUI;
  6. using UI.CommonGame;
  7. using UI.Store;
  8. namespace GFGGame
  9. {
  10. public class BrocadeWeavTaskView : BaseWindow
  11. {
  12. private UI_BrocadeWeavTask _ui;
  13. private List<TaskCfg> _cfgs;
  14. private int funcType = TaskFuncType.BattlePass;
  15. private EffectUI _effectUI1;
  16. private EffectUI _effectUI2;
  17. public override void Dispose()
  18. {
  19. EffectUIPool.Recycle(_effectUI1);
  20. _effectUI1 = null;
  21. EffectUIPool.Recycle(_effectUI2);
  22. _effectUI2 = null;
  23. if (_ui != null)
  24. {
  25. _ui.Dispose();
  26. _ui = null;
  27. }
  28. base.Dispose();
  29. }
  30. protected override void OnInit()
  31. {
  32. base.OnInit();
  33. packageName = UI_BrocadeWeavTask.PACKAGE_NAME;
  34. _ui = UI_BrocadeWeavTask.Create();
  35. this.viewCom = _ui.target;
  36. this.viewCom.Center();
  37. this.modal = true;
  38. _ui.m_TaskList.itemRenderer = TaskItemRender;
  39. _ui.m_btnGet.onClick.Add(OnBtnGetAllClick);
  40. AddEffect();
  41. }
  42. protected override void OnShown()
  43. {
  44. base.OnShown();
  45. UpdateTask();
  46. if (_ui.m_TaskList.numItems > 0)
  47. {
  48. _ui.m_TaskList.ScrollToView(0);
  49. }
  50. }
  51. protected override void AddEventListener()
  52. {
  53. base.AddEventListener();
  54. // EventAgent.AddEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange);
  55. EventAgent.AddEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTaskChanges);
  56. }
  57. protected override void RemoveEventListener()
  58. {
  59. base.RemoveEventListener();
  60. // EventAgent.RemoveEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange);
  61. EventAgent.RemoveEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTaskChanges);
  62. }
  63. //OnTaskChanges
  64. private void OnTaskChanges(EventContext eventContext)
  65. {
  66. var taskIds = (List<int>)eventContext.data;
  67. if (taskIds.Select(taskId => CommonDataManager.Tables.TblTaskCfg.GetOrDefault(taskId)).Where(taskCfg => taskCfg != null)
  68. .Any(taskCfg => taskCfg.FuncType == funcType))
  69. {
  70. UpdateTask();
  71. }
  72. }
  73. private void OnTaskChange(EventContext eventContext)
  74. {
  75. var taskId = (int)eventContext.data;
  76. var taskCfg = CommonDataManager.Tables.TblTaskCfg.GetOrDefault(taskId);
  77. if (taskCfg == null) return;
  78. if (taskCfg.FuncType != funcType) return;
  79. UpdateTask();
  80. }
  81. //切换任务类型
  82. private void OnCtrlChange()
  83. {
  84. //更新任务列表
  85. UpdateTask();
  86. }
  87. //更新任务列表
  88. private void UpdateTask()
  89. {
  90. _cfgs = TaskDataManager.Instance.GetTaskCfgs(funcType);
  91. _ui.m_TaskList.numItems = _cfgs.Count;
  92. RedDotController.Instance.SetComRedDot(_ui.m_btnGet,
  93. TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.BattlePass));
  94. }
  95. private void TaskItemRender(int index, GObject obj)
  96. {
  97. var item = UI_TaskListItem.Proxy(obj);
  98. //领取状态
  99. item.m_c1.selectedIndex = TaskDataManager.Instance.GetTaskStateById(_cfgs[index].Id);
  100. item.m_c2.selectedIndex = _cfgs[index].JumpId == "" ? 1 : 0;
  101. item.m_txtDesc.text = TaskDataManager.Instance.GetTaskDesc(_cfgs[index].Id);
  102. item.m_txtCount.text =
  103. $"{TaskDataManager.Instance.GetTaskProgressById(_cfgs[index].Id)}/{_cfgs[index].GetTargetCount()}";
  104. if (item.m_GetRewardBt.target.data == null)
  105. {
  106. item.m_GetRewardBt.target.onClick.Add(OnBtnGetClick);
  107. }
  108. item.m_GetRewardBt.target.data = _cfgs[index].Id;
  109. if (item.m_ComeBt.target.data == null)
  110. {
  111. item.m_ComeBt.target.onClick.Add(OnBtnGoClick);
  112. }
  113. item.m_ComeBt.target.data = _cfgs[index];
  114. if (item.m_listTaskReward.data == null)
  115. {
  116. item.m_listTaskReward.itemRenderer = ListTaskRewardItemRender;
  117. }
  118. var reward = TaskDataManager.Instance.GetReward(_cfgs[index]);
  119. item.m_listTaskReward.data = reward;
  120. item.m_listTaskReward.numItems = reward.Count;
  121. var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy();
  122. bool canGet = item.m_c1.selectedIndex == 1 && (funcType != TaskFuncType.BattlePass || funcType == TaskFuncType.BattlePass && isBuy);
  123. RedDotController.Instance.SetComRedDot(item.m_GetRewardBt.target, canGet);
  124. UI_TaskListItem.ProxyEnd();
  125. }
  126. private static void ListTaskRewardItemRender(int index, GObject obj)
  127. {
  128. var rewards = (List<ItemParamProto>)obj.parent.data;
  129. var itemData = ItemUtil.createItemData(rewards[index]);
  130. var item = new ItemView(obj as GComponent);
  131. obj.data = item;
  132. item.SetData(itemData);
  133. item.ChangeTxtCountStyle();
  134. UI_RewardIconYellow.ProxyEnd();
  135. }
  136. private async void OnBtnGetClick(EventContext context)
  137. {
  138. if (!(context.sender is GObject btnGet)) return;
  139. if (funcType == TaskFuncType.BattlePass)
  140. {
  141. //检查通行证是否开启
  142. var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy();
  143. if (!isBuy)
  144. {
  145. PromptController.Instance.ShowFloatTextPrompt("开启锦罗织造可领取");
  146. return;
  147. }
  148. }
  149. var result = await TaskSProxy.GetTaskBonus((int)btnGet.data);
  150. if (!result) return;
  151. UpdateTask();
  152. LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.MEI_RI_REN_WU, 2);
  153. }
  154. private void OnBtnGoClick(EventContext context)
  155. {
  156. if (!(context.sender is GObject { data: TaskCfg taskCfg })) return;
  157. //功能未开放
  158. if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(taskCfg.JumpId)) return;
  159. Hide();
  160. var param = new object[taskCfg.JumpParam.Count];
  161. for (var i = 0; i < taskCfg.JumpParam.Count; i++)
  162. {
  163. param[i] = taskCfg.JumpParam[i];
  164. }
  165. ViewManager.JumpToView(taskCfg.JumpId, param,true,true);
  166. }
  167. private async void OnBtnGetAllClick()
  168. {
  169. //通用任务一键领奖
  170. if (funcType == TaskFuncType.BattlePass)
  171. {
  172. //检查通行证是否开启
  173. var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy();
  174. if (!isBuy)
  175. {
  176. PromptController.Instance.ShowFloatTextPrompt("开启锦罗织造可领取");
  177. return;
  178. }
  179. }
  180. var result = await TaskSProxy.GetAllTaskBonus(funcType);
  181. if (!result) return;
  182. UpdateTask();
  183. LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.MEI_RI_REN_WU, 2);
  184. }
  185. private void AddEffect()
  186. {
  187. //邊框左上角特效
  188. _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_holderLeftTop, "ui_Activity", "Com_window_L_up");
  189. //邊框右下角特效
  190. _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_holderRightDowm, "ui_Activity", "Com_window_R_Down");
  191. }
  192. }
  193. }