ReinTaskScrollItem = ReinTaskScrollItem or BaseClass(BaseItem) local ReinTaskScrollItem = ReinTaskScrollItem function ReinTaskScrollItem:__init(parent_wnd,prefab_asset,layer_name) self.base_file = "reincarnation" self.layout_file = "ReinTaskScrollItem" self.parent_wnd = parent_wnd self.layer_name = layer_name self.model = ReincarnationModel:getInstance() self:Load() end function ReinTaskScrollItem:Load_callback() local nodes = { "task_title:obj", "task_title/task_progress:tmp", "task_condition:obj:img", "task_proceed:obj:tmp", "task_req:tmp", "task_finished:tmp", } self:GetChildren(nodes) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function ReinTaskScrollItem:AddEvents( ) local function click_event(target) if target == self.task_proceed_obj then if self.data and self.data.task_data then -- 前往任务 TaskModel:getInstance():TaskClickFun(self.data.task_data) GlobalEventSystem:Fire(EventName.CLOSE_NEW_MAIN_ROLE_VIEW) end end end AddClickEvent(self.task_proceed_obj, click_event) local function onTaskUpdate() -- 只更新当前任务进度 if self.data and self.data.task_data and self.data.task_data.id == self.model:GetCurTaskId() then -- self.model:UpdateCurReinTask() self:UpdateView() end end self:BindEvent(TaskModel:getInstance(), TaskEvent.TASK_LIST_INIT, onTaskUpdate) -- -- 当前查看的转职任务是正在进行中的转职任务时,点击自动进行 -- local function click_event(target) -- if target == self.gotoBtn_obj then -- if self.data and self.data.reward and self.data.auto_find then -- TaskModel:getInstance():TaskClickFun(self.data.reward) -- -- 关闭转生任务界面 -- self.model:Fire(ReincarnationModel.OPEN_REIN_TASK_VIEW, false) -- end -- end -- end -- AddClickEvent(self.gotoBtn_obj, click_event) end function ReinTaskScrollItem:InitItemData( ) self.task_title_obj:SetActive(false) self.task_condition_obj:SetActive(false) self.task_proceed_obj:SetActive(false) self.task_proceed_tmp.text = "前往" self.task_req_tmp.text = "" self.task_finished_tmp.text = "" end function ReinTaskScrollItem:SetData( data, stage,total_stage) self.data = data self.stage = stage self.total_stage = total_stage local height = 0 if self.is_loaded then self.need_refreshData = false height = self:UpdateView() else self.need_refreshData = true end return height end function ReinTaskScrollItem:UpdateView( ) local height = 0 self:InitItemData() if self.data.title then -- 任务进度标题 self.task_title_obj:SetActive(true) self.task_progress_tmp.text = self.data.title height = 32 elseif self.data.task_data then -- 有任务阶段数据 -- 任务内容不能直接用原先的tipContent,需要特殊处理 local strs = "" -- print("Saber:ReinTaskScrollItem [92] self.data.task_data.taskTips[1].type: ",self.data.task_data.taskTips[1].type) -- print("Saber:ReinTaskScrollItem [start:93] self.data.task_data.taskTips[1] ------------------------------------------") -- PrintTable(self.data.task_data.taskTips[1]) local cfg = Config.ConfigTaskEffect.ContentTip[self.data.task_data.taskTips[1].type] if cfg then if self.data.task_data.taskTips[1].type == TaskTipType.TYPE1 then -- 杀怪任务重新构建内容 local temp = ConfigItemMgr.Instance:GetMonsterDataItem(self.data.task_data.taskTips[1].id) if temp then cfg = string.gsub(cfg, "<", " <") strs = string.format(cfg, Trim(temp.name)) end --显示数量 if Config.ConfigTaskEffect.NeedShowNumTaskType[self.data.task_data.taskTips[1].type] or Config.ConfigTaskEffect.NeedShowNumTaskId[self.data.task_data.id] then strs = strs .. "("..HtmlColorTxt(self.data.task_data.taskTips[1].nowCount, "#2CF66F").."/"..self.data.task_data.taskTips[1].count..")" end elseif self.data.task_data.taskTips[1].type == TaskTipType.TYPE2 then-- 完成副本的要重新构建内容 strs = string.gsub(self.data.task_data.tipContent, "<", " <") elseif self.data.task_data.taskTips[1].type == TaskTipType.TYPE7 then -- 对话NPC的要重新构建内容 strs = string.gsub(self.data.task_data.tipContent, "<", " <") strs = string.gsub(strs, ">", "> ") end end if strs == "" then -- 没有自定义出内容的话,则使用原先任务的内容 strs = self.data.task_data.tipContent end self.task_req_tmp.text = strs local is_task_finished = self.data.task_data.taskTips[1] and self.data.task_data.taskTips[1].isFinish == 1 and true or false self.task_proceed_obj:SetActive(not is_task_finished) self.task_condition_obj:SetActive(is_task_finished) if is_task_finished then lua_resM:setImageSprite(self, self.task_condition_img, "reincarnation_asset", "rein_preview_finished", true) end -- 一次只会出现两个节点,需要根据不同情况做剧中对齐 local len1 = self.task_req_tmp.preferredWidth + 10 local len2 = not is_task_finished and self.task_proceed_tmp.preferredWidth or 0 local len3 = is_task_finished and self.task_condition.sizeDelta.x or 0 local offset_x = (352 - len1 - len2 - len3) / 2 SetAnchoredPositionX(self.task_req, offset_x) SetAnchoredPositionX(self.task_proceed, self.task_req.anchoredPosition.x + len1) SetAnchoredPositionX(self.task_condition, self.task_req.anchoredPosition.x + len1) height = self.task_req_tmp.preferredHeight + 12 elseif self.data.content then -- 直接显示文本 self.task_finished_tmp.text = self.data.content height = 30 elseif self.data.finish_content then -- 任务已经完成,显示进度文本并打勾 self.task_req_tmp.text = self.data.finish_content self.task_condition_obj:SetActive(true) lua_resM:setImageSprite(self, self.task_condition_img, "reincarnation_asset", "rein_preview_finished", true) local len1 = self.task_req_tmp.preferredWidth + 10 local len2 = self.task_condition.sizeDelta.x local offset_x = (352 - len1 - len2) / 2 SetAnchoredPositionX(self.task_req, offset_x) SetAnchoredPositionX(self.task_condition, self.task_req.anchoredPosition.x + len1) height = self.task_req_tmp.preferredHeight + 12 end return height end function ReinTaskScrollItem:__delete( ) end