require("Base/BasePanel") ArenaNewUpRankPanel = Inherit(BasePanel) local this = ArenaNewUpRankPanel local RankConfig=ConfigManager.GetConfig(ConfigName.MServerRankConfig) local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig) local lastRankId=0 local currRankId=0 local lastScore=0 local currScore=0 local rankData local maxScore local minScore local layer local aaa --初始化组件(用于子类重写) function ArenaNewUpRankPanel:InitComponent() this.spLoader = SpriteLoader.New() this.titleImg=Util.GetGameObject(self.gameObject, "Bg/bg/title"):GetComponent("Text") this.titleObj=Util.GetGameObject(self.gameObject, "Bg/bg") this.titleImg.text="段位重置为" this.jifenTxt=Util.GetGameObject(self.gameObject, "Bg/jifenTxt"):GetComponent("Text") this.jifenTxt.text="段位积分" this.rankName=Util.GetGameObject(self.gameObject, "Bg/rankName"):GetComponent("Text") this.rankImg=Util.GetGameObject(self.gameObject, "Bg/RankImg") this.scoreTxt=Util.GetGameObject(self.gameObject, "Bg/hangOnTime"):GetComponent("Text") this.text1=Util.GetGameObject(self.gameObject, "Bg/upRewardObj/userNameText"):GetComponent("Text") this.text1.text="进阶奖励" this.tipImg=Util.GetGameObject(self.gameObject, "tipImage"):GetComponent("Text") this.tipImg.text="点击任意位置继续" --this.tipImg.sprite=this.spLoader:LoadSprite("r_zhandou_rewardtap2_zh") this.rewardObj=Util.GetGameObject(self.gameObject, "Bg/upRewardObj") this.rewardObj:SetActive(false) this.grid=Util.GetGameObject(self.gameObject, "Bg/upRewardObj/scroll/grid") this.progress=Util.GetGameObject(self.gameObject, "Bg/progressbar/progress"):GetComponent("Image") this.btn_close=Util.GetGameObject(self.gameObject, "maskImage") this.starList={} for i = 1, 5 do table.insert(this.starList,Util.GetGameObject(self.gameObject, "Bg/starPar/Image"..i)) end end --绑定事件(用于子类重写) function ArenaNewUpRankPanel:BindEvent() Util.AddClick(self.btn_close, function() self:ClosePanel() end) end local titleLive local currRank local newResore function ArenaNewUpRankPanel:OnOpen(data) --赛季重制显示重置图标 if data then this.titleObj.gameObject:SetActive(true) else this.titleObj.gameObject:SetActive(false) end if data.isFirst==1 then this.titleImg.text="段位重置为" else this.titleImg.text="段位提升为" end --lastScore=PlayerPrefs.GetInt(PlayerManager.uid.."yuxulundaoScore") --aaa, rankData=WorldArenaManager.GetRankImgByScore(lastScore) currScore=WorldArenaManager.GetNewScore() --lastRankId=rankData.Id --newResore=WorldArenaManager.GetNewScore() --LogError("upwindow lastScore=="..lastScore.." newScore=="..newResore) --local grade, newRankData=WorldArenaManager.GetRankImgByScore(WorldArenaManager.GetNewScore()) local baseData=ArenaManager.GetArenaBaseData() --currRankId=newRankData.Id --rankData=RankConfig[lastRankId] -- minScore=rankData.ScoreLow -- maxScore=rankData.ScoreUp -- currRank= rankData.RankGrade+1 -- titleLive = poolManager:LoadAsset("fx_duanwei_0"..currRank, PoolManager.AssetType.GameObject) -- titleLive.transform:SetParent(this.rankImg.transform) -- titleLive.transform.localPosition=Vector3.New(0,-600,0) -- titleLive.transform.localScale =Vector3.New(1,1,1) -- SetParticleSortLayer(titleLive,self.sortingOrder) -- if not rankData then -- return -- end this.rankName.text=ArenaManager.GetArenaMyRankName() --rankData.RankName this.scoreTxt.text=baseData.lvScore.."/"..baseData.ArenaLevelIntegral[2]+1 --lastScore.."/"..rankData.ScoreUp this.progress.fillAmount=(baseData.lvScore-baseData.ArenaLevelIntegral[1])/(baseData.ArenaLevelIntegral[2]-baseData.ArenaLevelIntegral[1]+1) --(lastScore-minScore)/(maxScore-minScore) --currRank=rankData.RankGrade local itemRandomDataList={} aaa=data.drop if aaa.itemlist and #aaa.itemlist>0 then itemRandomDataList=BagManager.GetTableByBackDropDataNew(aaa) local callList2 = Stack.New() local baseContentList2={} this.SetItemShow(aaa,itemRandomDataList,this.grid.transform,callList2,baseContentList2) end --this.SetStarShow(rankData.RankLevel,rankData.RankGrade+1,self.sortingOrder) -- this.StartProgressChange(function() -- local callList2 = Stack.New() -- local itemRandomDataList={} -- local aaa={} -- aaa.itemlist={} -- aaa.itemlist= WorldArenaManager.GetReward() -- LogError("itemlist len=="..#WorldArenaManager.GetReward()) -- LogError("aaa.itemlist len=="..#aaa.itemlist) -- if aaa.itemlist and #aaa.itemlist>0 then -- itemRandomDataList=BagManager.GetTableByBackDropData(aaa) -- local baseContentList2={} -- this.SetItemShow(aaa,itemRandomDataList,this.grid.transform,callList2,baseContentList2) -- end -- end) end --星级和段位图标显示 function this.SetStarShow(star,grade,layer) -- 设置星级 WorldArenaManager.SetStarShow(this.starList, rankData.RankLevel) if currRank~=grade then if titleLive then destroy(titleLive) titleLive=nil currRank=grade titleLive = poolManager:LoadAsset("fx_duanwei_0"..grade, PoolManager.AssetType.GameObject) titleLive.transform:SetParent(this.rankImg.transform) if grade==5 then titleLive.transform.localPosition=Vector3.New(0,-500,0) titleLive.transform.localScale =Vector3.New(0.8,0.8,1) else titleLive.transform.localPosition=Vector3.New(0,-600,0) titleLive.transform.localScale =Vector3.New(1,1,1) end SetParticleSortLayer(titleLive,layer) end --this.rankName.text=rankData.RankName end end -- 根据物品列表数据显示物品 function this.SetItemShow(drop,dataList,transform,callList,baseContentList) this.rewardObj:SetActive(true) BagManager.OnShowTipDropNumZero(drop) if drop==nil then return end for i = 1, #dataList do dataList[i].itemConfig = itemConfig[dataList[i].sId] end --self:ItemDataListSort(dataList) for i = 1, math.max(#dataList, #baseContentList) do local go = baseContentList[i] if not go then go = SubUIManager.Open(SubUIConfig.ItemView, transform) go.gameObject.name = "frame"..i baseContentList[i] = go end go.gameObject:SetActive(false) end callList:Clear() for i = #dataList, 1, -1 do local view = baseContentList[i] local curItemData=dataList[i] view:OnOpen(true,curItemData,1.15,true,true,false,layer) --view.gameObject:SetActive(false) callList:Push(function () local func = function() view.gameObject:SetActive(true) local btn = Util.GetGameObject(view.gameObject, "item/frame"):GetComponent("Button") btn.enabled = false PlayUIAnim(view.gameObject, function() btn.enabled = true end) Timer.New(function () isPopGetSSR = false if callList:Count()~=0 then callList:Pop()() end end, 0.1):Start() end func() end) end if callList:Count()~=0 then callList:Pop()() end end function ArenaNewUpRankPanel:OnSortingOrderChange() layer=self.sortingOrder if titleLive then SetParticleSortLayer(titleLive,self.sortingOrder) end end --滚动条数 local num=0 --走的条数 local walkNum=0 local changeNum=1 --开始进度条滚动 function this.StartProgressChange(func) if this.TimeCounter then this.TimeCounter=nil end local function _TimeUpdate() --降低 if lastScore15 and currScore-lastScore>15 then changeNum=12 else changeNum=1 end lastScore=lastScore+changeNum --经验条走到头 if lastScore==maxScore+1 then walkNum=walkNum+1 if RankConfig[lastRankId+1] then lastRankId=lastRankId+1 rankData=RankConfig[lastRankId] maxScore=rankData.ScoreUp minScore=rankData.ScoreLow this.SetStarShow(rankData.RankLevel,rankData.RankGrade+1,layer) end end else if lastScore-minScore>15 and lastScore-currScore>15 then changeNum=12 else changeNum=1 end lastScore=lastScore-changeNum if lastScore==minScore-1 then walkNum=walkNum+1 if RankConfig[lastRankId-1] then lastRankId=lastRankId-1 rankData=RankConfig[lastRankId] maxScore=rankData.ScoreUp minScore=rankData.ScoreLow this.SetStarShow(rankData.RankLevel,rankData.RankGrade+1,layer) end end end this.scoreTxt.text=lastScore.."/"..maxScore this.progress.fillAmount=(lastScore-minScore)/(maxScore-minScore) --走完了所有条目走最后半截 if lastScore==currScore then if this.TimeCounter then this.TimeCounter:Stop() this.TimeCounter = nil if func then func() end end end end this.TimeCounter = Timer.New(_TimeUpdate,0.005, -1, true) this.TimeCounter:Start() end function this:OnClose() WorldArenaManager.ClearReward() --PlayerPrefs.SetInt(PlayerManager.uid.."yuxulundaoScore",newResore) if this.TimeCounter then this.TimeCounter:Stop() this.TimeCounter = nil end if titleLive then destroy(titleLive) titleLive=nil end end return ArenaNewUpRankPanel