EquipCollectSubView = EquipCollectSubView or BaseClass(BaseItem) local EquipCollectSubView = EquipCollectSubView function EquipCollectSubView:__init() self.base_file = "equipCollect" self.layout_file = "EquipCollectSubView" self.model = EquipCollectModel:GetInstance() self.is_first = true self.id, self.sub_id = self.model:GetEquipCollectJumpId() self:Load() end function EquipCollectSubView:Load_callback() self.nodes = { "right_scroll", "left_scroll:obj", "left_scroll/Viewport/left_con", "right_scroll/Viewport/right_con", "tips_text:tmp:obj", "bg:raw", "arrow:obj" } self:GetChildren(self.nodes) self.left_scroll_rect = self.left_scroll:GetComponent("ScrollRect") self:AddEvents() lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("euqip_collect_sub_bg"),false) if self.need_refreshData then self:UpdateView() end end function EquipCollectSubView:AddEvents( ) local function on_update( ... ) self:UpdateView() end self:BindEvent(self.model,EquipCollectConst.ANS_EQUIP_COLLECT_INFO,on_update) end function EquipCollectSubView:UpdateView( ) self:UpdateLeftItem() self:UpdateRightItem() end function EquipCollectSubView:UpdateLeftItem( ) self.tab_cfg = self.model:GetEquipCollectCFG() self.tab_creator = self.tab_creator or self:AddUIComponent(UI.ItemListCreator) self.tab_data = self.tab_cfg self.cur_select_data = self.tab_cfg[self.id] local call_back = function(data, id, sub_id) self.show_first_effect = nil--切页签关掉特效 self.id = id self:UpdateLeftItem() self:UpdateSelectVer() end local function final_callback( ) if self.is_first then self.cur_select_data = self.model:GetEquipCollectCFG(self.id) if self.id > 3 then self:UpdateSelectVer(true) else self:UpdateSelectVer() end self.is_first = false end end local function on_scroll( ... ) if self.left_scroll_rect.verticalNormalizedPosition <= 0 then self.arrow_obj:SetActive(false) else self.arrow_obj:SetActive(true) end end local tag_all_info = { data_list = self.tab_data, item_con = self.left_con, item_class = EquipCollectLeftItem, item_height = 127, start_x = 2, start_y = 0, space_y = 0, scroll_view = self.left_scroll, on_scroll = on_scroll, create_frequency = 0.01, final_callback = final_callback, on_update_item = function(item, i, v) item:SetData(v, self.id, self.model:GetFirstSubId(i)) item:SetCallBackFunc(call_back) end, } self.tab_creator:UpdateItems(tag_all_info) end --设置垂直tab选择 function EquipCollectSubView:UpdateSelectVer( need_refresh ) self.tab_creator:IterateItems(function(item, i, v) item:SetSelect(self.id, self.sub_id) end) if need_refresh then self:ScrollToSelectItem() end self:UpdateRightItem() end function EquipCollectSubView:UpdateRightItem( ) self.right_creator = self.right_creator or self:AddUIComponent(UI.ItemListCreator) local data = {} local sort_index = 0 for k,v in pairsByKeys(self.cur_select_data) do table.insert(data,v) sort_index = sort_index + 1 v.sort_index = sort_index end local sort_func = function ( a, b ) local is_all_collect_a = self.model:CheckIsAllEquipCollected(a[1].id, a[1].sub_id) local is_all_collect_b = self.model:CheckIsAllEquipCollected(b[1].id, b[1].sub_id) if is_all_collect_a and not is_all_collect_b then return false elseif is_all_collect_b and not is_all_collect_a then return true else return a.sort_index < b.sort_index end end table.sort(data, sort_func) local tag_all_info = { data_list = data, item_con = self.right_con, item_class = EquipCollectRightItem, item_height = 138, start_x = 2, start_y = -2, space_y = 10, scroll_view = self.left_scroll, -- create_frequency = 0.01, on_update_item = function(item, i, v) item:SetData(v, self.id, self.model:GetFirstSubId(i), i, self.show_first_effect) end, } self.right_creator:UpdateItems(tag_all_info) if self.sub_id == 4 then self.right_creator:ScrollToItem(2) end end function EquipCollectSubView:ScrollToSelectItem( ) for i,v in ipairs(self.tab_data) do if i == self.id then self.tab_creator:ScrollToItem(i) end end end function EquipCollectSubView:SetData( id, sub_id, show_first_effect) self.id = id or self.id self.sub_id = sub_id or self.sub_id self.show_first_effect = show_first_effect if id == 1 and sub_id == 1 then self.need_do_task = true end if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function EquipCollectSubView:__delete( ) if self.need_do_task then GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK, true, true) end end