EquipExamTaskView = EquipExamTaskView or BaseClass(BaseItem) local EquipExamTaskView = EquipExamTaskView local table_insert = table.insert function EquipExamTaskView:__init() self.base_file = "equipCollect" self.layout_file = "EquipExamTaskView" self.model = EquipCollectModel:GetInstance() self.tab_item = {} self.cur_select_index = 1 self:Load() end function EquipExamTaskView:Load_callback() self.nodes = { "tab_con", "item_scroll", "item_scroll/Viewport/item_con", "role_bg:raw", "bg:raw", } self:GetChildren(self.nodes) lua_resM:setOutsideRawImage(self,self.role_bg_raw,GameResPath.GetRoleBg("equipexm_task_456_573")) lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("equipExam_task_bg"),false) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function EquipExamTaskView:AddEvents( ) local function on_update_item( ) self:UpdateItem() end self.on_update_item_id = self.model:BindOne("equip_exam_task_info", on_update_item) end function EquipExamTaskView:UpdateView( ) self:SetTabData() self:SwitchTab(self.cur_select_index) end function EquipExamTaskView:SetTabData( ) local data = self.model:GetEquipExmTaskCFG() local x_offset = 124 local function on_click( index ) self:SwitchTab(index) end for i,v in ipairs(data) do local item = self.tab_item[i] if not item then item = EquipExamTaskTabItem.New(self.tab_con) item:SetCallBackFunc(on_click) item:SetPosition((i-1) * x_offset, 0) self.tab_item[i] = item end item:SetData(v,i) end end function EquipExamTaskView:UpdateItem( ) local data = {} local cfg = self.model:GetEquipExmTaskCFG(self.cur_select_index) local server_data = self.model:GetEquipCollectTaskInfo() for i,v in ipairs(cfg) do local is_not_open = false local condition_data = stringtotable(v.condition) if TableSize(condition_data) > 0 then for i,v in ipairs(condition_data) do if v[1] == "lv" then is_not_open = RoleManager.Instance.mainRoleInfo.level < v[2] - 100 elseif v[1] == "turn" then is_not_open = RoleManager.Instance.mainRoleInfo.turn < v[2] - 1 end end else is_not_open = false end if not is_not_open then table_insert(data, v) end end for i,v in ipairs(data) do if server_data[v.task_id] then if server_data[v.task_id].status == 1 then--可领 v.sort = 3 elseif server_data[v.task_id].status == 0 then--不可领 v.sort = 1 elseif server_data[v.task_id].status == 2 then--已领 v.sort = 0 end else--没数据就是没完成 v.sort = 1 end end local sort_func = function ( a, b ) if a.sort == b.sort then return a.task_id < b.task_id else return a.sort > b.sort end end table.sort(data, sort_func) self.task_creator = self.task_creator or self:AddUIComponent(UI.ItemListCreator) self.task_creator:Reset() local tag_all_info = { data_list = data, item_con = self.item_con, item_class = EquipExamTaskItem, item_height = 126, start_x = 0, start_y = 0, space_y = 2, scroll_view = self.item_scroll, -- create_frequency = 0.01, reuse_item_num = 6, on_update_item = function(item, i, v) item:SetData(v, i, server_data[v.task_id]) end, } self.task_creator:UpdateItems(tag_all_info) end function EquipExamTaskView:SwitchTab( index ) self.cur_select_index = index for i,v in ipairs(self.tab_item) do v:SetSelect(i==index) end self:UpdateItem() end function EquipExamTaskView:SetData( data ) self.data = data if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function EquipExamTaskView:__delete( ) for i,v in ipairs(self.tab_item) do v:DeleteMe() v = nil end self.tab_item = {} if self.on_update_item_id then self.model:UnBind(self.on_update_item_id) self.on_update_item_id = nil end end