require("Base/BasePanel") RankingListMainPanel = Inherit(BasePanel) local this = RankingListMainPanel local curIndex = 1 local rankKingListGo = {} local TabBox = require("Modules/Common/TabBox") local _TabData = { [1] = { default = "N1_btn_tanke_xuanzhong", select = "N1_btn_tanke_xuanzhong",lock = "N1_btn_tanke_weixuanzhong", name = GetLanguageStrById(11707) }, [2] = { default = "N1_btn_tanke_xuanzhong", select = "N1_btn_tanke_xuanzhong",lock = "N1_btn_tanke_weixuanzhong", name = GetLanguageStrById(11708) }, } local _TabFontColor = { default = Color.New(130 / 255, 128 / 255, 120 / 255, 1), select = Color.New(243 / 255, 235 / 255, 202 / 255, 1), lock = Color.New(130 / 255, 128 / 255, 120 / 255, 1), } local ranks = {} local proud = {} this.playerScrollHead = {}--排行第一头像 local isFirstOn = true--是否首次打开页面 this.playerHeroListHead={} this.playerHeroListGo={} --初始化组件(用于子类重写) function RankingListMainPanel:InitComponent() this.tabBox = Util.GetGameObject(self.gameObject, "TabBox") this.TabCtrl = TabBox.New() this.BackBtn = Util.GetGameObject(self.gameObject, "btnBack") this.ItemPre = Util.GetGameObject(self.gameObject, "bg/panel/ItemPre") this.grid = Util.GetGameObject(self.gameObject, "bg/panel/ScrollParentView/grid") this.mask = Util.GetGameObject(self.gameObject, "mask") this.playerHeroListHead={} this.playerHeroListGo={} --初始化排行奖励信息 -- RankingManager.InitRankingRewardList() end --绑定事件(用于子类重写) function RankingListMainPanel:BindEvent() Util.AddClick(this.BackBtn, function() self:ClosePanel() end) Util.AddClick(this.mask, function() self:ClosePanel() end) end --添加事件监听(用于子类重写) function RankingListMainPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.HorseRace.ShowHorseRace, RankingManager.RefreshInfo, nil) Game.GlobalEvent:AddEvent(GameEvent.HorseRace.ShowHorseRace,this.SwitchView, self) end --移除事件监听(用于子类重写) function RankingListMainPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.HorseRace.ShowHorseRace, RankingManager.RefreshInfo, nil) Game.GlobalEvent:RemoveEvent(GameEvent.HorseRace.ShowHorseRace,this.SwitchView, self) end --界面打开时调用(用于子类重写) function RankingListMainPanel:OnOpen(msg) ranks = msg.ranks RankingManager.RefreshInfo() end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function RankingListMainPanel:OnShow() if PlayerManager.familyId ~= 0 then NetManager.RequestMyGuildInfo( function() end) --工会战信息获取 end Game.GlobalEvent:DispatchEvent(GameEvent.MianGuide.RefreshGuide) this.TabCtrl:SetTabAdapter(this.TabAdapter) this.TabCtrl:SetChangeTabCallBack(this.SwitchView) this.TabCtrl:SetTabIsLockCheck(this.PageTabIsLockCheck) this.TabCtrl:Init(this.tabBox, _TabData, curIndex) end -- tab节点显示自定义 function this.TabAdapter(tab, index, status) local tabLab = Util.GetGameObject(tab, "Text") Util.GetGameObject(tab,"Image"):GetComponent("Image").sprite = Util.LoadSprite(_TabData[index][status]) tabLab:GetComponent("Text").text = _TabData[index].name tabLab:GetComponent("Text").color = _TabFontColor[status] Util.GetGameObject(tab, "LockImage"):SetActive(status == "lock" ) end -- tab可用性检测 function this.PageTabIsLockCheck(index) if index == 2 then return true, GetLanguageStrById(11709) else return false end end --切换视图 function this.SwitchView(index) curIndex = index proud = RankingManager.GetRankProud() --先执行上一面板关闭逻辑 local rankList = {} -- to do math.max(#rankKingListGo, #RankKingList) -- LogError(" "..#RankKingList.."add "..math.max(#rankKingListGo, #RankKingList)) for i = 1, math.max(#rankKingListGo, #RankKingList) do if RankKingList[i].isRankingMainPanelShow then local go = rankKingListGo[i] if not go then go = newObject(this.ItemPre) go.transform:SetParent(this.grid.transform) go.transform.localScale = Vector3.one go.transform.localPosition = Vector3.zero; rankKingListGo[i] = go end if isFirstOn then go.gameObject:SetActive(false) end rankList[i] = go end end -- rankList[5]=rankList[9] 1 2 3 4 9 local openlen=1 for i = 1, #RankKingList do if RankKingList[i].isRankingMainPanelShow then this.SingleRankKingListShow(i,openlen) openlen=openlen+1 end end if isFirstOn then isFirstOn = false -- to do 解决id跳跃问题 5 6 7 -- rankList[5]=rankList[9] 1 2 3 4 7 9 13 local index =1 local _ranklist={} for k,v in pairs(rankList) do if k==index then _ranklist[k]=v else _ranklist[index]=rankList[k] end index=index+1 end DelayCreation(_ranklist) end end function this.SingleRankKingListShow(index,openlen) local go = rankKingListGo[index] local sData = RankKingList[index] local dData = ranks[openlen] local proud = proud[sData.rankType] local boxred= RankingManager.IsRankingTopRed(sData.rankType) -- to do 测试数据 Util.GetGameObject(go,"BG"):GetComponent("Image").sprite = Util.LoadSprite(sData.bgImage) -- Util.GetGameObject(go,"nameImage"):GetComponent("Image").sprite = Util.LoadSprite(sData.nameImage) Util.GetGameObject(go,"name"):GetComponent("Text").text = sData.name Util.GetGameObject(go,"hero"):SetActive(dData.uid ~= 0 ) if dData.uid ~= 0 then this.SetInfoShow(Util.GetGameObject(go,"hero/infoGo"),dData,sData.rankType,Util.GetGameObject(go,"hero/nameText")) --头像 local headObj=Util.GetGameObject(go,"hero/Head") local heroheadObj =Util.GetGameObject(go,"hero/HeroHead") if sData.rankType==RANK_TYPE.HERO_FORCE_RANK then headObj:SetActive(false) heroheadObj:SetActive(true) if not this.playerHeroListHead[index] then this.playerHeroListHead[index]=SubUIManager.Open(SubUIConfig.ItemView,heroheadObj.transform) end this.playerHeroListHead[index]:OnOpen(false,{dData.heroTemplateId,dData.heroLevel,dData.heroStar,nil,dData.userName},0.8,false,false,false,false) this.playerHeroListHead[index].gameObject:GetComponent("RectTransform").anchoredPosition=Vector3.New(0,-10,0) this.playerHeroListGo[index]=this.playerHeroListHead[index].gameObject Util.GetGameObject(this.playerHeroListGo[index],"item/num"):SetActive(false) local star=Util.GetGameObject(this.playerHeroListGo[index],"item/starGrid").gameObject SetHeroStars(star, dData.heroStar) else headObj:SetActive(true) heroheadObj:SetActive(false) if not this.playerScrollHead[go] then this.playerScrollHead[go]=CommonPool.CreateNode(POOL_ITEM_TYPE.PLAYER_HEAD,headObj) end this.playerScrollHead[go]:Reset() this.playerScrollHead[go]:SetHead(dData.head) this.playerScrollHead[go]:SetFrame(dData.headFrame) this.playerScrollHead[go]:SetLevel("LV." .. dData.level) this.playerScrollHead[go]:SetScale(Vector3.one*0.8) end end --膜拜 local clickBtn = Util.GetGameObject(go,"clickBtn") local getRewardBtn = Util.GetGameObject(go,"getRewardBtn") --local getRewardBtnText = Util.GetGameObject(go,"getRewardBtn/Text"):GetComponent("Text") local getRewardSign = Util.GetGameObject(go,"getRewardBtn/taken") local getboxBtn = Util.GetGameObject(go,"getbox") local getboxRedpoint=Util.GetGameObject(getboxBtn,"redPoint") -- 设置宝箱红点 msg.redPoint 通过协议获取红点数据 getboxRedpoint:SetActive(boxred) -- 前端屏蔽 是否显示对应宝箱类型 getboxBtn:SetActive(RankingManager.IsShowType(sData.rankType)) -- n1 getRewardBtn:SetActive(dData.uid ~= 0 ) -- Util.SetGray(getRewardBtn,proud ~= 0) Util.AddOnceClick(clickBtn, function() UIManager.OpenPanel(UIName.RankingSingleListPanel,sData) -- this.SwitchView(curIndex) end) Util.AddOnceClick(getboxBtn, function() UIManager.OpenPanel(UIName.RankAllSeverRewardPanel,sData.rankType,function() this.SwitchView(curIndex) end) CheckRedPointStatus(RedPointType.RankingSort) end) if proud == 0 then--没有膜拜过 getRewardBtn:GetComponent("Button").enabled = true Util.GetGameObject(go,"getRewardBtn/redPoint"):SetActive(true) getRewardSign:SetActive(false) Util.AddOnceClick(getRewardBtn, function() NetManager.RankProudRequest(sData.rankType,function () RankingManager.SetSingleRankProud(sData.rankType,1) local spFata = ConfigManager.GetConfigData(ConfigName.SpecialConfig,50) local itemData = string.split(spFata.Value, "#") PopupTipPanel.ShowTip(GetLanguageStrById(11711)..GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.ItemConfig,tonumber(itemData[1])).Name).."×"..itemData[2].."!") this.SwitchView(curIndex) CheckRedPointStatus(RedPointType.RankingSort) end) end) else getRewardBtn:GetComponent("Button").enabled = false getRewardBtn:GetComponent("Image").enabled = false getRewardSign:SetActive(true) -- getRewardBtnText.text = GetLanguageStrById(11712) Util.GetGameObject(go,"getRewardBtn/redPoint"):SetActive(false) end end --界面关闭时调用(用于子类重写) function RankingListMainPanel:OnClose() isFirstOn = true RankingManager.RefreshInfo() for k, v in ipairs(this.playerHeroListGo) do SubUIManager.Close(SubUIConfig.ItemView, v) GameObject.DestroyImmediate(v) end this.playerHeroListGo ={} this.playerHeroListHead ={} end --界面销毁时调用(用于子类重写) function RankingListMainPanel:OnDestroy() for _, playerHead in ipairs(this.playerScrollHead) do playerHead:Recycle() end this.playerScrollHead = {} rankKingListGo = {} end function this.SetInfoShow(go,data,rankType,nameText) local fight = Util.GetGameObject(go,"fight") local warPower = Util.GetGameObject(go,"warPower") local trial = Util.GetGameObject(go,"trial") local climbTower = Util.GetGameObject(go, "climbTower") fight:SetActive(false) warPower:SetActive(false) trial:SetActive(false) climbTower:SetActive(false) if rankType == RANK_TYPE.FIGHT_LEVEL_RANK then fight:SetActive(true) if nameText then nameText:GetComponent("Text").text = data.userName end local rankdata = RankingManager.mainLevelConfig[data.rankInfo.param1] if rankdata then Util.GetGameObject(go,"fight"):GetComponent("Text").text = rankdata.Name else Util.GetGameObject(go,"fight"):GetComponent("Text").text = "--" end elseif rankType == RANK_TYPE.FORCE_CURR_RANK then warPower:SetActive(true) if nameText then nameText:GetComponent("Text").text = data.userName end Util.GetGameObject(go,"warPower/Text"):GetComponent("Text").text = data.rankInfo.param1--data.force elseif rankType == RANK_TYPE.GUILD_FORCE_RANK then warPower:SetActive(true) if nameText then nameText:GetComponent("Text").text = data.guildName end Util.GetGameObject(go,"warPower/Text"):GetComponent("Text").text = data.rankInfo.param1 elseif rankType == RANK_TYPE.MONSTER_RANK then trial:SetActive(true) if nameText then nameText:GetComponent("Text").text = data.userName end Util.GetGameObject(go,"trial/Text"):GetComponent("Text").text = data.rankInfo.param1 elseif rankType == RANK_TYPE.CLIMB_TOWER then if data.rankInfo.param1 and data.rankInfo.param1 > 0 then climbTower:SetActive(true) if nameText then nameText:GetComponent("Text").text = data.userName end Util.GetGameObject(go, "climbTower/Text"):GetComponent("Text").text = data.rankInfo.param1 end elseif rankType==RANK_TYPE.HERO_FORCE_RANK then -- 前五战力英雄数据 to do 服务端数据核对从 if data.rankInfo.rank and data.rankInfo.rank > 0 then warPower:SetActive(true) if nameText then nameText:GetComponent("Text").text = data.userName end Util.GetGameObject(go, "warPower/Text"):GetComponent("Text").text = data.rankInfo.param1 end end end function this.SetHeroShow() -- 显示英雄头像 战斗力 -- SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(bg, "bg/pos").transform) -- ItemView:OnOpen -- 显示英雄头像、英雄等级、英雄星级、英雄阵营,玩家名字 -- dragViewListGo[i] = SubUIManager.Open(SubUIConfig.DragView, bgListGo[i].transform) -- 获取英雄数据 HeroManager.GetSingleHeroData(this.choosedList[j].heroId) -- 获取英雄名称 GetLanguageStrById(herodata.name) -- local heroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig) -- local itemData = itemConfig[itemId] -- local bagNum = BagManager.GetItemCountById(itemId) -- ItemImageTips(itemId, Util.GetGameObject(this.Connect, "Cost" .. i .. "/icon")) -- 获取item信息 BagManager.GetItemCountById(this.handselData.ConsumeItem[1]) / this.handselData.ConsumeItem[2] end return RankingListMainPanel