源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

362 行
8.2 KiB

  1. TaskSubExtensionView = TaskSubExtensionView or BaseClass(BaseItem)
  2. local TaskSubExtensionView = TaskSubExtensionView
  3. function TaskSubExtensionView:__init(parent_wnd)
  4. self.base_file = "task"
  5. self.layout_file = "TaskSubExtensionView"
  6. self.model = TaskModel:getInstance()
  7. self.layer_name = "UI"
  8. self.award_item_list = {}
  9. self.last_click_time = 0
  10. self:Load()
  11. end
  12. function TaskSubExtensionView:__delete()
  13. if self.task_event_id then
  14. self.model:UnBind(self.task_event_id)
  15. self.task_event_id = nil
  16. end
  17. for i,item in pairs(self.award_item_list) do
  18. item:DeleteMe()
  19. end
  20. self.award_item_list = {}
  21. if self.verTabBar then
  22. self.verTabBar:DeleteMe()
  23. end
  24. self.verTabBar = nil
  25. end
  26. function TaskSubExtensionView:Load_callback()
  27. self.title_txt,
  28. self.task_desc_txt,
  29. self.task_tip_txt,
  30. self.opt_btn_txt,
  31. self.empty_tip_txt = self:GetChildTexts({
  32. "MessagePanel/Title/Text",
  33. "MessagePanel/TaskDesc",
  34. "MessagePanel/TaskTip",
  35. "MessagePanel/OptBtn/Text",
  36. "EmptyPanel/EmptyTip",
  37. })
  38. self.message_panel,
  39. self.empty_panel,
  40. self.opt_btn,
  41. self.opt_btn_bg,
  42. self.award_title_con = self:GetChildGameObjects({
  43. "MessagePanel",
  44. "EmptyPanel",
  45. "MessagePanel/OptBtn",
  46. "MessagePanel/OptBtn/Bg",
  47. "MessagePanel/3",
  48. })
  49. self.mContent,
  50. self.effect,
  51. self.bar_parent = self:GetChildTransforms({
  52. "MessagePanel/ScrollView/Viewport/Content",
  53. "MessagePanel/OptBtn/Effect",
  54. "Info",
  55. })
  56. self:InitEvent()
  57. if self.need_refreshData then
  58. self:SetData(self.task_type,self.task_id)
  59. end
  60. end
  61. function TaskSubExtensionView:InitEvent()
  62. local function onClickHandler(target)
  63. if target == self.opt_btn then
  64. self:BtnCall()
  65. end
  66. end
  67. AddClickEvent(self.opt_btn,onClickHandler)
  68. -- 刷新列表
  69. local function onUpdateView( )
  70. if not self.data then
  71. return
  72. end
  73. local task_id = self.data.id
  74. local main_index,sub_index = self:GetTabIndexByTaskId(task_id)
  75. if main_index ~= 0 and self.verTabBar then
  76. self:CreateNewUICusVerTabBar()
  77. self:SeletedTabbar(main_index,sub_index,true)
  78. self.verTabBar:SetSelectTab(main_index,sub_index,true)
  79. else
  80. self:SetData()
  81. end
  82. end
  83. self.task_event_id = self.model:Bind(TaskEvent.TASK_LIST_INIT,onUpdateView)
  84. end
  85. function TaskSubExtensionView:AutoFindWay()
  86. if self.data then
  87. self.model:TaskClickFun(self.data)
  88. self.model:Fire(TaskEvent.CLOSE_TASK_VIEW)
  89. end
  90. end
  91. function TaskSubExtensionView:GetExtendsionTaskNum()
  92. if not self.tab_data then
  93. return 0,0
  94. end
  95. return #self.tab_data[1].sub_tab,#self.tab_data[2].sub_tab
  96. end
  97. function TaskSubExtensionView:CreateNewUICusVerTabBar()
  98. self.tab_data = self.model:GetExtensionTabData()
  99. if not self.verTabBar then
  100. self.verTabBar = NewUICusVerTabBar.New(self.bar_parent, Vector2(280, 580), TaskVerTabSubBtn, co.TableXY(274, 70),co.TableXY(140, -103))
  101. end
  102. local function select_callback(parent_index,sub_index,data)
  103. self:SeletedTabbar(parent_index,sub_index,data)
  104. end
  105. self.verTabBar:SetTabBars(self.tab_data, select_callback, true, true)
  106. end
  107. function TaskSubExtensionView:SeletedTabbar(parent_index,sub_index)
  108. self.parent_index = parent_index
  109. self.sub_index = sub_index
  110. if self.verTabBar ~= nil then
  111. self.verTabBar:SetTabBarIndex(parent_index,sub_index)
  112. self:SwitchBar()
  113. end
  114. end
  115. function TaskSubExtensionView:SwitchBar()
  116. local parent_index,sub_index = self.verTabBar:GetCurrentSelectIndex()
  117. if parent_index > 0 and sub_index > 0 then
  118. local data = self.tab_data[parent_index]
  119. if not data then
  120. return
  121. end
  122. data = data.sub_tab[sub_index]
  123. if data then
  124. self:ShowMessagePanel(true)
  125. self:SelectTask(data)
  126. end
  127. elseif parent_index > 0 then
  128. local data = self.tab_data[parent_index]
  129. if not data then
  130. return
  131. end
  132. if #data.sub_tab == 0 then
  133. self:ShowMessagePanel(false)
  134. if self.verTabBar then
  135. self.verTabBar:CancelCurrSelect()
  136. end
  137. if parent_index == 1 then
  138. self.empty_tip_txt.text = string.format("暂无已接支线任务")
  139. elseif parent_index == 2 then
  140. self.empty_tip_txt.text = string.format("暂无可接支线任务")
  141. end
  142. end
  143. end
  144. end
  145. function TaskSubExtensionView:ShowMessagePanel(bool)
  146. if bool then
  147. if not self.message_panel.activeSelf then
  148. self.message_panel:SetActive(true)
  149. end
  150. if self.empty_panel.activeSelf then
  151. self.empty_panel:SetActive(false)
  152. end
  153. else
  154. if self.message_panel.activeSelf then
  155. self.message_panel:SetActive(false)
  156. end
  157. if not self.empty_panel.activeSelf then
  158. self.empty_panel:SetActive(true)
  159. end
  160. end
  161. end
  162. function TaskSubExtensionView:SetData(task_type,task_id)
  163. self.task_type = task_type or self.task_type
  164. self.task_id = task_id or self.task_id
  165. if self.is_loaded then
  166. self.need_refreshData = false
  167. self:CreateNewUICusVerTabBar()
  168. local has_task,main_index,sub_index
  169. local receive_num,can_receive_num = self:GetExtendsionTaskNum()
  170. if receive_num > 0 then
  171. has_task = true
  172. main_index = 1
  173. sub_index = 1
  174. elseif can_receive_num > 0 then
  175. has_task = true
  176. main_index = 2
  177. sub_index = 1
  178. else
  179. has_task = false
  180. main_index = 1
  181. sub_index = 0
  182. end
  183. if self.task_id then
  184. local new_main_index,new_sub_index = self:GetTabIndexByTaskId(self.task_id)
  185. if new_main_index ~= 0 then
  186. main_index = new_main_index
  187. sub_index = new_sub_index
  188. end
  189. self.task_id = false
  190. end
  191. self:SeletedTabbar(main_index,sub_index,true)
  192. self.verTabBar:SetSelectTab(main_index,sub_index,true)
  193. else
  194. self.need_refreshData = true
  195. end
  196. end
  197. function TaskSubExtensionView:GetTabIndexByTaskId(task_id)
  198. if not self.tab_data then
  199. return 0,0
  200. end
  201. for index,data in ipairs(self.tab_data[1].sub_tab) do
  202. if data.id == task_id then
  203. return 1,index
  204. end
  205. end
  206. for index,data in ipairs(self.tab_data[2].sub_tab) do
  207. if data.id == task_id then
  208. return 2,index
  209. end
  210. end
  211. return 0,0
  212. end
  213. function TaskSubExtensionView:SelectTask(task_vo)
  214. self.data = task_vo
  215. self.model:MakeTaskTip(task_vo)
  216. self.title_txt.text = Trim(task_vo.taskName)
  217. self.task_desc_txt.text = Trim(task_vo.description)
  218. self.task_tip_txt.text = Trim(task_vo.tipContent)
  219. local award_list = task_vo.award_list or {}
  220. for i,v in ipairs(award_list) do
  221. local item = self.award_item_list[i]
  222. if item == nil then
  223. item = AwardItem.New(self.mContent)
  224. item:SetItemSize(80, 80)
  225. self.award_item_list[i] = item
  226. end
  227. item:SetVisible(true)
  228. local goods_id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
  229. item:SetData(goods_id, v[3], nil, nil, lock)
  230. end
  231. self.mContent.sizeDelta = Vector2(#award_list * 85,100)
  232. if #award_list > 0 then
  233. self.award_title_con:SetActive(true)
  234. else
  235. self.award_title_con:SetActive(false)
  236. end
  237. for i = #award_list + 1, #self.award_item_list do
  238. self.award_item_list[i]:SetVisible(false)
  239. end
  240. self:SetOptBtnState(task_vo)
  241. end
  242. function TaskSubExtensionView:SetOptBtnState(taskVO)
  243. if taskVO.isFinish then
  244. self.opt_btn:SetActive(false)
  245. else
  246. self.opt_btn:SetActive(true)
  247. if taskVO.acceptType == 1 then
  248. if taskVO.mainTip then
  249. self.opt_btn_txt.text = "前往日常"
  250. self:ClearEffect()
  251. else
  252. self.opt_btn_txt.text = "领取任务"
  253. --self:AddUIEffect("ui_anniu_1", self.effect, self.layer_name, nil, {x=1.22,y=1.1}, true)
  254. end
  255. else
  256. self.opt_btn_txt.text = "立即前往"
  257. self.opt_btn_bg:SetActive(false)
  258. self:ClearEffect()
  259. --如果是支线已完成的
  260. if self:IsExtendFinish() then
  261. self.opt_btn_txt.text = "领取奖励"
  262. self.opt_btn_bg:SetActive(true)
  263. -- self:AddUIEffect("ui_anniu_1", self.effect, self.layer_name, nil, {x=1.22,y=1.1}, true)
  264. end
  265. end
  266. end
  267. end
  268. function TaskSubExtensionView:IsExtendFinish( )
  269. if self.model:IsNeedClickTask(self.data) then
  270. --点击判断是否已经完成任务,是的话发协议完成任务
  271. local tip = self.model:GetExtendSpecialTip(self.data)
  272. if tip and tip.isFinish == 1 then
  273. return true
  274. end
  275. end
  276. end
  277. function TaskSubExtensionView:ClearEffect( )
  278. self:ClearUIEffect(self.effect)
  279. end
  280. function TaskSubExtensionView:BtnCall( )
  281. if not self.data then
  282. return
  283. end
  284. if Status.NowTime - self.last_click_time < 1 then
  285. return
  286. end
  287. self.last_click_time = Status.NowTime
  288. if self.data.mainTip then
  289. GlobalEventSystem:Fire(EventName.OPEN_DAILY_VIEW)
  290. self.model:Fire(TaskEvent.CLOSE_TASK_VIEW)
  291. else
  292. if self:IsExtendFinish() then
  293. GlobalEventSystem:Fire(TaskEventType.SEND_TASK_FINISH, self.data.id)
  294. else
  295. self:AutoFindWay()
  296. end
  297. end
  298. end