require("Base/BasePanel") ActivityChongRank = Inherit(BasePanel) local TabBox = require("Modules/Common/TabBox") local this=ActivityChongRank local infoConfig=ConfigManager.GetConfig(ConfigName.ChongRankInfo) local rankConfig=ConfigManager.GetConfig(ConfigName.ChongRank) local curConfig=nil local currId=0 local type=0 local btnType=0 local rankType=0 local ownRank=0 local isFirst=false local _TabData={ [1] = { default = "UI_hz_gonghui_31", select = "UI_hz_gonghui_31", name = "排行榜"}, [2] = { default = "UI_hz_gonghui_31", select = "UI_hz_gonghui_31", name = "排名奖励"}, } function this:InitComponent() this.spLoader = SpriteLoader.New() this.backBtn=Util.GetGameObject(self.gameObject, "bg/btn_close") this.titleImg=Util.GetGameObject(self.gameObject, "bg/name"):GetComponent("Image") this.leftTimeTxt=Util.GetGameObject(self.gameObject, "bg/Image/timebg"):GetComponent("Text") this.grid=Util.GetGameObject(self.gameObject, "bg/tabScroll/grid") this.btnItem=Util.GetGameObject(self.gameObject, "bg/tabBtnPre") this.rewardItem=Util.GetGameObject(self.gameObject, "bg/Rank") this.rankItem=Util.GetGameObject(self.gameObject, "bg/Rank2") this.selectObj=Util.GetGameObject(self.gameObject, "bg/tabSelectBtn") this.infoTxt=Util.GetGameObject(self.gameObject, "bg/title/infoTxt"):GetComponent("Text") this.rewardGrid=Util.GetGameObject(self.gameObject, "bg/rewardGrid") this.rankGrid=Util.GetGameObject(self.gameObject, "bg/rankGrid") this.selectTxt=Util.GetGameObject(self.gameObject, "bg/tabSelectBtn/Text"):GetComponent("Text") this.tabBox=Util.GetGameObject(self.gameObject, "bg/TabBox") this.btn_help=Util.GetGameObject(self.gameObject, "bg/btn_help") this.myRank=Util.GetGameObject(self.gameObject, "bg/myRank"):GetComponent("Text") local rootHight = this.rewardGrid.transform.rect.height local width = this.rewardGrid.transform.rect.width this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.rewardGrid.transform,this.rewardItem, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0,0)) this.ScrollView.moveTween.MomentumAmount = 1 this.ScrollView.moveTween.Strength = 2 this.ScrollView.elastic = false --local rootHight2 = this.rankGrid.transform.rect.height --local width2 = this.rankGrid.transform.rect.width this.rankScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.rankGrid.transform,this.rankItem, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0,0)) this.rankScrollView.moveTween.MomentumAmount = 1 this.rankScrollView.moveTween.Strength = 2 this.rankScrollView.elastic = false this.actData = CommonActPageManager.GetData(ActivityTypeDef.KaiFuChongBang) this.btnList={} for _, configInfo in ConfigPairs(infoConfig) do local tabBtn = newObjToParent(this.btnItem, this.grid) Util.GetGameObject(tabBtn, "Text"):GetComponent("Text").text=configInfo.RankName local openTime=this.actData.startTime+configInfo.OpenTime local closeTime=this.actData.startTime+configInfo.CloseTime if GetTimeStamp()>=openTime and GetTimeStamp()<=closeTime then --活动未开启 curConfig=configInfo currId=curConfig.Id isFirst=true end --活动没开启页签不显示 if openTime>GetTimeStamp()+configInfo.Preview then tabBtn.gameObject:SetActive(false) end table.insert(this.btnList,tabBtn) Util.AddClick(tabBtn,function () btnType=_ this.TabBtnOnClick(configInfo,tabBtn) end) end if currId>5 then this.grid:GetComponent("RectTransform").anchoredPosition=Vector2.New(300,9) end --显示货币 this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform) this.itemList = {} end local qaId=0 function this:OnShow() PlayerPrefs.SetInt(PlayerManager.uid.."kaifuchongbang",1) end local state=0 function this.TabBtnOnClick(config,btn) local time=0 local openTime=this.actData.startTime+config.OpenTime local closeTime=this.actData.startTime+config.CloseTime if openTime>GetTimeStamp() then --活动未开启 time =openTime - GetTimeStamp() state=1 elseif closeTime>GetTimeStamp() then --活动进行中 time=closeTime-GetTimeStamp() state=2 elseif closeTimecurrId+1 then PopupTipPanel.ShowTip("排行榜暂未开启") return end this.selectObj.transform:SetParent(btn.transform) this.selectObj.transform.localScale = Vector3.one this.selectObj.transform.localPosition = Vector3.zero this.selectTxt.text=config.RankName qaId=config.QAConfig --设置时间 if this.timer then this.timer:Stop() this.timer = nil end if state==1 then this.leftTimeTxt.text = string.format("活动开始倒计时:".."%s",TimeToFelaxible(time)) elseif state==2 then this.leftTimeTxt.text = string.format(Language[10512].."%s",TimeToFelaxible(time)) elseif state==3 then this.leftTimeTxt.text = "活动已结束" end if time~=0 then this.timer = Timer.New(function () time = time - 1 if state==1 then this.leftTimeTxt.text = string.format("活动开始倒计时:".."%s",TimeToFelaxible(time)) elseif state==2 then this.leftTimeTxt.text = string.format(Language[10512].."%s",TimeToFelaxible(time)) elseif state==3 then this.leftTimeTxt.text = "活动已结束" end if time <= 0 and state~=3 then --this:OnClose() state=3 this.ChangeWindow(config) end end,1,-1,true) this.timer:Start() end this.ChangeWindow(config) end function this.ChangeWindow(config) this.titleImg.sprite=this.spLoader:LoadSprite(config.Icon) curConfig=config if state==3 then rankType=config.BackRankType else rankType=config.RankType end RankingManager.InitData(rankType,function() if state==3 then rankType=config.BackRankType else rankType=config.RankType end LogError("ranktype=="..rankType) local ranks,myRank = RankingManager.GetRankingInfo() ownRank=myRank.rank if ownRank>0 then this.myRank.text="我的排名:"..ownRank else this.myRank.text="" end LogError("ranks len======="..#ranks) --this.SetRoleRank(ranks,myRank,true,true) if type==1 then this.rewardGrid:SetActive(false) this.rankGrid:SetActive(true) this.infoTxt.text="玩家信息" -- RankingManager.InitData(config.RankType,function() -- rankType=config.RankType -- LogError("ranktype=="..rankType) -- local ranks,myRank = RankingManager.GetRankingInfo() -- ownRank=myRank.rank -- LogError("ranks len======="..#ranks) this.SetRoleRank(ranks,myRank,true,true) -- end,0,1) elseif type==2 then local list={} this.rewardGrid:SetActive(true) this.rankGrid:SetActive(false) this.infoTxt.text="奖励" for _, configInfo in ConfigPairs(rankConfig) do if configInfo.ChongRankInfoID==config.Id then table.insert(list,configInfo) end end this.ScrollView:SetData(list, function (index, go) this.UpdateRewardInfo(go,list[index]) end,false) end end,0,1) end function this:BindEvent() Util.AddClick(this.backBtn,function () self:ClosePanel() end) Util.AddClick(this.btn_help,function () UIManager.OpenPanel(UIName.HelpPopup,qaId,this.btn_help.transform.localPosition.x,this.btn_help.transform.localPosition.y) end) this.TabCtrl = TabBox.New() this.TabCtrl:SetTabAdapter(this.TabAdapter) this.TabCtrl:SetChangeTabCallBack(this.SwitchView) this.TabCtrl:Init(this.tabBox, _TabData) end -- tab节点显示自定义 function this.TabAdapter(tab, index, status) local tabLab = Util.GetGameObject(tab, "Text") Util.GetGameObject(tab,"Image/Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite(_TabData[index][status]) tabLab:GetComponent("Text").text = _TabData[index].name --tabLab:GetComponent("Text").color = _TabFontColor[status] end --切换视图 function this.SwitchView(index) type=index if curConfig==nil then curConfig=infoConfig[1] this.TabBtnOnClick(curConfig,this.btnList[1]) return end if isFirst then this.TabBtnOnClick(curConfig,this.btnList[curConfig.Id]) return end this.ChangeWindow(curConfig) end function this.UpdateRewardInfo(go,data) local sortNumTabs = {} for i = 1, 4 do sortNumTabs[i] = Util.GetGameObject(go, "sortNum/sortNum ("..i..")") sortNumTabs[i]:SetActive(false) end local reward = Util.GetGameObject(go,"reward") local sort4Text = Util.GetGameObject(sortNumTabs[4],"rankNumberText"):GetComponent("Text") local hintObj=Util.GetGameObject(go,"hint") if ownRank and ownRank>=data.MinRank and ownRank<=data.MaxRank then hintObj:SetActive(true) else hintObj:SetActive(false) end 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 this.itemList[go] then this.itemList[go] = {} end for i = 1, #this.itemList[go] do this.itemList[go][i].gameObject:SetActive(false) end for i = 1, #data.RankingReward do if not this.itemList[go][i] then this.itemList[go][i] = SubUIManager.Open(SubUIConfig.ItemView,reward.transform) end this.itemList[go][i]:OnOpen(false, data.RankingReward[i], 0.8,false,false,false,this.sortingOrder) this.itemList[go][i].gameObject:SetActive(true) end end -- 设置玩家排行 function this.SetRoleRank(ranks,myRankInfo, isTop, isAnim ) --if #ranks == 0 or not ranks then Log(Language[10267]) return end local rankFunc = function (index, item) this.UpdateRankInfo(item, ranks[index], myRankInfo.rank) if index==#ranks then RankingManager.RequestNextWarPowerPageData(function() local ranks,myRank = RankingManager.GetRankingInfo() --this.SetPlayerRankInfo(ranks,myRank) this.SetRoleRank(ranks,myRank) end) end end -- -- 重置排行列表 this.rankScrollView:SetData(ranks, rankFunc, not isTop, not isAnim ) end local _PlayerHeadList = {} function this.UpdateRankInfo(go,data) local sortNumTabs = {} for i = 1, 4 do sortNumTabs[i] = Util.GetGameObject(go, "sortNum/sortNum ("..i..")") sortNumTabs[i]:SetActive(false) end local sort4Text = Util.GetGameObject(sortNumTabs[4],"rankNumberText"):GetComponent("Text") if data.rankInfo.rank<4 then sort4Text.gameObject:SetActive(false) sortNumTabs[data.rankInfo.rank]:SetActive(true) else sort4Text.gameObject:SetActive(true) sortNumTabs[4]:SetActive(true) sort4Text.text=data.rankInfo.rank end local head=Util.GetGameObject(go, "head") local nameTxt=Util.GetGameObject(go, "nameTxt"):GetComponent("Text") local warPower = Util.GetGameObject(go,"warPower") local infoTxt = Util.GetGameObject(go,"numTxt"):GetComponent("Text") local starImg = Util.GetGameObject(go,"starImg") local selfObj=Util.GetGameObject(go,"slefBG") selfObj:SetActive(data.rankInfo.rank==ownRank) warPower:SetActive(false) infoTxt.gameObject:SetActive(false) starImg:SetActive(false) nameTxt.text=data.userName if not _PlayerHeadList[go] then _PlayerHeadList[go] = SubUIManager.Open(SubUIConfig.PlayerHeadView, head.transform) end _PlayerHeadList[go]:Reset() _PlayerHeadList[go]:SetHead(data.head) _PlayerHeadList[go]:SetFrame(data.headFrame) _PlayerHeadList[go]:SetLevel(data.level) _PlayerHeadList[go]:SetScale(Vector3.one*0.7) _PlayerHeadList[go]:SetLayer(this.sortingOrder) _PlayerHeadList[go]:SetEffectScale(0.75) local viewType=PLAYER_INFO_VIEW_TYPE.NORMAL if rankType==RANK_TYPE.FORCE_CURR_RANK or rankType==RANK_TYPE.FightValue_chong then --战力排行 warPower:SetActive(true) Util.GetGameObject(go,"warPower/Text"):SetActive(true) Util.GetGameObject(go,"warPower/Text"):GetComponent("Text").text = data.rankInfo.param1 elseif rankType==RANK_TYPE.FIGHT_LEVEL_RANK or rankType==RANK_TYPE.Level_chong then --关卡排行 infoTxt.gameObject:SetActive(true) infoTxt.text=GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.MainLevelConfig,data.rankInfo.param1).Name) elseif rankType==RANK_TYPE.MONSTER_RANK or rankType==RANK_TYPE.Demons_chong then --心魔试炼 infoTxt.gameObject:SetActive(true) infoTxt.text=Language[11689].. data.rankInfo.param1 elseif rankType==RANK_TYPE.FIGHTLEVEL_STAR or rankType==RANK_TYPE.ShanHe_chong then --山河社稷图 升星排行 starImg:SetActive(true) infoTxt.gameObject:SetActive(true) infoTxt.text= data.rankInfo.param1 elseif rankType==RANK_TYPE.EquipRank or rankType==RANK_TYPE.EquipRank2 then infoTxt.gameObject:SetActive(true) infoTxt.text="装备:"..data.rankInfo.param1 elseif rankType==RANK_TYPE.SoulSign or rankType==RANK_TYPE.SoulSign2 then infoTxt.gameObject:SetActive(true) infoTxt.text="霸气:"..data.rankInfo.param1 elseif rankType==RANK_TYPE.UpStar or rankType==RANK_TYPE.UpStar2 then infoTxt.gameObject:SetActive(true) infoTxt.text="英雄:"..data.rankInfo.param1 end Util.AddOnceClick(go,function() UIManager.OpenPanel(UIName.PlayerInfoPopup, data.uid,viewType) end) end function this:OnOpen(data) --this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.ShenZun}) end --添加事件监听(用于子类重写) function this:AddListener() end --移除事件监听(用于子类重写) function this:RemoveListener() end function this.UpdateTopInfo() end --界面关闭时调用(用于子类重写) function this:OnClose() if self.timer then self.timer:Stop() self.timer = nil end CheckRedPointStatus(RedPointType.KaiFuChongBang) end function this:OnDestroy() this.spLoader:Destroy() if self.timer then self.timer:Stop() self.timer = nil end curConfig=nil SubUIManager.Close(this.ScrollView) SubUIManager.Close(this.rankScrollView) end return this