TaskSubExtensionView = TaskSubExtensionView or BaseClass(BaseItem) local TaskSubExtensionView = TaskSubExtensionView function TaskSubExtensionView:__init(parent_wnd) self.base_file = "task" self.layout_file = "TaskSubExtensionView" self.model = TaskModel:getInstance() self.layer_name = "UI" self.award_item_list = {} self.last_click_time = 0 self:Load() end function TaskSubExtensionView:__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 = {} if self.verTabBar then self.verTabBar:DeleteMe() end self.verTabBar = nil end function TaskSubExtensionView:Load_callback() 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.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.mContent, self.effect, self.bar_parent = self:GetChildTransforms({ "MessagePanel/ScrollView/Viewport/Content", "MessagePanel/OptBtn/Effect", "Info", }) self:InitEvent() if self.need_refreshData then self:SetData(self.task_type,self.task_id) end end function TaskSubExtensionView:InitEvent() local function onClickHandler(target) if target == self.opt_btn then self:BtnCall() end end AddClickEvent(self.opt_btn,onClickHandler) -- 刷新列表 local function onUpdateView( ) if not self.data then return end local task_id = self.data.id local main_index,sub_index = self:GetTabIndexByTaskId(task_id) if main_index ~= 0 and self.verTabBar then self:CreateNewUICusVerTabBar() self:SeletedTabbar(main_index,sub_index,true) self.verTabBar:SetSelectTab(main_index,sub_index,true) else self:SetData() end end self.task_event_id = self.model:Bind(TaskEvent.TASK_LIST_INIT,onUpdateView) end function TaskSubExtensionView:AutoFindWay() if self.data then self.model:TaskClickFun(self.data) self.model:Fire(TaskEvent.CLOSE_TASK_VIEW) end end function TaskSubExtensionView:GetExtendsionTaskNum() if not self.tab_data then return 0,0 end return #self.tab_data[1].sub_tab,#self.tab_data[2].sub_tab end function TaskSubExtensionView:CreateNewUICusVerTabBar() self.tab_data = self.model:GetExtensionTabData() if not self.verTabBar then self.verTabBar = NewUICusVerTabBar.New(self.bar_parent, Vector2(280, 580), TaskVerTabSubBtn, co.TableXY(274, 70),co.TableXY(140, -103)) end local function select_callback(parent_index,sub_index,data) self:SeletedTabbar(parent_index,sub_index,data) end self.verTabBar:SetTabBars(self.tab_data, select_callback, true, true) end function TaskSubExtensionView:SeletedTabbar(parent_index,sub_index) self.parent_index = parent_index self.sub_index = sub_index if self.verTabBar ~= nil then self.verTabBar:SetTabBarIndex(parent_index,sub_index) self:SwitchBar() end end function TaskSubExtensionView:SwitchBar() local parent_index,sub_index = self.verTabBar:GetCurrentSelectIndex() if parent_index > 0 and sub_index > 0 then local data = self.tab_data[parent_index] if not data then return end data = data.sub_tab[sub_index] if data then self:ShowMessagePanel(true) self:SelectTask(data) end elseif parent_index > 0 then local data = self.tab_data[parent_index] if not data then return end if #data.sub_tab == 0 then self:ShowMessagePanel(false) if self.verTabBar then self.verTabBar:CancelCurrSelect() end if parent_index == 1 then self.empty_tip_txt.text = string.format("暂无已接支线任务") elseif parent_index == 2 then self.empty_tip_txt.text = string.format("暂无可接支线任务") end end end end function TaskSubExtensionView:ShowMessagePanel(bool) if bool then if not self.message_panel.activeSelf then self.message_panel:SetActive(true) end if self.empty_panel.activeSelf then self.empty_panel:SetActive(false) end else if self.message_panel.activeSelf then self.message_panel:SetActive(false) end if not self.empty_panel.activeSelf then self.empty_panel:SetActive(true) end end end function TaskSubExtensionView: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 self:CreateNewUICusVerTabBar() local has_task,main_index,sub_index local receive_num,can_receive_num = self:GetExtendsionTaskNum() if receive_num > 0 then has_task = true main_index = 1 sub_index = 1 elseif can_receive_num > 0 then has_task = true main_index = 2 sub_index = 1 else has_task = false main_index = 1 sub_index = 0 end if self.task_id then local new_main_index,new_sub_index = self:GetTabIndexByTaskId(self.task_id) if new_main_index ~= 0 then main_index = new_main_index sub_index = new_sub_index end self.task_id = false end self:SeletedTabbar(main_index,sub_index,true) self.verTabBar:SetSelectTab(main_index,sub_index,true) else self.need_refreshData = true end end function TaskSubExtensionView:GetTabIndexByTaskId(task_id) if not self.tab_data then return 0,0 end for index,data in ipairs(self.tab_data[1].sub_tab) do if data.id == task_id then return 1,index end end for index,data in ipairs(self.tab_data[2].sub_tab) do if data.id == task_id then return 2,index end end return 0,0 end function TaskSubExtensionView:SelectTask(task_vo) 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) if #award_list > 0 then self.award_title_con:SetActive(true) else self.award_title_con:SetActive(false) end for i = #award_list + 1, #self.award_item_list do self.award_item_list[i]:SetVisible(false) end self:SetOptBtnState(task_vo) end function TaskSubExtensionView: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 TaskSubExtensionView: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 TaskSubExtensionView:ClearEffect( ) self:ClearUIEffect(self.effect) end function TaskSubExtensionView:BtnCall( ) 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