BrocadeWeavTask.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  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))
  68. .Where(taskCfg => taskCfg != null)
  69. .Any(taskCfg => taskCfg.FuncType == funcType))
  70. {
  71. UpdateTask();
  72. }
  73. }
  74. private void OnTaskChange(EventContext eventContext)
  75. {
  76. var taskId = (int)eventContext.data;
  77. var taskCfg = CommonDataManager.Tables.TblTaskCfg.GetOrDefault(taskId);
  78. if (taskCfg == null) return;
  79. if (taskCfg.FuncType != funcType) return;
  80. UpdateTask();
  81. }
  82. //切换任务类型
  83. private void OnCtrlChange()
  84. {
  85. //更新任务列表
  86. UpdateTask();
  87. }
  88. //更新任务列表
  89. private void UpdateTask()
  90. {
  91. _cfgs = TaskDataManager.Instance.GetTaskCfgs(funcType);
  92. _ui.m_TaskList.numItems = _cfgs.Count;
  93. RedDotController.Instance.SetComRedDot(_ui.m_btnGet,
  94. TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.BattlePass));
  95. }
  96. private void TaskItemRender(int index, GObject obj)
  97. {
  98. var item = UI_TaskListItem.Proxy(obj);
  99. //领取状态
  100. item.m_c1.selectedIndex = TaskDataManager.Instance.GetTaskStateById(_cfgs[index].Id);
  101. item.m_c2.selectedIndex = _cfgs[index].JumpId == "" ? 1 : 0;
  102. item.m_txtDesc.text = TaskDataManager.Instance.GetTaskDesc(_cfgs[index].Id);
  103. item.m_txtCount.text =
  104. $"{TaskDataManager.Instance.GetTaskProgressById(_cfgs[index].Id)}/{_cfgs[index].GetTargetCount()}";
  105. if (item.m_GetRewardBt.target.data == null)
  106. {
  107. item.m_GetRewardBt.target.onClick.Add(OnBtnGetClick);
  108. }
  109. item.m_GetRewardBt.target.data = _cfgs[index].Id;
  110. if (item.m_ComeBt.target.data == null)
  111. {
  112. item.m_ComeBt.target.onClick.Add(OnBtnGoClick);
  113. }
  114. item.m_ComeBt.target.data = _cfgs[index];
  115. if (item.m_listTaskReward.data == null)
  116. {
  117. item.m_listTaskReward.itemRenderer = ListTaskRewardItemRender;
  118. }
  119. var reward = TaskDataManager.Instance.GetReward(_cfgs[index]);
  120. item.m_listTaskReward.data = reward;
  121. item.m_listTaskReward.numItems = reward.Count;
  122. var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy();
  123. bool canGet = item.m_c1.selectedIndex == 1 &&
  124. (funcType != TaskFuncType.BattlePass || funcType == TaskFuncType.BattlePass && isBuy);
  125. RedDotController.Instance.SetComRedDot(item.m_GetRewardBt.target, canGet);
  126. UI_TaskListItem.ProxyEnd();
  127. }
  128. private static void ListTaskRewardItemRender(int index, GObject obj)
  129. {
  130. var rewards = (List<ItemParamProto>)obj.parent.data;
  131. var itemData = ItemUtil.createItemData(rewards[index]);
  132. var item = new ItemView(obj as GComponent);
  133. obj.data = item;
  134. item.SetData(itemData);
  135. item.ChangeTxtCountStyle();
  136. UI_RewardIconYellow.ProxyEnd();
  137. }
  138. private async void OnBtnGetClick(EventContext context)
  139. {
  140. if (!(context.sender is GObject btnGet)) return;
  141. if (funcType == TaskFuncType.BattlePass)
  142. {
  143. //检查通行证是否开启
  144. var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy();
  145. if (!isBuy)
  146. {
  147. PromptController.Instance.ShowFloatTextPrompt("开启锦罗织造可领取");
  148. return;
  149. }
  150. }
  151. var result = await TaskSProxy.GetTaskBonus((int)btnGet.data);
  152. if (!result) return;
  153. UpdateTask();
  154. LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.MEI_RI_REN_WU, 2);
  155. }
  156. private void OnBtnGoClick(EventContext context)
  157. {
  158. if (!(context.sender is GObject { data: TaskCfg taskCfg })) return;
  159. //功能未开放
  160. if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(taskCfg.JumpId)) return;
  161. Hide();
  162. var param = new object[taskCfg.JumpParam.Count];
  163. for (var i = 0; i < taskCfg.JumpParam.Count; i++)
  164. {
  165. param[i] = taskCfg.JumpParam[i];
  166. }
  167. ViewManager.JumpToView(taskCfg.JumpId, param, true, true);
  168. }
  169. private async void OnBtnGetAllClick()
  170. {
  171. //通用任务一键领奖
  172. if (funcType == TaskFuncType.BattlePass)
  173. {
  174. //检查通行证是否开启
  175. var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy();
  176. if (!isBuy)
  177. {
  178. PromptController.Instance.ShowFloatTextPrompt("开启锦罗织造可领取");
  179. return;
  180. }
  181. }
  182. var result = await TaskSProxy.GetAllTaskBonus(funcType);
  183. if (!result) return;
  184. UpdateTask();
  185. LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.MEI_RI_REN_WU, 2);
  186. }
  187. private void AddEffect()
  188. {
  189. //邊框左上角特效
  190. EffectUIPool.CreateEffectUI(_ui.m_holderLeftTop, "ui_Activity", "Com_window_L_up",
  191. onComplete: (effect) =>
  192. {
  193. if (effect != null)
  194. {
  195. _effectUI1 = effect;
  196. }
  197. });
  198. //邊框右下角特效
  199. EffectUIPool.CreateEffectUI(_ui.m_holderRightDowm, "ui_Activity", "Com_window_R_Down",
  200. onComplete: (effect) =>
  201. {
  202. if (effect != null)
  203. {
  204. _effectUI2 = effect;
  205. }
  206. });
  207. }
  208. }
  209. }