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

257 行
6.5 KiB

  1. TaskSubMainView = TaskSubMainView or BaseClass(BaseItem)
  2. local TaskSubMainView = TaskSubMainView
  3. function TaskSubMainView:__init(parent_wnd)
  4. self.base_file = "task"
  5. self.layout_file = "TaskSubMainView"
  6. self.model = TaskModel:getInstance()
  7. self.layer_name = "UI"
  8. self.award_item_list = {}
  9. self.last_click_time = 0
  10. --self.use_local_view = true
  11. self:Load()
  12. end
  13. function TaskSubMainView:__delete()
  14. if self.task_event_id then
  15. self.model:UnBind(self.task_event_id)
  16. self.task_event_id = nil
  17. end
  18. for i,item in pairs(self.award_item_list) do
  19. item:DeleteMe()
  20. end
  21. self.award_item_list = {}
  22. end
  23. function TaskSubMainView:Load_callback()
  24. self.message_panel,
  25. self.empty_panel,
  26. self.opt_btn,
  27. self.opt_btn_bg,
  28. self.award_title_con = self:GetChildGameObjects({
  29. "MessagePanel",
  30. "EmptyPanel",
  31. "MessagePanel/OptBtn",
  32. "MessagePanel/OptBtn/Bg",
  33. "MessagePanel/3"
  34. })
  35. self.cdn_img = self:GetChildImages({
  36. "CdnImage",
  37. })
  38. self.title_txt,
  39. self.task_desc_txt,
  40. self.task_tip_txt,
  41. self.opt_btn_txt,
  42. self.empty_tip_txt = self:GetChildTexts({
  43. "MessagePanel/Title/Text",
  44. "MessagePanel/TaskDesc",
  45. "MessagePanel/TaskTip",
  46. "MessagePanel/OptBtn/Text",
  47. "EmptyPanel/EmptyTip"
  48. })
  49. self.mContent,
  50. self.effect,
  51. self.roleCon = self:GetChildTransforms({
  52. "MessagePanel/ScrollView/Viewport/Content",
  53. "MessagePanel/OptBtn/Effect",
  54. "roleCon"
  55. })
  56. lua_resM:setOutsideImageSprite(self,self.cdn_img,GameResPath.GetJpgImage("zxui_bg.jpg"))
  57. self:InitEvent()
  58. if self.need_refreshData then
  59. self:SetData(self.task_type,self.task_id)
  60. end
  61. end
  62. function TaskSubMainView:InitEvent()
  63. local function onClickHandler(target)
  64. if target == self.opt_btn then
  65. if not self.data then
  66. return
  67. end
  68. if Status.NowTime - self.last_click_time < 1 then
  69. return
  70. end
  71. self.last_click_time = Status.NowTime
  72. if self.data.mainTip then
  73. GlobalEventSystem:Fire(EventName.OPEN_DAILY_VIEW)
  74. self.model:Fire(TaskEvent.CLOSE_TASK_VIEW)
  75. else
  76. if self:IsExtendFinish() then
  77. GlobalEventSystem:Fire(TaskEventType.SEND_TASK_FINISH, self.data.id)
  78. else
  79. self:AutoFindWay()
  80. end
  81. end
  82. end
  83. end
  84. AddClickEvent(self.opt_btn,onClickHandler)
  85. -- 刷新列表
  86. local function onUpdateView( )
  87. self:SetData()
  88. end
  89. self.task_event_id = self.model:Bind(TaskEvent.TASK_LIST_INIT,onUpdateView)
  90. end
  91. function TaskSubMainView:AutoFindWay()
  92. if self.data then
  93. self.model:TaskClickFun(self.data)
  94. self.model:Fire(TaskEvent.CLOSE_TASK_VIEW)
  95. end
  96. end
  97. function TaskSubMainView:SetData(task_type,task_id)
  98. self.task_type = task_type or self.task_type
  99. self.task_id = task_id or self.task_id
  100. if self.is_loaded then
  101. self.need_refreshData = false
  102. local task_list = self.model:GetTabData(self.task_type)
  103. if task_list and #task_list > 0 then
  104. self.message_panel:SetActive(true)
  105. self.empty_panel:SetActive(false)
  106. local task_vo = task_list[1]
  107. self.data = task_vo
  108. self.model:MakeTaskTip(task_vo)
  109. self.title_txt.text = Trim(task_vo.taskName)
  110. self.task_desc_txt.text = Trim(task_vo.description)
  111. self.task_tip_txt.text = Trim(task_vo.tipContent)
  112. local award_list = task_vo.award_list or {}
  113. for i,v in ipairs(award_list) do
  114. local item = self.award_item_list[i]
  115. if item == nil then
  116. item = AwardItem.New(self.mContent)
  117. item:SetItemSize(80, 80)
  118. self.award_item_list[i] = item
  119. end
  120. item:SetVisible(true)
  121. local goods_id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
  122. item:SetData(goods_id, v[3], nil, nil, lock)
  123. end
  124. self.mContent.sizeDelta = Vector2(#award_list * 85,100)
  125. for i = #award_list + 1, #self.award_item_list do
  126. self.award_item_list[i]:SetVisible(false)
  127. end
  128. if #award_list > 0 then
  129. self.award_title_con:SetActive(true)
  130. else
  131. self.award_title_con:SetActive(false)
  132. end
  133. self:SetOptBtnState(task_vo)
  134. else
  135. self.message_panel:SetActive(false)
  136. self.empty_panel:SetActive(true)
  137. self.empty_tip_txt.text = string.format("暂无%s", TaskModel.TaskTypeStr3[self.task_type])
  138. end
  139. self:SetRoleModel()
  140. else
  141. self.need_refreshData = true
  142. end
  143. end
  144. function TaskSubMainView:SetOptBtnState(taskVO)
  145. if taskVO.isFinish then
  146. self.opt_btn:SetActive(false)
  147. else
  148. self.opt_btn:SetActive(true)
  149. if taskVO.acceptType == 1 then
  150. if taskVO.mainTip then
  151. self.opt_btn_txt.text = "前往日常"
  152. self:ClearEffect()
  153. else
  154. self.opt_btn_txt.text = "领取任务"
  155. --self:AddUIEffect("ui_anniu_1", self.effect, self.layer_name, nil, {x=1.22,y=1.1}, true)
  156. end
  157. else
  158. self.opt_btn_txt.text = "立即前往"
  159. self.opt_btn_bg:SetActive(false)
  160. self:ClearEffect()
  161. --如果是支线已完成的
  162. if self:IsExtendFinish() then
  163. self.opt_btn_txt.text = "领取奖励"
  164. self.opt_btn_bg:SetActive(true)
  165. -- self:AddUIEffect("ui_anniu_1", self.effect, self.layer_name, nil, {x=1.22,y=1.1}, true)
  166. end
  167. end
  168. end
  169. end
  170. function TaskSubMainView:IsExtendFinish( )
  171. if self.model:IsNeedClickTask(self.data) then
  172. --点击判断是否已经完成任务,是的话发协议完成任务
  173. local tip = self.model:GetExtendSpecialTip(self.data)
  174. if tip and tip.isFinish == 1 then
  175. return true
  176. end
  177. end
  178. end
  179. function TaskSubMainView:ClearEffect( )
  180. self:ClearUIEffect(self.effect)
  181. end
  182. function TaskSubMainView:SetRoleModel( force )
  183. if self.is_load_model and not force then
  184. return
  185. end
  186. self.is_load_model = true
  187. local data = RoleManager.Instance.mainRoleInfo
  188. local cloth_id = GetRoleClotheId(data.level_model_list)
  189. local model_id, texture_id = GetRoleClotheTextureId(data.fashion_model_list)
  190. local weapon_model_id, weapon_texture_id = GetWeaponClotheId(data)
  191. local head_model_id, head_clothe_id = GetRoleHeadId(data)
  192. local function call_back()
  193. if self._use_delete_method then return end
  194. end
  195. local data = {
  196. career = data.career,
  197. sex = data.sex,
  198. clothe_res_id = cloth_id,
  199. weapon_res_id = weapon_model_id,
  200. weapon_clothe_id = weapon_texture_id,
  201. type = SceneBaseType.Role,
  202. layer_name = self.layer_name,
  203. fashion_model_id = model_id,
  204. texture_id = texture_id,
  205. image_id = data.image_id,
  206. head_wear_id = head_model_id,
  207. head_clothe_id =head_clothe_id,
  208. layout_file = self.layout_file,
  209. callBack = call_back,
  210. }
  211. lua_resM:SetRoleModel(self,self.roleCon, data)
  212. end
  213. function TaskSubMainView:ReOpen_callback()
  214. if self.is_loaded then
  215. self:SetRoleModel(true)
  216. end
  217. end