GuildWarRankView = GuildWarRankView or BaseClass(BaseView) local GuildWarRankView = GuildWarRankView GuildWarRankView.TAB_ID = { PERSON = 1, GUILD = 2, KILL = 3, } GuildWarRankView.TAB_TITLE = { [1] = { [1] = "排名", [2] = "玩家名称", [3] = "积分", [4] = "奖励", }, [2] = { [1] = "排名", [2] = "社团名称", [3] = "积分", [4] = "奖励", }, [3] = { [1] = "排名", [2] = "玩家名称", [3] = "击杀", [4] = "奖励", }, } function GuildWarRankView:__init() self.base_file = "guild" self.layout_file = "GuildWarRankView" self.layer_name = "UI" self.model = GuildModel:getInstance() self.destroy_imm = true self.use_background = true self.hide_clear_role_model = false self.change_scene_close = true self.append_to_ctl_queue = false self.is_set_zdepth = true self.rank_data = false self.my_rank_data = false self.my_rank_item = false self.blur_activity_bg = true self.use_show_anim = true self.use_hide_anim = true self.loop_mgr = LoopScrowViewMgr.New() self.item_list = {} self.title_list = {} self.tab_id = nil self.load_callback = function () self:LoadSuccess() self:InitEvent() end self.open_callback = function () self:InitView() end self.close_callback = function () self:Remove() end end function GuildWarRankView:Remove() if self.loop_mgr then self.loop_mgr:DeleteMe() self.loop_mgr = nil end if self.my_rank_item then self.my_rank_item:DeleteMe() self.my_rank_item = nil end for i,item in pairs(self.item_list) do item:DeleteMe() end self.item_list = {} if self.tabWindowComponent then self.tabWindowComponent:DeleteMe() self.tabWindowComponent = nil end end function GuildWarRankView:InitView() for k = 1,10 do local item = self.item_list[k] if item == nil then item = GuildWarRankItem.New(self.con,nil,self.maskID) self.item_list[k] = item end end self:SwitchTab(GuildWarRankView.TAB_ID.PERSON) end function GuildWarRankView:LoadSuccess() local nodes = { "contain/tips_1:tmp", "contain/close:obj", "contain/ScrollView/Viewport/con", "contain/ScrollView", "contain/bg1:raw", "contain/title_text:tmp", "contain/my_con", } self:GetChildren(nodes) self.tab_btn = {} for i=1,3 do self.tab_btn[i] = {} self.tab_btn[i].obj = self:GetChild("contain/btn_" .. i).gameObject self.tab_btn[i].select = self:GetChild("contain/btn_" .. i.."/select").gameObject self.tab_btn[i].text = self:GetChild("contain/btn_" .. i.."/name"):GetComponent("TMPro.TextMeshProUGUI") end self.title_list = {} for i=1,4 do self.title_list[i] = {} self.title_list[i].text = self:GetChild("contain/line/title_" .. i):GetComponent("TMPro.TextMeshProUGUI") end local closeWin_callback = function() self:Close() end self.title_text_tmp.text = "战场排行" self.tabWindowComponent = UITabWindow.New(self.transform,{},nil,closeWin_callback,self.background_wnd,self.contain, UITabWindow.SizeSmallNoTab, false,nil,true) self.tabWindowComponent:SetTitleText("") lua_resM:setOutsideRawImage(self, self.bg1_raw, GameResPath.GetViewBigBg("guild_event_war_bg2"), false) end function GuildWarRankView:InitEvent() local function onBtnClickHandler(target) if target == self.close_obj then self:Close() else for i=1,3 do if target == self.tab_btn[i].obj then self:SwitchTab(i) break end end end end AddClickEvent(self.close_obj,onBtnClickHandler) for i=1,3 do AddClickEvent(self.tab_btn[i].obj, onBtnClickHandler) end --更新排行榜 local function onUpdateRankList( ) self:UpdateRankList() end self:BindEvent(self.model, GuildModel.GUILD_WAR_RANK_LIST, onUpdateRankList) end function GuildWarRankView:SetMyInfo() end function GuildWarRankView:UpdateRankList(is_top) self.rank_data, self.my_rank_data = self.model:GetRankData(self.tab_id) self.rank_num_list = self.model:GuildWarGetRankNumByType(self.tab_id) if is_top then self.loop_mgr:Init(self.ScrollView,self.con,1,810,90,function(item,index,realIndex ) self:OnInitializeItem(item,index,realIndex) end, 0, 0,{x =0, y=-5}) self.loop_mgr:InitChildren(self.item_list, #self.rank_num_list) self.loop_mgr:RestToBeginning() self.loop_mgr:SetContentSizeData() else self.loop_mgr:InitChildren(self.item_list, #self.rank_num_list) self.loop_mgr:ForceUpdateCurrentItems() self.loop_mgr:SetContentSizeData() end self:UpdateMyInfo() end function GuildWarRankView:OnInitializeItem(item,index,realIndex) if item and realIndex > 0 and realIndex <= #self.rank_num_list then item:SetData(self.rank_data[realIndex], realIndex, self.tab_id) end end function GuildWarRankView:SwitchTab(tab_id) if tab_id ~= self.tab_id then self.tab_id = tab_id for i=1,3 do self.tab_btn[i].select:SetActive(i == self.tab_id) self.tab_btn[i].select:SetActive(i == self.tab_id) end self.tab_btn[1].text.text = HtmlColorTxt("个人榜", tab_id == GuildWarRankView.TAB_ID.PERSON and "#ffffff" or "#7d91ac") self.tab_btn[2].text.text = HtmlColorTxt("社团榜", tab_id == GuildWarRankView.TAB_ID.GUILD and "#ffffff" or "#7d91ac") self.tab_btn[3].text.text = HtmlColorTxt("击杀榜", tab_id == GuildWarRankView.TAB_ID.KILL and "#ffffff" or "#7d91ac") SetTMPSharedMaterial(self.tab_btn[1].text, tab_id == GuildWarRankView.TAB_ID.PERSON and ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab or ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault) SetTMPSharedMaterial(self.tab_btn[2].text, tab_id == GuildWarRankView.TAB_ID.GUILD and ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab or ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault) SetTMPSharedMaterial(self.tab_btn[3].text, tab_id == GuildWarRankView.TAB_ID.KILL and ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab or ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault) self:UpdateRankList(true) local title_info = GuildWarRankView.TAB_TITLE[self.tab_id] for i,v in ipairs(self.title_list) do v.text.text = title_info[i] end end end function GuildWarRankView:UpdateMyInfo() local d = self.my_rank_data or {} if not self.my_rank_item then self.my_rank_item = GuildWarRankItem.New(self.my_con) self.my_rank_item:HideBg(true) end self.my_rank_item:SetData(d, d.my_rank, self.tab_id) end