require("Base/BasePanel") ArenaNewRankRewardPanel = Inherit(BasePanel) local this = ArenaNewRankRewardPanel local RewardList local arenaReward = ConfigManager.GetConfig(ConfigName.ArenaReward) local arenaLevel=ConfigManager.GetConfig(ConfigName.ArenaLevel) local RewardConfig local itemList = {}--优化itemView使用 local itemList2 = {}--优化itemView使用 local sorting = 0 local curRankType = 1 local tabNum = 1 local baseData=nil local vec = { [2] = Vector2.New(916,1002.7), [3] = Vector2.New(916,841.6), [4] = Vector2.New(916,944.9), [5] = Vector2.New(916,944.9), } -- Tab管理器 local TabBox = require("Modules/Common/TabBox") local _TabImgData = {select = "task_bigbtn01", default = "task_bigbtn02",} local _TabFontColor = { default = Color.New(130 / 255, 128 / 255, 120 / 255, 1), select = Color.New(243 / 255, 235 / 255, 202 / 255, 1) } local _TabData = { [1]= {txt = "段位奖励"}, } --初始化组件(用于子类重写) function ArenaNewRankRewardPanel:InitComponent() this.spLoader = SpriteLoader.New() this.btnBack = Util.GetGameObject(self.gameObject, "Content/btnBack") Util.GetGameObject(self.gameObject, "Content/Title"):GetComponent("Text").text="段位奖励" this.maskImage = Util.GetGameObject(self.gameObject, "maskImage") this.bottom = Util.GetGameObject(self.gameObject, "Content/bgImage/Bottom") this.tabbox = Util.GetGameObject(this.bottom, "tabbox") this.myRank = Util.GetGameObject(this.bottom, "MyRank") this.myRankNum = Util.GetGameObject(this.myRank, "num"):GetComponent("Text") this.myInfo = Util.GetGameObject(this.bottom, "MyInfo") this.myInfoName = Util.GetGameObject(this.bottom, "MyInfo/Text"):GetComponent("Text") this.myInfoName2 = Util.GetGameObject(this.bottom, "MyInfo/Text (1)"):GetComponent("Text") this.myInfoName2.text="达到段位可获得" this.norank = Util.GetGameObject(this.bottom, "MyInfo/myrank") this.tips = Util.GetGameObject(this.bottom, "Tips") this.text = Util.GetGameObject(this.bottom, "Tips/Text"):GetComponent("Text") this.text2 = Util.GetGameObject(this.bottom, "Tips/Text2"):GetComponent("Text") this.scrollRect = Util.GetGameObject(self.gameObject, "Content/bgImage/content1/scrollRect") this.rankPre = Util.GetGameObject(self.gameObject, "Content/itemPre") this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.scrollRect.transform, this.rankPre, nil, Vector2.New(this.scrollRect.transform.sizeDelta.x, this.scrollRect.transform.sizeDelta.y), 1, 1, Vector2.New(10,10)) this.ScrollView.moveTween.MomentumAmount = 1 this.ScrollView.moveTween.Strength = 1 this.ScrollView.elastic = false end --绑定事件(用于子类重写) function ArenaNewRankRewardPanel:BindEvent() this.TabCtrl = TabBox.New() this.TabCtrl:SetTabAdapter(this.TabAdapter) this.TabCtrl:SetChangeTabCallBack(this.OnTabChange) this.TabCtrl:Init(this.tabbox, _TabData) Util.AddClick(self.btnBack, function() self:ClosePanel() end) Util.AddClick(self.maskImage, function() self:ClosePanel() end) end -- tab按钮自定义显示设置 function this.TabAdapter(tab, index, status) local img = Util.GetGameObject(tab, "Image") local txt = Util.GetGameObject(tab, "Text") local red = Util.GetGameObject(tab, "redpot") red:SetActive(false) img:GetComponent("Image").sprite = this.spLoader:LoadSprite(_TabImgData[status]) txt:GetComponent("Text").text = _TabData[index].txt txt:GetComponent("Text").color = _TabFontColor[status] end -- tab改变回调事件 function this.OnTabChange(index) tabNum = index this.text2.text = "" this.text2.color = UIColor.WRITE if curRankType == 3 then this.ShowRewardInfo() this.text.text ="段位奖励将在下个赛季段位重置时发放" this.RefreshMyInfo() end end --添加事件监听(用于子类重写) function ArenaNewRankRewardPanel:AddListener() end --移除事件监听(用于子类重写) function ArenaNewRankRewardPanel:RemoveListener() end --界面打开时调用(用于子类重写) function ArenaNewRankRewardPanel:OnOpen(Type,myRank,_baseData) curRankType = Type baseData = ArenaManager.GetArenaBaseData() this.myInfoName.text="我的段位:"..baseData.rankName RewardConfig = arenaLevel this.tabbox:SetActive(true) this.TabCtrl:Init(this.tabbox, _TabData) this.myRank:SetActive(false) this.myInfo:SetActive(true) this.tips:SetActive(true) this.scrollRect.transform.sizeDelta = vec[curRankType] this.ScrollView.transform.sizeDelta = vec[curRankType] this.RefreshMyInfo() this.ShowRewardInfo() end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function ArenaNewRankRewardPanel:OnShow() end function ArenaNewRankRewardPanel:OnSortingOrderChange() for i, v in pairs(itemList) do for j = 1, #v do v[j]:SetEffectLayer(self.sortingOrder) end end for i, v in pairs(itemList2) do for j = 1, #v do v[j]:SetEffectLayer(self.sortingOrder) end end sorting = self.sortingOrder end function this.SetMyRank() this.myRank:SetActive(false) end --如果是竞技场的话显示下面一堆的东西 function this.RefreshMyInfo() local sortNumTabs = {} local rewardList = {} this.norank:SetActive(false) -- for i = 1, 4 do -- sortNumTabs[i] = Util.GetGameObject(this.myInfo, "sortNum/sortNum ("..i..")") -- sortNumTabs[i]:SetActive(false) -- end if not itemList2 then itemList2 = {} end for i = 1, #itemList2 do itemList2[i].gameObject:SetActive(false) end LogError("baseData.lvScore==="..baseData.lvScore) for k,value in ConfigPairs(arenaLevel) do if baseData.lvScore0 and type(rewardList[1][1])~="userdata" then --显示奖励 for i = 1, #rewardList do if itemList2[i] then itemList2[i]:OnOpen(false, rewardList[i], 0.75,false,false,false,sorting) else itemList2[i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(this.myInfo, "content").transform) itemList2[i]:OnOpen(false, rewardList[i], 0.75,false,false,false,sorting) end itemList2[i].gameObject:SetActive(true) end end end function this.ShowRewardInfo() RewardList = {} for _, configInfo in ConfigPairs(RewardConfig) do LogError("configInfo.id================="..configInfo.Id) table.insert(RewardList,configInfo) end this.ScrollView:SetData(RewardList, function (index, go) this.ActivityRewardSingleShow(go, RewardList[index],index) end) end --一般奖励-单列 function this.ActivityRewardSingleShow(activityRewardGo,rewardData,index) -- local sortNumTabs = {} -- for i = 1, 4 do -- sortNumTabs[i] = Util.GetGameObject(activityRewardGo, "sortNum/sortNum ("..i..")") -- sortNumTabs[i]:SetActive(false) -- end local rankName=Util.GetGameObject(activityRewardGo, "rankText"):GetComponent("Text") local rankNumTxt=Util.GetGameObject(activityRewardGo, "rankNumberText"):GetComponent("Text") rankName.text=rewardData.ArenaLevelName rankNumTxt.text=rewardData.ArenaLevelIntegral[1].."段位积分" if not itemList[activityRewardGo.name] then itemList[activityRewardGo.name] = {} end for i = 1, #itemList[activityRewardGo.name] do itemList[activityRewardGo.name][i].gameObject:SetActive(false) end --LogError("rewardData.ArenaLevelReward==="..#rewardData.ArenaLevelReward) if rewardData.ArenaLevelReward and #rewardData.ArenaLevelReward>0 and type(rewardData.ArenaLevelReward[1][1])~="userdata" then for i = 1, #rewardData.ArenaLevelReward do if itemList[activityRewardGo.name][i] then itemList[activityRewardGo.name][i]:OnOpen(false, rewardData.ArenaLevelReward[i], 0.75,false,false,false,sorting) else itemList[activityRewardGo.name][i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(activityRewardGo, "content").transform) itemList[activityRewardGo.name][i]:OnOpen(false, rewardData.ArenaLevelReward[i], 0.75,false,false,false,sorting) end itemList[activityRewardGo.name][i].gameObject:SetActive(true) end end end --界面关闭时调用(用于子类重写) function ArenaNewRankRewardPanel:OnClose() end --界面销毁时调用(用于子类重写) function ArenaNewRankRewardPanel:OnDestroy() this.spLoader:Destroy() itemList = {} itemList2 = {} end return ArenaNewRankRewardPanel