RankTargetView = RankTargetView or BaseClass(BaseView) local RankTargetView = RankTargetView function RankTargetView:__init() self.base_file = "rank" self.layout_file = "RankTargetView" self.layer_name = "Activity" self.destroy_imm = true self.use_background = true self.change_scene_close = true self.hide_maincancas = true --是否隐藏主界面 self.append_to_ctl_queue = false --是否要添加进界面堆栈 self.need_show_money = false --是否要显示顶部的金钱栏 self.click_bg_toClose = true self.is_set_zdepth = true self.blur_activity_bg = true self.model = RankModel:getInstance() self.tab_item_list = {} self.now_select_rank_type = 0 self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:OpenSuccess() end self.close_win_callback = function ( ) self:Close() end self.destroy_callback = function ( ) self:DestroySuccess() end end function RankTargetView:Open(rank_tab_id) self.rank_tab_id = rank_tab_id self.rank_type_list = self.model:GetRankTargetTabListByTabId(self.rank_tab_id) BaseView.Open(self) end function RankTargetView:LoadSuccess() local nodes = { "container", "tabCon", "ScrollView", "ScrollView/Viewport/Content", "empty_add:obj", "empty_add/image:raw", } self:GetChildren(nodes) self.tabWindowComponent = UITabWindow.New(self.transform, nil, nil, self.close_win_callback, self.background_wnd, self.container,UITabWindow.SizeSmallNoTab,nil,nil,nil) self.tabWindowComponent:SetBackgroundRes("rank_target_bg") self.tabWindowComponent:SetTitleText("排行榜目标奖励") lua_resM:setOutsideRawImage(self, self.image_raw, GameResPath.GetViewBigBg("com_empty_bg1")) end function RankTargetView:AddEvent() local function update_target_view(rank_type) if self.is_loaded and self.now_select_rank_type == rank_type then self:UpdateTargetItem(rank_type,true) end end self:BindEvent(self.model,RankModel.UPDATE_RANK_TARGET_VIEW,update_target_view) end function RankTargetView:OpenSuccess() self:UpdateTabList() end function RankTargetView:UpdateTabList( ) local function tab_click_back(rank_type,is_history) self.now_select_rank_type = rank_type for k,v in pairs(self.tab_item_list) do v:SetSelect(rank_type) end if not is_history then self:UpdateTargetItem(rank_type) else self:UpdateHistoryList(rank_type) end end for k,v in pairs(self.tab_item_list) do v:SetVisible(false) end for i,v in ipairs(self.rank_type_list) do local item = self.tab_item_list[i] if not item then item = RankTargetTabItem.New(self.tabCon) self.tab_item_list[i] = item end item:SetVisible(true) item:SetData(v.rank_type, tab_click_back, v.is_history) item:SetAnchoredPosition(126*(i-1)+1,-0.5) end local jump_to_rank_type = self.rank_type_list[1].rank_type for i,v in ipairs(self.rank_type_list) do local red = self.model:IsRankTypeNeedRed(rank_type) if red then jump_to_rank_type = v.rank_type break end end tab_click_back(jump_to_rank_type) end --allow_change_to_next_tab:是否允许在领取完当前页时,跳转到下一个可领奖励的页签 function RankTargetView:UpdateTargetItem(rank_type,allow_change_to_next_tab) local target_cfg = DeepCopy(self.model:GetRankTargetCfgByType(rank_type)) --排序 0|不可领 1|可领取 2|已领完 local target_server_data = self.model:GetRankTargetData(rank_type) and self.model:GetRankTargetData(rank_type).top_list or {} local have_reward_can_get = false --是否有奖励可以领取 for i,v in ipairs(target_server_data) do if target_cfg[i] then if v.award_state == 0 then target_cfg[i].sort_rank = 2 elseif v.award_state == 1 then have_reward_can_get = true target_cfg[i].sort_rank = 1 elseif v.award_state == 2 then target_cfg[i].sort_rank = 3 end end end if allow_change_to_next_tab and not have_reward_can_get then--没有奖励领取时,跳到下一个页签去 local jump_to_rank_type = 0 for i,v in ipairs(self.rank_type_list) do local red = self.model:IsRankTypeNeedRed(v.rank_type) if red then jump_to_rank_type = v.rank_type break end end local function tab_click_back(rank_type) self.now_select_rank_type = rank_type for k,v in pairs(self.tab_item_list) do v:SetSelect(rank_type) end self:UpdateTargetItem(rank_type) end if jump_to_rank_type ~= 0 then tab_click_back(jump_to_rank_type) return end end local arg = {"sort_rank","index"} local condition = {Array.LOWER,Array.LOWER} SortTools.MoreKeysSorter(target_cfg, arg, condition) self:UpdateTargetScrollView(target_cfg,false) end function RankTargetView:UpdateHistoryList(rank_type) local true_rank_type = rank_type/1000 local target_cfg = DeepCopy(self.model:GetRankTargetCfgByType(true_rank_type)) --排序 0|不可领 1|可领取 2|已领完 local hostory_list = {} local target_server_data = self.model:GetRankTargetData(true_rank_type) and self.model:GetRankTargetData(true_rank_type).top_list or {} for i,v in ipairs(target_server_data) do if target_cfg[i] then if v.award_state ~= 0 and target_cfg[i].index == v.target then table.insert(hostory_list,target_cfg[i]) end end end local arg = {"index"} local condition = {Array.UPPER} SortTools.MoreKeysSorter(hostory_list, arg, condition) self:UpdateTargetScrollView(hostory_list,true) end function RankTargetView:UpdateTargetScrollView(data,is_history) if not self.item_list_com then self.item_list_com = self:AddUIComponent(UI.ItemListCreator) end self.item_list_com:Reset() local info = { data_list = data, item_con = self.Content, item_class = RankTargetItem, item_width = 899, item_height = 137, space_y = 3, start_x = 5, start_y = -5, -- create_frequency = 0.01, scroll_view = self.ScrollView, on_update_item = function(item, i, v) item:SetData(v,i,is_history) end, } self.item_list_com:UpdateItems(info) self.empty_add_obj:SetActive(#data==0) end function RankTargetView:UpdateRed( ) end function RankTargetView:DestroySuccess( ) if self.tabWindowComponent then self.tabWindowComponent:DeleteMe() end self.tabWindowComponent = nil for i, v in ipairs(self.tab_item_list) do v:DeleteMe() end self.tab_item_list = {} end