CSMainExploitRankView = CSMainExploitRankView or BaseClass(BaseView) local CSMainExploitRankView = CSMainExploitRankView function CSMainExploitRankView:__init() self.base_file = "csMain" self.layout_file = "CSMainExploitRankView" 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.is_set_zdepth = true self.mainVo = RoleManager.Instance.mainRoleInfo self.tab_item_list = {} self.top_item_list = {} self.model = CSMainModel:getInstance() self.current_index = nil self.my_contray_id = KfWorldModel:GetInstance():GetMyCountryId() self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:OpenSuccess() end self.destroy_callback = function ( ) self:DestroySuccess() end end function CSMainExploitRankView:Open(index) self.current_index = index or 1 BaseView.Open(self) end function CSMainExploitRankView:LoadSuccess() local nodes = { "closeBtn:obj", "bg:raw", "tabCon", "topbg:img", "myRankCon:obj", "myRankCon/myRankIcon:img:obj", "myRankCon/mySex:img", "myRankCon/myVipCon", "myRankCon/myRank:tmp", "myRankCon/myName:tmp", "myRankCon/myGuildName:tmp", "myRankCon/myScore:tmp", "rankScrollView", "rankScrollView/Viewport/rankContent", "topCon", "titleCon", "rewardBtn:obj", "rewardBtn/rewardRed:obj", "rankEmpty:obj", "rankEmpty/rankEmptyTalkBg:raw", "myRankCon/myMilitaryRank:img", } self:GetChildren(nodes) lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("cs_main_exploit_bg")) lua_resM:setOutsideRawImage(self, self.rankEmptyTalkBg_raw, GameResPath.GetRoleBg("empty_bg_small")) self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60308) self.myVipItem = RoleVipItem.New(self.myVipCon) end function CSMainExploitRankView:AddEvent() local on_click = function ( click_obj ) if self.closeBtn_obj == click_obj then self:Close() elseif self.rewardBtn_obj == click_obj then self.model:Fire(CSMainConst.OPEN_CS_MAIN_EXPLOIT_RANK_DAILY_REWARD_VIEW) end end AddClickEvent(self.closeBtn_obj, on_click) AddClickEvent(self.rewardBtn_obj, on_click) -- --60308 -- local function on_update_rank_data_extra() -- end -- self:BindEvent(self.model, CSMainConst.UPDATE_EXPLOIT_RANK_DATA_EXTRA, on_update_rank_data_extra) --60307 local function on_update_rank_con(vo) if self.current_contray_index and vo.fact == self.current_contray_index then self:UpdateRankCon(vo) end end self:BindEvent(self.model, CSMainConst.UPDATE_EXPLOIT_RANK_CON, on_update_rank_con) local function update_red_dot(tab_id) if not self.is_loaded then return end if tab_id == CSMainConst.RedType.DailyReward then self:RefreshRed() end end self:BindEvent(self.model, CSMainConst.ANS_UPDATE_RED_DOT, update_red_dot) local function CLICK_GET_WAY_ITEM( ) self:Close() end self:BindEvent(GlobalEventSystem, EventName.CLICK_GET_WAY_ITEM, CLICK_GET_WAY_ITEM) end function CSMainExploitRankView:OpenSuccess() self:InitTab() self:RefreshRed() end function CSMainExploitRankView:RefreshRed( ) local red = self.model:GetDailyRewardRed() self.rewardRed_obj:SetActive(red) end function CSMainExploitRankView:InitTab( ) if not self.my_contray_id then return end local contray_list = KfWorldModel:GetInstance():GetContrayList() local tab_data = {} local first_data = {name = contray_list[self.my_contray_id], contray_id = self.my_contray_id} table.insert(tab_data, first_data) for i,v in ipairs(contray_list) do if i ~= self.my_contray_id then local temp = {name = v, contray_id = i} table.insert(tab_data, temp) end end local function call_back(tab_index,contray_id) self:SwitchTab(tab_index,contray_id) end for k,v in pairs(self.tab_item_list) do v:SetVisible(false) end for i,v in ipairs(tab_data) do local item = self.tab_item_list[i] if not item then item = CSMainExploitRankTab.New(self.tabCon) self.tab_item_list[i] = item end item:SetVisible(true) item:SetData(v,i,call_back) item:SetAnchoredPosition(-2, 41-(i-1)*(74-5)) end for k,v in pairs(self.tab_item_list) do v:OnClick(self.current_index) end end function CSMainExploitRankView:SwitchTab( index,contray_id ) self.current_index = index self.current_contray_index = contray_id self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60307,contray_id) end function CSMainExploitRankView:UpdateRankCon(vo) if not self.my_contray_id then return end local is_my_contray = vo.fact == self.my_contray_id if is_my_contray then SetAnchoredPositionY(self.titleCon,73.5) SetSizeDeltaY(self.rankScrollView,275) SetAnchoredPositionY(self.rankScrollView,-82) lua_resM:setOutsideImageSprite(self, self.png_img, GameResPath.GetCSMainImage("cs_main_top_di_long"),true) else SetAnchoredPositionY(self.titleCon,112) SetSizeDeltaY(self.rankScrollView,305) SetAnchoredPositionY(self.rankScrollView,-58) lua_resM:setOutsideImageSprite(self, self.png_img, GameResPath.GetCSMainImage("cs_main_top_di_short"),true) end --排行榜 local sort_func = function ( a, b ) return a.rank < b.rank end table.sort(vo.ranks, sort_func) local final_rank_list = {} local max_show_ranks = Config.Legionkv["honor_max_rank"].value for i=1,max_show_ranks do if vo.ranks[i] then table.insert(final_rank_list,vo.ranks[i]) end end 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 = final_rank_list, item_con = self.rankContent, item_class = CSMainExploitRankItem, item_width = 900, item_height = 50, -- space_x = 0, -- space_y = 0, start_x = 0, start_y = -0.5, scroll_view = self.rankScrollView, create_frequency = 0.01, on_update_item = function(item, i, v) item:SetData(v,i) end, } self.item_list_com:UpdateItems(info) self.rankEmpty_obj:SetActive(#vo.ranks == 0) --top5 for k,v in pairs(self.top_item_list) do v:SetVisible(false) end for i=1,5 do local top_rank_data = vo.ranks and vo.ranks[i] or nil local item = self.top_item_list[i] if not item then item = CSMainExploitRankTopItem.New(self.topCon) self.top_item_list[i] = item end item:SetData(top_rank_data,i,is_my_contray) item:SetAnchoredPosition(CSMainConst.ExploitTopItemPos[i].main_pos_x, CSMainConst.ExploitTopItemPos[i].main_pos_y) item:SetVisible(true) end --我的排名 if is_my_contray then lua_resM:setOutsideImageSprite(self, self.topbg_img, GameResPath.GetCSMainImage("cs_main_top_di_long"), true) self.myVipItem:SetData(self.mainVo.vip_flag,self.mainVo.sup_vip_type) self.myName_tmp.text = GetCSLongName(self.mainVo.name,self.mainVo.server_num) local sex_res = self.mainVo.sex == 1 and "com_boy" or "com_girl" lua_resM:setImageSprite(self, self.mySex_img, "common_asset", sex_res, true) SetAnchoredPositionX(self.mySex, -288+self.myName_tmp.preferredWidth+15) self.myGuildName_tmp.text = self.mainVo.guild_name ~= "" and self.mainVo.guild_name or "暂无社团" --拿到自己的排名 local my_rank = vo.myrank local my_score = vo.myscore if my_rank == 0 then self.myRankIcon_obj:SetActive(false) self.myRank_tmp.text = "未上榜" elseif my_rank >= 1 and my_rank <= 5 then self.myRankIcon_obj:SetActive(true) self.myRank_tmp.text = "" lua_resM:setImageSprite(self, self.myRankIcon_img, "csMain_asset","cs_main_rank_"..my_rank,true) else self.myRankIcon_obj:SetActive(false) self.myRank_tmp.text = my_rank end self.myRankCon_obj:SetActive(true) self.myScore_tmp.text = my_score lua_resM:setOutsideImageSprite(self, self.myMilitaryRank_img, GameResPath.GetMilitaryImage("military_ranks_"..RoleManager.Instance.mainRoleInfo.military_ranks), true) else lua_resM:setOutsideImageSprite(self, self.topbg_img, GameResPath.GetCSMainImage("cs_main_top_di_short"), true) self.myRankCon_obj:SetActive(false) end end function CSMainExploitRankView:DestroySuccess( ) for i, v in ipairs(self.tab_item_list) do v:DeleteMe() end self.tab_item_list = {} for i, v in ipairs(self.top_item_list) do v:DeleteMe() end self.top_item_list = {} if self.myVipItem then self.myVipItem:DeleteMe() self.myVipItem = nil end end