require("Base/BasePanel") local ArenaTrialPanel = Inherit(BasePanel) --初始化组件(用于子类重写) function ArenaTrialPanel:InitComponent() self.spLoader = SpriteLoader.New() self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform) self.btnBack = Util.GetGameObject(self.gameObject,"BackBtn") self.liveRoot = Util.GetGameObject(self.gameObject,"bg/ren") self.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn") self.helpPosition = self.helpBtn:GetComponent("RectTransform").localPosition self.rankingBtn = Util.GetGameObject(self.gameObject, "rankingBtn") self.title = Util.GetGameObject(self.gameObject,"bg/kuang/zi"):GetComponent("Image") self.goBtn = Util.GetGameObject(self.gameObject,"bg/kuang/goBtn") self.goBtnImage = Util.GetGameObject(self.goBtn,"zi"):GetComponent("Image") self.Rank = Util.GetGameObject(self.goBtn,"di") self.goNum = Util.GetGameObject(self.Rank,"num"):GetComponent("Text") self.goTips = Util.GetGameObject(self.goBtn,"tips"):GetComponent("Text") self.time = Util.GetGameObject(self.gameObject,"bg/kuang/time/Text"):GetComponent("Text") self.Scroll = Util.GetGameObject(self.gameObject,"bg/kuang/Scroll") self.leftTime = Util.GetGameObject(self.gameObject,"bg/LeftTime"):GetComponent("Text") self.itemPre = Util.GetGameObject(self.gameObject,"itemPre") local rootHight = self.Scroll.transform.rect.height local width = self.Scroll.transform.rect.width self.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.Scroll.transform, self.itemPre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0, 0)) self.ScrollView.moveTween.MomentumAmount = 1 self.ScrollView.moveTween.Strength = 2 self.itemList = {} self.live = nil end --绑定事件(用于子类重写) function ArenaTrialPanel:BindEvent() Util.AddClick(self.btnBack, function() self:ClosePanel() end) Util.AddClick(self.goBtn, function() JumpManager.GoJump(8001) end) Util.AddClick(self.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.jingjishilian, self.helpPosition.x,self.helpPosition.y) end) Util.AddClick(self.rankingBtn, function() UIManager.OpenPanel(UIName.RankingSingleListPanel,rankKingList[6]) end) end --添加事件监听(用于子类重写) function ArenaTrialPanel:AddListener() end --移除事件监听(用于子类重写) function ArenaTrialPanel:RemoveListener() end --界面打开时调用(用于子类重写) function ArenaTrialPanel:OnOpen(fun) self.fun = fun end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function ArenaTrialPanel:OnShow() self:Refresh(true,true) end function ArenaTrialPanel:Refresh(isTop,isAni) self.actData = CommonActPageManager.GetData(ActivityTypeDef.jingjishilian) self.title.sprite = self.spLoader:LoadSprite("jinjishilian") self.goBtnImage.sprite = self.spLoader:LoadSprite("s_shanheshilian_qianzhan") if self.live then poolManager:UnLoadLive(self.live.gameObject.name, self.live) self.live = nil end local data = ConfigManager.GetConfigDataByKey(ConfigName.HeroConfig,"ReadingName","敖丙") self.live = poolManager:LoadLive(GetResourcePath(data.Live), self.liveRoot.transform, Vector3.one * data.Scale, Vector3.New(data.Position[1], data.Position[2], 0)) local SkeletonGraphic = self.live:GetComponent("SkeletonGraphic") SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) local _, myRankInfo = ArenaManager.GetRankInfo() self.myRank = myRankInfo.personInfo.rank if self.myRank < 0 then self.Rank .gameObject:SetActive(false) self.goTips.text = "尚无名次" else self.Rank.gameObject:SetActive(true) self.goNum.text = self.myRank self.goTips.text = "第 名" end self:SetNumbers() self:SetRewards(isTop,isAni) end function ArenaTrialPanel:SetNumbers() --设置时间 if self.timer then self.timer:Stop() self.timer = nil end local time =self.actData.endTime - GetTimeStamp() self.leftTime.text = string.format(Language[10512].."%s",TimeToFelaxible(time)) self.timer = Timer.New(function () time = time - 1 self.leftTime.text = string.format(Language[10512].."%s",TimeToFelaxible(time)) if time <= 0 then self:ClosePanel() end end,1,-1,true) self.timer:Start() end function ArenaTrialPanel:SetRewards(isTop,isAni) local rewardTabs = {} for i, v in ConfigPairs(ConfigManager.GetConfig(ConfigName.ActivityRankingReward)) do if v.ActivityId == self.actData.activityId then table.insert(rewardTabs,v) end end local setIndex = 1 self.ScrollView:SetData(rewardTabs, function (index, go) self:SingleDataShow(go, rewardTabs[index],index) if self.myRank >= rewardTabs[index].MinRank and self.myRank <= rewardTabs[index].MaxRank then setIndex = index end end,not isTop,not isAni) self.ScrollView:SetIndex(setIndex) end function ArenaTrialPanel:SingleDataShow(item,data,index) local sortNumTabs = {} for i = 1, 4 do sortNumTabs[i] = Util.GetGameObject(item, "SortNum/SortNum ("..i..")") sortNumTabs[i]:SetActive(false) end local sort4Text = Util.GetGameObject(sortNumTabs[4],"TitleText"):GetComponent("Text") local reward = Util.GetGameObject(item,"reward") if data.MinRank == data.MaxRank then if data.MaxRank < 4 then sortNumTabs[data.MinRank]:SetActive(true) else sortNumTabs[4]:SetActive(true) sort4Text.text = data.MaxRank end else sortNumTabs[4]:SetActive(true) if data.MaxRank < 0 then sort4Text.text = data.MinRank .."+" else sort4Text.text = data.MinRank .."-".. data.MaxRank end end if not self.itemList[item] then self.itemList[item] = {} end for i = 1, #data.RankingReward do if not self.itemList[item][i] then self.itemList[item][i] = SubUIManager.Open(SubUIConfig.ItemView,reward.transform) end self.itemList[item][i]:OnOpen(false, data.RankingReward[i], 0.8,false,false,false,self.sortingOrder) end end --界面关闭时调用(用于子类重写) function ArenaTrialPanel:OnClose() if self.timer then self.timer:Stop() self.timer = nil end if self.live then poolManager:UnLoadLive(self.live.gameObject.name, self.live) self.live = nil end if self.fun then self.fun() end end --界面销毁时调用(用于子类重写) function ArenaTrialPanel:OnDestroy() if self.timer then self.timer:Stop() self.timer = nil end self.itemList = {} if self.live then poolManager:UnLoadLive(self.live.gameObject.name, self.live) self.live = nil end self.spLoader:Destroy() end return ArenaTrialPanel