require("Base/BasePanel") RatioNumberLevelPanel = Inherit(BasePanel) local this = RatioNumberLevelPanel local sortingOrder = 0 local boxList = {} local levelList = {} local chapterId = 0 local chapterData = {} local allMissionDailyBoxItemPres = {} local mainLevleBg = {[1] = "adventure_icon-xianshi",[2] = "adventure_icon-yunmie"} local LevleTitleBg = {[1] = "Dragon-Ball--(151)1",[2] = "Dragon Ball- (151)"} local point = {[1] = "s_shanhe_xiaoditu_xiabao",[2] = "s_shanhe_xiaoditu_xiabao_01"} local assistantLevleDiBg = {[1] = "commander_taizi",[2] = "commander_taizi"} local assistantLevleBattle = {[1] = "battle_bulearrow",[2] = "battle_bulearrow",[3] = "ghoulroad_finished"} local assistantLevleReward = {[1] = "X1_yiwang_jiangli_jin",[2] = "X1_yiwang_jiangli_lan",[3] = "X1_yiwang_jiangli_jin_open"} local mainPointList = nil local allSmallPoint = nil local tabList = nil --初始化组件(用于子类重写) function RatioNumberLevelPanel:InitComponent() this.spLoader = SpriteLoader.New() self.btnBack = Util.GetGameObject(self.gameObject, "btnBack") this.chapterNameText = Util.GetGameObject(self.gameObject, "rightUp/chapterNameText"):GetComponent("Text") this.chapterNameImage = Util.GetGameObject(self.gameObject, "rightUp/starInfoBg/Image/Image"):GetComponent("Text") this.totalPro = Util.GetGameObject(self.gameObject, "rewardBg/totalProImage/totalPro"):GetComponent("Text") this.prb = Util.GetGameObject(self.gameObject, "middle/prb") this.rect = Util.GetGameObject(self.gameObject, "middle/rect") levelList = {} this.rewardBoxParent = Util.GetGameObject(self.gameObject, "chapterBtn/rewardBg/btnList") this.progressBottom = Util.GetGameObject(self.gameObject, "chapterBtn/rewardBg/progressBottom/Image"):GetComponent("Image") for i = 1, 3 do boxList[i] = Util.GetGameObject(self.gameObject, "chapterBtn/rewardBg/btnList/BoxBtn"..i) end this.leftBtn=Util.GetGameObject(self.gameObject,"middle/leftBtn") this.rightBtn=Util.GetGameObject(self.gameObject,"middle/rightBtn") this.leftBtnClick=Util.GetGameObject(self.gameObject,"middle/leftBtn/GameObject") this.rightBtnClick=Util.GetGameObject(self.gameObject,"middle/rightBtn/GameObject") --宝箱预览 this.rewardMaskBtn = Util.GetGameObject(self.gameObject, "middle/rewardMaskBtn") this.RewardPanelGetInfo = Util.GetGameObject(self.gameObject, "middle/rewardMaskBtn/RewardPanel/getInfo"):GetComponent("Text") this.RewardPanelGrid = Util.GetGameObject(self.gameObject, "middle/rewardMaskBtn/RewardPanel/ViewRect/grid") Util.GetGameObject(self.gameObject, "middle/rewardMaskBtn/RewardPanel/Image/Text"):GetComponent("Text").text = Language[10763] --无用小点显示 allSmallPoint = {} this.pointPre = Util.GetGameObject(self.gameObject, "middle/pointPre") this.pointParent = Util.GetGameObject(self.gameObject, "middle/pointParent") -- this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft }) this.mask = Util.GetGameObject(self.gameObject, "mask") this.tabPre = Util.GetGameObject(self.gameObject,"chapterBtn/tabbox/tab") this.box = Util.GetGameObject(self.gameObject,"chapterBtn/tabbox/box") this.bgImg = Util.GetGameObject(self.gameObject,"bg"):GetComponent("Image") this.titleImg = Util.GetGameObject(self.gameObject,"title"):GetComponent("Image") this.btn_help = Util.GetGameObject(self.gameObject,"btn_help") this.helpPosition= this.btn_help:GetComponent("RectTransform").localPosition end --绑定事件(用于子类重写) function RatioNumberLevelPanel:BindEvent() Util.AddOnceClick(self.btnBack, function() self:ClosePanel() UIManager.OpenPanel(UIName.FightPointPassMainPanel) end) Util.AddOnceClick(this.btn_help, function() UIManager.OpenPanel(UIName.HelpPopup,131,this.helpPosition.x,this.helpPosition.y) end) -- Util.AddClick(this.leftBtnClick, function() -- this.LeftOrRightBtnClickEvent(1) -- end) -- Util.AddClick(this.rightBtnClick, function() -- this.LeftOrRightBtnClickEvent(2) -- end) Util.AddOnceClick(this.rewardMaskBtn, function() this.rewardMaskBtn:SetActive(false) end) end function RatioNumberLevelPanel:OnSortingOrderChange() --特效层级重设 if levelList and #levelList > 0 then for i=1,#levelList do Util.SetParticleSortLayer(levelList[i], self.sortingOrder + 1) end sortingOrder = self.sortingOrder end end --界面打开时调用(用于子类重写) function RatioNumberLevelPanel:OnOpen() this.mask:SetActive(false) -- SoundManager.PlaySound(SoundConfig.Sound_WorldMap) -- this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main }) end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function RatioNumberLevelPanel:OnShow() chapterId = RatioNumberManager.selectChapterId --LogError("RatioNumberManager.levelId=="..RatioNumberManager.levelId) -- SoundManager.PlayMusic(SoundChapterConfig[chapterId]) if mainPointList then this.LevelShowHandle_UP() else mainPointList = {} allSmallPoint ={} this.LevelShowHandle() end if allSmallPoint then this.UselessPointHandle_Up() end if tabList then this.MenuBtnShowUp() else tabList ={} this.MenuBtnShow() end this.SetlevelBox() this.ChapterBgInfoUp() -- this.OnShowPanel() -- this.LeftOrRightBtnClickEvent() this.rewardMaskBtn:SetActive(false) end --1--------------------------------- function this.LevelShowHandle() local chapter = RatioNumberLevelManager.GetChapterInfo(chapterId) local levelInfo = chapter.levelInfo for i=1 ,#levelInfo do local config = levelInfo[i] local LevelPointPosition = config.LevelPointPosition local lock ={levelLimit= config.LevelLimit ,passReward = config.PassReward} local UselessPoint = config.UselessPoint this.LevelPointHandle(LevelPointPosition,lock,i) if UselessPoint[1][1] ~= 0 then this.UselessPointHandle(UselessPoint,i) end end end function this.LevelPointHandle(pos,lock,index) local pre = newObject(this.prb) pre.transform:SetParent(this.rect.transform) pre.transform.localScale = Vector2.one pre.transform.localPosition = Vector2.New(pos[1],pos[2]) pre.name = index mainPointList[index] = {pre = pre ,lock = lock,state = 1,tip = ""} this.SetPreStats(index,lock) Util.AddOnceClick(pre,function() this.PreClickEvent(index) end) end function this.SetPreStats(index) local preTab = mainPointList[index] local lock = preTab.lock local pre = preTab.pre local prb1 = Util.GetGameObject(pre,"prb1") local prb2 = Util.GetGameObject(pre,"prb2") local prb3 = Util.GetGameObject(pre,"prb3") local js = Util.GetGameObject(pre,"js"):GetComponent("Text") local nameBg = Util.GetGameObject(prb1,"nameBg"):GetComponent("Image") local levelName = Util.GetGameObject(nameBg.gameObject,"levelName"):GetComponent("Text") prb2:SetActive(false) prb3:SetActive(false) local bxIcon = Util.GetGameObject(prb2,"Icon") local kkq = Util.GetGameObject(prb2,"kkq") kkq:SetActive(false) -- local lq = Util.GetGameObject(prb2,"lq") -- lq:SetActive(false) bxIcon:SetActive(true) js.gameObject:SetActive(false) levelName.text = index preTab.state = 1 if chapterId >= RatioNumberManager.chapterId then if index >= RatioNumberManager.levelId then for i = 1, #lock.levelLimit do local tj = lock.levelLimit[i] if tj[1] == 1 then if PlayerManager.level < tj[2] then js.text = tj[2].."级释放" preTab.state = 2 preTab.tip = js.text js.gameObject:SetActive(true) break end elseif tj[1] == 2 then if not FightPointPassManager.IsFightPointPass(tj[2]) then local gk = ConfigManager.GetConfigData(ConfigName.MainLevelConfig,tj[2]).Name js.text ="关卡"..gk.."通关锁定解除" preTab.state = 2 js.gameObject:SetActive(true) preTab.tip = js.text break end end end if index > RatioNumberManager.levelId and preTab.state ~=2 then preTab.state = 2 preTab.tip = "请通过前面的关卡" end end if preTab.state == 1 then if index == RatioNumberManager.levelId then prb2:SetActive(true) kkq:SetActive(true) bxIcon:SetActive(false) prb3:SetActive(true) end end end nameBg.sprite = this.spLoader:LoadSprite(LevleTitleBg[preTab.state]) end function this.PreClickEvent(index) local preTab = mainPointList[index] if preTab.state == 2 then PopupTipPanel.ShowTip(preTab.tip) Log("未开启:"..preTab.tip) else Log("进入"..RatioNumberManager.chapterId.."章"..index.."关") RatioNumberManager.selectLevelId = index RatioNumberManager.RestartGame() UIManager.OpenPanel(UIName.RatioNumberGamePanel) end end function this.UselessPointHandle(posArr,index) local pointList = {} local showMod=2 if chapterId < RatioNumberManager.chapterId then showMod = 1 elseif chapterId == RatioNumberManager.chapterId and index<= RatioNumberManager.levelId then showMod = 1 end for i = 1, #posArr do local pos = posArr[i] local pointPre = newObject(this.pointPre) local img = pointPre:GetComponent("Image") pointPre.transform:SetParent(this.rect.transform) pointPre.transform.localScale = Vector2.one pointPre.transform.localPosition = Vector2.New(pos[1],pos[2]) pointPre.name = index.."_"..i img.sprite = this.spLoader:LoadSprite(point[showMod]) table.insert(pointList,pointPre) end allSmallPoint[index] = pointList end function this.UselessPointHandle_Up() for i = 2, #allSmallPoint do local showMod=2 if chapterId < RatioNumberManager.chapterId then showMod = 1 elseif chapterId == RatioNumberManager.chapterId and i<= RatioNumberManager.levelId then showMod = 1 end local pointArr = allSmallPoint[i] for j = 1, #pointArr do local pointPre = pointArr[j] local img = pointPre:GetComponent("Image") img.sprite = this.spLoader:LoadSprite(point[showMod]) end end end --2----------------------------------------- function this.MenuBtnShow() local chapterData = RatioNumberLevelManager.GetAllChapterInfo() for i = 1,#chapterData do local chapter = chapterData[i] local tab = newObject(this.tabPre) tab.transform:SetParent(this.box.transform) tab.transform.localScale =Vector2.one tab.transform.localPosition = Vector3.New(tab.transform.localPosition.x,tab.transform.localPosition.y,0) tab.name="tab_"..i tabList[i] = {tab = tab , chapter = chapter , state = 1 , tip = ""} this.SetBtnInfo(i) Util.AddOnceClick(tab,function() this.TabClickEvent(i) end) end end function this.MenuBtnShowUp() for i = 1, #tabList do this.SetBtnInfo(i) end end function this.SetBtnInfo(index) local btninfo = tabList[index] local limit = btninfo.chapter.Limit local resourceIconID = btninfo.chapter.ResourceIconID local btn = btninfo.tab local img = Util.GetGameObject(btn,"Image"):GetComponent("Image") Util.GetGameObject(btn,"Text"):GetComponent("Text").text = btninfo.chapter.StageName local lock = Util.GetGameObject(btn,"lock") local stateImgStr = ConfigManager.GetConfigData(ConfigName.ArtResourcesConfig,resourceIconID[3]).Name if index == chapterId then stateImgStr = ConfigManager.GetConfigData(ConfigName.ArtResourcesConfig,resourceIconID[4]).Name end btninfo.state = 1 img.sprite = this.spLoader:LoadSprite(stateImgStr) lock:SetActive(false) if RatioNumberManager.chapterId > index then lock:SetActive(false) elseif RatioNumberManager.chapterId <= index then for i = 1, #limit do local tj = limit[i] if tj[1] == 1 then if PlayerManager.level < tj[2] then btninfo.state = 2 btninfo.tip ="通关"..tj[2].."解锁" lock:SetActive(true) break end elseif tj[1] == 2 then if not FightPointPassManager.IsFightPointPass(tj[2]) then local gk = ConfigManager.GetConfigData(ConfigName.MainLevelConfig,tj[2]).Name btninfo.tip = "通关"..gk.."解锁" btninfo.state = 2 lock:SetActive(true) break end end end if RatioNumberManager.chapterId < index and btninfo.state == 1 then btninfo.state = 2 btninfo.tip = "请清除前面的区域" lock:SetActive(true) end end end function this.TabClickEvent(index) local btninfo = tabList[index] if btninfo.state == 1 then Log("Click Chapter:"..index) chapterId = index RatioNumberManager.selectChapterId = index this.TabClickHandle(index) this.LevelShowHandle_UP() this.UselessPointHandle_Up() this.SetlevelBox() this.ChapterBgInfoUp() Log("切换:"..index) else Log("未开启:"..btninfo.tip) PopupTipPanel.ShowTip(btninfo.tip) end end function this.TabClickHandle(index) for i = 1, #tabList do local btninfo = tabList[i] local resourceIconID = btninfo.chapter.ResourceIconID local btn = btninfo.tab local img = btn:GetComponent("Image") local stateImgStr_1 = ConfigManager.GetConfigData(ConfigName.ArtResourcesConfig,resourceIconID[3]).Name local stateImgStr_2 = ConfigManager.GetConfigData(ConfigName.ArtResourcesConfig,resourceIconID[4]).Name if i == index then img.sprite = this.spLoader:LoadSprite(stateImgStr_2) else img.sprite = this.spLoader:LoadSprite(stateImgStr_1) end end end function this.LevelShowHandle_UP() local chapter = RatioNumberLevelManager.GetChapterInfo(chapterId) local levelInfo = chapter.levelInfo for i=1 ,#levelInfo do local config = levelInfo[i] local mainPoint = mainPointList[i] local lock ={levelLimit = config.LevelLimit ,passReward = config.PassReward} mainPoint.lock = lock local UselessPoint = config.UselessPoint this.SetPreStats(i) -- this.UselessPointHandle(UselessPoint,i) end end function this.ChapterBgInfoUp() local chapter = tabList[chapterId].chapter local titleStr = ConfigManager.GetConfigData(ConfigName.ArtResourcesConfig,chapter.ResourceIconID[1]).Name local bgStr = ConfigManager.GetConfigData(ConfigName.ArtResourcesConfig,chapter.ResourceIconID[2]).Name this.titleImg.sprite = this.spLoader:LoadSprite(titleStr) this.bgImg.sprite = this.spLoader:LoadSprite(bgStr) end function this.OnShowPanel() SoundManager.PlayMusic(SoundConfig.BGM_Main) chapterData = RatioNumberLevelManager.GetChapterData(chapterId) -- this.chapterNameText.text = chapterData.config.Name -- this.chapterNameImage.text = chapterData.config.Id if chapterData.node and LengthOfTable(chapterData.node) > 0 then local curchapterData = {} for key, value in pairs(chapterData.node) do table.insert(curchapterData,value) end table.sort(curchapterData, function(a,b) return a.nodeId < b.nodeId end) this.SetSingleLevel(curchapterData) sortingOrder = this.sortingOrder end if chapterData.reward and LengthOfTable(chapterData.reward) > 0 then this.SetlevelBox(chapterData.reward) end this.ShowChapterPoint() end function this.ShowChapterPoint() local allNodeDatas = {} for key, value in pairs(chapterData.node) do table.insert(allNodeDatas,value) end table.sort(allNodeDatas, function(a,b) return a.nodeId < b.nodeId end) local points = {} for i = 1, #allNodeDatas do if allNodeDatas[i].config.UselessPoint then local isOpen = this.GetCurLevelIsOpen(allNodeDatas[i])-- -1 未开启 0 开启 1 需解锁上一关 2 等级不足 for j = 1, #allNodeDatas[i].config.UselessPoint do table.insert(points,{allNodeDatas[i].config.UselessPoint[j][1],allNodeDatas[i].config.UselessPoint[j][2],isOpen}) -- if allNodeDatas[i].config.UselessPoint[j + 1] then -- local posX = allNodeDatas[i].config.UselessPoint[j][1] + (allNodeDatas[i].config.UselessPoint[j + 1][1] - allNodeDatas[i].config.UselessPoint[j][1])/2 -- local posY = allNodeDatas[i].config.UselessPoint[j][2] + (allNodeDatas[i].config.UselessPoint[j + 1][2] - allNodeDatas[i].config.UselessPoint[j][2])/2 -- table.insert(points,{posX,posY,isOpen}) -- end end end end for i = 1, math.max(#allSmallPoint , #points) do local go = allSmallPoint[i] if not go then go = newObject(this.pointPre) go.transform:SetParent(this.pointParent.transform) go.name = "pointPre"..i go.transform.localScale = Vector3.one go.transform.localPosition = Vector3.zero allSmallPoint[i] = go end go.gameObject:SetActive(false) end for i = 1, #points do allSmallPoint[i].gameObject:SetActive(true) allSmallPoint[i].transform.localPosition = Vector3.New(points[i][1],points[i][2],0) local image = allSmallPoint[i]:GetComponent("Image") image.sprite = this.spLoader:LoadSprite(points[i][3] == 0 and point[1] or point[2]) end end function this.SetSingleLevel(levelDatas) for i = math.max(#levelDatas , #levelList), 1, -1 do local go = levelList[i] if not go then go = newObject(this.prb) go.transform:SetParent(this.rect.transform) go.name = "level"..i go.transform.localScale = Vector3.one go.transform.localPosition = Vector3.zero levelList[i] = go end go.gameObject:SetActive(false) end for i = 1, #levelDatas do local levelData = levelDatas[i] levelList[i]:SetActive(true) levelList[i].transform.localPosition = Vector3.New(levelDatas[i].config.LevelPointPosition[1],levelDatas[i].config.LevelPointPosition[2],0) local prb1 = Util.GetGameObject(levelList[i], "prb1")--主 local prb2 = Util.GetGameObject(levelList[i], "prb2")--副奖励 local prb3 = Util.GetGameObject(levelList[i], "prb3")--副战斗 local UI_Effect_Kuang_JinSe = Util.GetGameObject(levelList[i], "UI_Effect_Kuang_JinSe") local isFarstEffect = Util.GetGameObject(levelList[i], "isFirst") local isOpen = this.GetCurLevelIsOpen(levelDatas[i])-- -1 未开启 0 开启 1 需解锁上一关 2 等级不足 prb1:SetActive(false) prb2:SetActive(false) prb3:SetActive(false) UI_Effect_Kuang_JinSe:SetActive(isOpen == 0 and levelData.config.StageType == FIGHTLEVEL_STAGETYPE.MainLevel) isFarstEffect:SetActive(levelData.isFirst and levelData.config.StageType == FIGHTLEVEL_STAGETYPE.MainLevel) for j = 1, 3 do Util.SetParticleSortLayer(Util.GetGameObject(isFarstEffect, "Fx_star_looping ("..j..")"),this.sortingOrder + 1) end Util.SetParticleSortLayer(UI_Effect_Kuang_JinSe,this.sortingOrder + 1) if levelData.config.StageType == FIGHTLEVEL_STAGETYPE.MainLevel then --主关卡 prb1:SetActive(true) Util.GetGameObject(prb1, "nameBg"):GetComponent("Image").sprite = this.spLoader:LoadSprite(isOpen == 0 and LevleTitleBg[1] or LevleTitleBg[2]) local name = isOpen == 0 and string.format("%s", levelData.config.Name) or string.format("%s", levelData.config.Name) Util.GetGameObject(prb1, "nameBg/levelName"):GetComponent("Text").text = name Util.GetGameObject(prb1, "openImage"):GetComponent("Image").sprite = this.spLoader:LoadSprite(isOpen == 0 and mainLevleBg[1] or mainLevleBg[2]) local bossIcon = Util.GetGameObject(prb1, "openImage/bossIcon") bossIcon:GetComponent("Image").sprite = this.spLoader:LoadSprite(GetResourcePath(ConfigManager.GetConfigData(ConfigName.HeroConfig,levelData.config.Head).Icon)) Util.SetGray(bossIcon, not (isOpen == 0)) local starParent = Util.GetGameObject(prb1, "star") if levelData.isPass then starParent:SetActive(true) for j = 1, 3 do local curIndexStarGo = Util.GetGameObject(levelList[i], "prb1/star/star (" ..j.. ")/star") curIndexStarGo:SetActive(RatioNumberLevelManager.GetCurLevelStarState(levelData.state,j)) end else starParent:SetActive(false) end Util.AddOnceClick(levelList[i], function() if isOpen == 0 then UIManager.OpenPanel(UIName.FightLevelSingleLevelInfoPopup,FIGHTLEVEL_POPUP_TYPE.MainLevel,levelData) elseif isOpen == -1 then PopupTipPanel.ShowTip("未解放") elseif isOpen == 1 then PopupTipPanel.ShowTip("通关上一关后解锁!")--("通关上一关后解锁!") elseif isOpen == 2 then PopupTipPanel.ShowTip(string.format(Language[11996], levelDatas[i].config.LevelLimit)..Language[11997]) end end) elseif levelData.config.StageType == FIGHTLEVEL_STAGETYPE.AssistantLevelReward then--副关卡奖励 prb2:SetActive(true) local prb2Icon = Util.GetGameObject(prb2, "Icon") prb2:GetComponent("Image").sprite = this.spLoader:LoadSprite(isOpen == 0 and assistantLevleDiBg[1] or assistantLevleDiBg[2]) local icon = isOpen == 0 and assistantLevleReward[1] or assistantLevleReward[2] if levelData.state == 1 then icon = assistantLevleReward[3] end if isOpen == 0 then prb2Icon:SetActive(false) else prb2Icon:SetActive(true) end prb2Icon:GetComponent("Image").sprite = this.spLoader:LoadSprite(icon) Util.GetGameObject(levelList[i], "prb2/UI_Effect_BaoXiang_KaiQi"):SetActive(levelData.state==1) Util.GetGameObject(levelList[i], "prb2/UI_Effect_BaoXiang_KaiQi/MeiKaiQi"):SetActive(false) Util.GetGameObject(levelList[i], "prb2/UI_Effect_BaoXiang_KaiQi"):GetComponent("Animator").enabled = false Util.GetGameObject(levelList[i], "prb2/UI_Effect_BaoXiang_KaiQi/KaiQi"):SetActive(levelData.state==1) Util.GetGameObject(levelList[i], "prb2/UI_Effect_BaoXiang_KeKaiQi"):SetActive(levelData.state==0 and isOpen == 0) Util.AddOnceClick(levelList[i], function() if isOpen == 0 then if levelData.state == 0 then this.mask:SetActive(true) Util.GetGameObject(levelList[i], "prb2/UI_Effect_BaoXiang_KeKaiQi"):SetActive(false) Util.GetGameObject(levelList[i], "prb2/UI_Effect_BaoXiang_KaiQi"):SetActive(true) Util.GetGameObject(levelList[i], "prb2/UI_Effect_BaoXiang_KaiQi"):GetComponent("Animator").enabled = true Util.GetGameObject(levelList[i], "prb2/UI_Effect_BaoXiang_KaiQi/MeiKaiQi"):SetActive(true) Timer.New(function() RatioNumberLevelManager.FightLevelFightBattle(levelData, function() this.OnShowPanel() this.LeftOrRightBtnClickEvent() this.mask:SetActive(false) end) end, 1, 1, true):Start() elseif levelData.state == 1 then PopupTipPanel.ShowTip("奖励已领取!")--("奖励已领取!") end elseif isOpen == -1 then PopupTipPanel.ShowTip("未解放") elseif isOpen == 1 then PopupTipPanel.ShowTip("通关上一关后解锁!")--("通关上一关后解锁!") elseif isOpen == 2 then PopupTipPanel.ShowTip(string.format(Language[11996], levelDatas[i].config.LevelLimit)..Language[11997]) end end) Util.SetParticleSortLayer(levelList[i], this.sortingOrder + 1) elseif levelData.config.StageType == FIGHTLEVEL_STAGETYPE.AssistantLevel then--副关卡战斗 prb3:SetActive(true) prb3:GetComponent("Image").sprite = this.spLoader:LoadSprite(isOpen == 0 and assistantLevleDiBg[1] or assistantLevleDiBg[2]) local icon = isOpen == 0 and assistantLevleBattle[1] or assistantLevleBattle[2] if levelData.state == 1 then icon = assistantLevleBattle[3] end Util.GetGameObject(prb3, "Icon"):GetComponent("Image").sprite = this.spLoader:LoadSprite(icon) Util.AddOnceClick(levelList[i], function() if isOpen == 0 then UIManager.OpenPanel(UIName.FightLevelSingleLevelInfoPopup,FIGHTLEVEL_POPUP_TYPE.AssistantLevel,levelData) elseif isOpen == -1 then PopupTipPanel.ShowTip("未解放") elseif isOpen == 1 then PopupTipPanel.ShowTip("通关上一关后解锁!")--("通关上一关后解锁!") elseif isOpen == 2 then PopupTipPanel.ShowTip(string.format(Language[11996], levelDatas[i].config.LevelLimit)..Language[11997]) end end) end end end function this.SetlevelBox() if RatioNumberManager.selectChapterId < RatioNumberManager.chapterId or (RatioNumberManager.selectChapterId == RatioNumberLevelManager.chapterCount and RatioNumberManager.levelId >=15) then this.totalPro.text = "16/16" this.progressBottom.fillAmount = 1 elseif RatioNumberManager.selectChapterId == RatioNumberManager.chapterId then -- body this.totalPro.text = (RatioNumberManager.levelId - 1).."/16" this.progressBottom.fillAmount=(RatioNumberManager.levelId - 1)/16 end for i = 1, 3 do local go = boxList[i] if not go then go = newObject(boxList[1]) go.transform:SetParent(this.rewardBoxParent.transform) go.name = "BoxBtn"..i go.transform.localScale = Vector3.one go.transform.localPosition = Vector3.zero boxList[i] = go end go.gameObject:SetActive(false) end local reward = RatioNumberLevelManager.GetChapterReward() local curRardId = RatioNumberManager.chapterId * 1000 + RatioNumberManager.levelId - 1 --LogError("RatioNumberManager.chapterId=="..RatioNumberManager.chapterId.." RatioNumberManager.levelId== "..RatioNumberManager.levelId) for i=1, 3 do local rewardArr = reward[i] local rewardID = rewardArr[2] --LogError("RatioNumberManager.selectChapterId=="..RatioNumberManager.selectChapterId) local index = RatioNumberManager.selectChapterId * 1000 + rewardArr[1] local rewardState = RatioNumberManager.GetRewardState(index) --LogError("index=="..index.." rewardState=="..tostring(rewardState).." currewardID=="..curRardId) boxList[i]:SetActive(true) Util.GetGameObject(boxList[i], "getFinish"):SetActive(rewardState) Util.GetGameObject(boxList[i], "redPoint"):SetActive(curRardId >= index and not rewardState) Util.AddOnceClick(boxList[i],function() this.FindBoxRewardInfo(rewardID,rewardArr[1]) local rewardState = RatioNumberManager.GetRewardState(index) Log("NetManager.CompareNumBonusRequest") if curRardId >= index and not rewardState then NetManager.CompareNumBonusRequest(index,function(msg) UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1, function() Util.GetGameObject(boxList[i], "getFinish"):SetActive(true) Util.GetGameObject(boxList[i], "redPoint"):SetActive(false) end) end) end end) end end --左右按钮 function this.LeftOrRightBtnClickEvent(index) --index 为空时 刷新下左右按钮的显示 下一章节未开启的时候不显示右按钮 相反 local upChapterId = chapterData.chapterId - 1 local upChapterData = RatioNumberLevelManager.GetChapterData(upChapterId) local canLeft = true if upChapterData and upChapterId <= RatioNumberLevelManager.GetCurChapterId() then this.leftBtn:SetActive(true) else canLeft = false this.leftBtn:SetActive(false) end local downChapterId = chapterData.chapterId + 1 local downChapterData = RatioNumberLevelManager.GetChapterData(downChapterId) local canRight = true if downChapterData and downChapterId <= RatioNumberLevelManager.GetCurChapterId() then this.rightBtn:SetActive(true) else canRight = false this.rightBtn:SetActive(false) end if index and index == 1 and canLeft then--左 chapterId = upChapterId chapterData = upChapterData this.OnShowPanel() this.LeftOrRightBtnClickEvent() elseif index and index == 2 and canRight then--右 chapterId = downChapterId chapterData = downChapterData this.OnShowPanel() this.LeftOrRightBtnClickEvent() end end function this.GetCurLevelIsOpen(levelDatas) if levelDatas.config.LevelLimit == -1 then return -1 end if levelDatas.nodeId > RatioNumberLevelManager.GetCurChapterLevelId() then --特殊判断 分主关卡和副关卡 local upMainLevelConfig = RatioNumberLevelManager.GetChapterLevelData(levelDatas.config.Chapter,levelDatas.config.NextLevel) if not upMainLevelConfig.isPass then return 1 end end if levelDatas.config.LevelLimit > PlayerManager.level then return 2 end return 0 end --宝箱奖励预览 function this.FindBoxRewardInfo(rewardID,star) this.RewardPanelGetInfo.text = string.format(" ★%s星奖励:",star) local showItem = ConfigManager.GetConfigData(ConfigName.RewardGroup,rewardID) local reward ={} if showItem and showItem.ShowItem then reward = showItem.ShowItem end if reward then for i = 1, math.max(#allMissionDailyBoxItemPres, #reward) do local go = allMissionDailyBoxItemPres[i] if not go then go = SubUIManager.Open(SubUIConfig.ItemView, this.RewardPanelGrid.transform) go.gameObject.name = "frame"..i allMissionDailyBoxItemPres[i] = go end go.gameObject:SetActive(false) end for i = 1, #reward do allMissionDailyBoxItemPres[i].gameObject:SetActive(true) allMissionDailyBoxItemPres[i]:OnOpen(false,reward[i],0.75) end end this.rewardMaskBtn:SetActive(true) end --界面关闭时调用(用于子类重写) function RatioNumberLevelPanel:OnClose() end --界面销毁时调用(用于子类重写) function RatioNumberLevelPanel:OnDestroy() allMissionDailyBoxItemPres = {} mainPointList =nil tabList = nil allSmallPoint = nil this.spLoader:Destroy() -- SubUIManager.Close(this.UpView) end return RatioNumberLevelPanel