TaskSubMainView = TaskSubMainView or BaseClass(BaseItem) local TaskSubMainView = TaskSubMainView function TaskSubMainView:__init(parent_wnd) self.base_file = "task" self.layout_file = "TaskSubMainView" self.model = TaskModel:getInstance() self.layer_name = "UI" self.award_item_list = {} self.last_click_time = 0 --self.use_local_view = true self:Load() end function TaskSubMainView:__delete() if self.task_event_id then self.model:UnBind(self.task_event_id) self.task_event_id = nil end for i,item in pairs(self.award_item_list) do item:DeleteMe() end self.award_item_list = {} end function TaskSubMainView:Load_callback() self.message_panel, self.empty_panel, self.opt_btn, self.opt_btn_bg, self.award_title_con = self:GetChildGameObjects({ "MessagePanel", "EmptyPanel", "MessagePanel/OptBtn", "MessagePanel/OptBtn/Bg", "MessagePanel/3" }) self.cdn_img = self:GetChildImages({ "CdnImage", }) self.title_txt, self.task_desc_txt, self.task_tip_txt, self.opt_btn_txt, self.empty_tip_txt = self:GetChildTexts({ "MessagePanel/Title/Text", "MessagePanel/TaskDesc", "MessagePanel/TaskTip", "MessagePanel/OptBtn/Text", "EmptyPanel/EmptyTip" }) self.mContent, self.effect, self.roleCon = self:GetChildTransforms({ "MessagePanel/ScrollView/Viewport/Content", "MessagePanel/OptBtn/Effect", "roleCon" }) lua_resM:setOutsideImageSprite(self,self.cdn_img,GameResPath.GetJpgImage("zxui_bg.jpg")) self:InitEvent() if self.need_refreshData then self:SetData(self.task_type,self.task_id) end end function TaskSubMainView:InitEvent() local function onClickHandler(target) if target == self.opt_btn then if not self.data then return end if Status.NowTime - self.last_click_time < 1 then return end self.last_click_time = Status.NowTime if self.data.mainTip then GlobalEventSystem:Fire(EventName.OPEN_DAILY_VIEW) self.model:Fire(TaskEvent.CLOSE_TASK_VIEW) else if self:IsExtendFinish() then GlobalEventSystem:Fire(TaskEventType.SEND_TASK_FINISH, self.data.id) else self:AutoFindWay() end end end end AddClickEvent(self.opt_btn,onClickHandler) -- 刷新列表 local function onUpdateView( ) self:SetData() end self.task_event_id = self.model:Bind(TaskEvent.TASK_LIST_INIT,onUpdateView) end function TaskSubMainView:AutoFindWay() if self.data then self.model:TaskClickFun(self.data) self.model:Fire(TaskEvent.CLOSE_TASK_VIEW) end end function TaskSubMainView:SetData(task_type,task_id) self.task_type = task_type or self.task_type self.task_id = task_id or self.task_id if self.is_loaded then self.need_refreshData = false local task_list = self.model:GetTabData(self.task_type) if task_list and #task_list > 0 then self.message_panel:SetActive(true) self.empty_panel:SetActive(false) local task_vo = task_list[1] self.data = task_vo self.model:MakeTaskTip(task_vo) self.title_txt.text = Trim(task_vo.taskName) self.task_desc_txt.text = Trim(task_vo.description) self.task_tip_txt.text = Trim(task_vo.tipContent) local award_list = task_vo.award_list or {} for i,v in ipairs(award_list) do local item = self.award_item_list[i] if item == nil then item = AwardItem.New(self.mContent) item:SetItemSize(80, 80) self.award_item_list[i] = item end item:SetVisible(true) local goods_id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2]) item:SetData(goods_id, v[3], nil, nil, lock) end self.mContent.sizeDelta = Vector2(#award_list * 85,100) for i = #award_list + 1, #self.award_item_list do self.award_item_list[i]:SetVisible(false) end if #award_list > 0 then self.award_title_con:SetActive(true) else self.award_title_con:SetActive(false) end self:SetOptBtnState(task_vo) else self.message_panel:SetActive(false) self.empty_panel:SetActive(true) self.empty_tip_txt.text = string.format("暂无%s", TaskModel.TaskTypeStr3[self.task_type]) end self:SetRoleModel() else self.need_refreshData = true end end function TaskSubMainView:SetOptBtnState(taskVO) if taskVO.isFinish then self.opt_btn:SetActive(false) else self.opt_btn:SetActive(true) if taskVO.acceptType == 1 then if taskVO.mainTip then self.opt_btn_txt.text = "前往日常" self:ClearEffect() else self.opt_btn_txt.text = "领取任务" --self:AddUIEffect("ui_anniu_1", self.effect, self.layer_name, nil, {x=1.22,y=1.1}, true) end else self.opt_btn_txt.text = "立即前往" self.opt_btn_bg:SetActive(false) self:ClearEffect() --如果是支线已完成的 if self:IsExtendFinish() then self.opt_btn_txt.text = "领取奖励" self.opt_btn_bg:SetActive(true) -- self:AddUIEffect("ui_anniu_1", self.effect, self.layer_name, nil, {x=1.22,y=1.1}, true) end end end end function TaskSubMainView:IsExtendFinish( ) if self.model:IsNeedClickTask(self.data) then --点击判断是否已经完成任务,是的话发协议完成任务 local tip = self.model:GetExtendSpecialTip(self.data) if tip and tip.isFinish == 1 then return true end end end function TaskSubMainView:ClearEffect( ) self:ClearUIEffect(self.effect) end function TaskSubMainView:SetRoleModel( force ) if self.is_load_model and not force then return end self.is_load_model = true local data = RoleManager.Instance.mainRoleInfo local cloth_id = GetRoleClotheId(data.level_model_list) local model_id, texture_id = GetRoleClotheTextureId(data.fashion_model_list) local weapon_model_id, weapon_texture_id = GetWeaponClotheId(data) local head_model_id, head_clothe_id = GetRoleHeadId(data) local function call_back() if self._use_delete_method then return end end local data = { career = data.career, sex = data.sex, clothe_res_id = cloth_id, weapon_res_id = weapon_model_id, weapon_clothe_id = weapon_texture_id, type = SceneBaseType.Role, layer_name = self.layer_name, fashion_model_id = model_id, texture_id = texture_id, image_id = data.image_id, head_wear_id = head_model_id, head_clothe_id =head_clothe_id, layout_file = self.layout_file, callBack = call_back, } lua_resM:SetRoleModel(self,self.roleCon, data) end function TaskSubMainView:ReOpen_callback() if self.is_loaded then self:SetRoleModel(true) end end