----- 新副本主关卡弹窗 ----- local this = {} --传入父脚本模块 local parent --传入特效层级 local sortingOrder=0 local fun local heroListGo = {} local fightLevelData = {} local liveNodes = {} local liveNames = {} local condition = {} local conditionGo = {} local HardStage = ConfigManager.GetConfig(ConfigName.HardStage) local HardStageCondition = ConfigManager.GetConfig(ConfigName.HardStageCondition) local MonsterConfig = ConfigManager.GetConfig(ConfigName.MonsterConfig) local starListEffect = {} function this:InitComponent(gameObject) this.spLoader = SpriteLoader.New() this.titleText=Util.GetGameObject(gameObject,"TitleText"):GetComponent("Text") this.power = Util.GetGameObject(gameObject, "Power/Value"):GetComponent("Text") this.sureBtn=Util.GetGameObject(gameObject,"sureBtn") this.sureBtnText=Util.GetGameObject(gameObject,"sureBtn/Text"):GetComponent("Text") --滚动条根节点 heroListGo = {} for i = 1, 6 do heroListGo[i] = Util.GetGameObject(gameObject, "RoleGrid/Bg"..i.."/Hero"..i) end starListEffect = {} conditionGo = {} for i = 1, 3 do conditionGo[i] = Util.GetGameObject(gameObject, "Root/item (" .. i ..")") starListEffect[i] = Util.GetGameObject(gameObject, "isFirst/Fx_star_looping (" .. i ..")") end this.Root = Util.GetGameObject(gameObject,"Root") this.backBtn=Util.GetGameObject(gameObject,"BackBtn") this.BackBattleBtn=Util.GetGameObject(gameObject,"BackBattleBtn") this.rewardBtn=Util.GetGameObject(gameObject,"rewardBtn") this.isFirstEffect = Util.GetGameObject(gameObject,"isFirst") end function this:BindEvent() Util.AddClick(this.sureBtn, function() UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.FIGHTLEVEL,fightLevelData) end) Util.AddClick(this.backBtn, function() parent:ClosePanel() if fun then fun() fun = nil end end) Util.AddClick(this.BackBattleBtn, function() FightLevelManager.HardStageReportRequset(fightLevelData, function() UIManager.OpenPanel(UIName.FightLevelSingleLevelInfoPopup,FIGHTLEVEL_POPUP_TYPE.MainLevel,fightLevelData) end) end) Util.AddClick(this.rewardBtn, function() UIManager.OpenPanel(UIName.FightLevelSingleLevelInfoPopup,FIGHTLEVEL_POPUP_TYPE.MainLevelReward,fightLevelData,function() UIManager.OpenPanel(UIName.FightLevelSingleLevelInfoPopup,FIGHTLEVEL_POPUP_TYPE.MainLevel,fightLevelData) end) end) end function this:AddListener() Game.GlobalEvent:AddEvent(GameEvent.FightLevel.MainLevelInfoRefresh, this.MainLevelInfoRefresh) end function this:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.FightLevel.MainLevelInfoRefresh, this.MainLevelInfoRefresh) end function this:OnShow(_parent,...) parent=_parent sortingOrder = _parent.sortingOrder -- LogYellow("sortingOrder "..sortingOrder) --不定参中包含的不定参 _args[1]为面板类型 _args[2]之后(包括)为打开面板后传入的不定参 local args = {...} fightLevelData = args[1] --条件组数据 condition = fightLevelData.config.ConditionValue or {} this:FormationAdapter() this:ShoeCondition() end function this.MainLevelInfoRefresh() if fightLevelData then local curChapterData = FightLevelManager.GetChapterData(fightLevelData.config.Chapter) if curChapterData then fightLevelData = curChapterData.node[fightLevelData.config.Id] --条件组数据 condition = fightLevelData.config.ConditionValue or {} this:FormationAdapter() this:ShoeCondition() end else parent:ClosePanel() end end function this:ShoeCondition() this.isFirstEffect:SetActive(fightLevelData.isFirst) if starListEffect and #starListEffect > 0 then for i=1,#starListEffect do -- Util.AddParticleSortLayer(starListEffect[i], sortingOrder) Util.SetParticleSortLayer(starListEffect[i], sortingOrder + 1) end end for i = 1, math.max(#condition, #conditionGo) do local go = conditionGo[i] if not go then go = newObject(this.conditionGo[1]) go.transform:SetParent(this.Root.transform) go.transform.localScale = Vector3.one go.transform.localPosition = Vector3.zero conditionGo[i] = go end go.gameObject:SetActive(false) end for i, v in pairs(condition) do conditionGo[i]:SetActive(true) local noStarImage = Util.GetGameObject(conditionGo[i], "noStarImage") local getStarImage = Util.GetGameObject(conditionGo[i], "getStarImage") noStarImage:SetActive(not FightLevelManager.GetCurLevelStarState(fightLevelData.state,i)) getStarImage:SetActive(FightLevelManager.GetCurLevelStarState(fightLevelData.state,i)) Util.GetGameObject(conditionGo[i], "Text"):GetComponent("Text").text = i Util.GetGameObject(conditionGo[i], "infolText"):GetComponent("Text").text = HardStageCondition[v].Describe end end -- 编队数据匹配 function this:FormationAdapter() this.titleText.text="关卡情报" this.sureBtnText.text=Language[10287] this.power.text = fightLevelData.config.RecommendFightAbility for i = 1, #heroListGo do heroListGo[i]:SetActive(false) end local MonsterGroup = ConfigManager.GetConfigData(ConfigName.MonsterGroup,fightLevelData.config.MonsterGroup) if MonsterGroup and MonsterGroup.Contents and MonsterGroup.Contents[1] and #MonsterGroup.Contents[1] > 0 then for i = 1, #heroListGo do if MonsterGroup.Contents[1][i] and MonsterGroup.Contents[1][i] > 0 then local pos = i -- LogYellow("MonsterGroup.Contents[1][i] "..MonsterGroup.Contents[1][i]) Util.GetGameObject( heroListGo[pos],"Mask"):SetActive(true) Util.GetGameObject( heroListGo[pos],"StarGrid"):SetActive(true) Util.GetGameObject( heroListGo[pos],"lv"):SetActive(true) this.SetCardSingleData(heroListGo[pos],MonsterGroup.Contents[1][i],pos) heroListGo[pos]:SetActive(true) else local pos = i heroListGo[pos]:SetActive(true) Util.GetGameObject( heroListGo[pos],"Mask"):SetActive(false) Util.GetGameObject( heroListGo[pos],"StarGrid"):SetActive(false) Util.GetGameObject( heroListGo[pos],"lv"):SetActive(false) --Util.GetGameObject( heroListGo[pos],"lv/Text"):GetComponent("Text").text="" end end end end function this:OnSortingOrderChange(_sortingOrder) for i = 1, #heroListGo do -- Util.AddParticleSortLayer(heroListGo[i], _sortingOrder - sortingOrder) Util.SetParticleSortLayer(heroListGo[i], _sortingOrder + 1) end if starListEffect and #starListEffect > 0 then for i=1,#starListEffect do -- Util.AddParticleSortLayer(starListEffect[i], _sortingOrder - sortingOrder) Util.SetParticleSortLayer(starListEffect[i], _sortingOrder + 1) end sortingOrder = _sortingOrder end end --设置单个上阵英雄信息 function this.SetCardSingleData(o,monsterId, _pos) local curMonsterConfig = MonsterConfig[monsterId] o.transform.parent:GetComponent("Image").sprite=this.spLoader:LoadSprite("t_chengyuankuang_kuang") local heroConfig = ConfigManager.GetConfigData(ConfigName.HeroConfig, curMonsterConfig.MonsterId) local bg=Util.GetGameObject(o,"Bg1"):GetComponent("Image") local fg=Util.GetGameObject(o,"Bg2"):GetComponent("Image") local lv=Util.GetGameObject(o,"lv/Text"):GetComponent("Text") local pro=Util.GetGameObject(o,"Pro/Image"):GetComponent("Image") local starGrid=Util.GetGameObject(o,"StarGrid") local nameParent = Util.GetGameObject(o,"Name") -- 用于解决本地化问题 local name=Util.GetGameObject(nameParent,"Text"):GetComponent("Text") local yuanImage=Util.GetGameObject(o,"yuanImage") Util.GetGameObject(o,"hpProgress"):SetActive(false) local rage = Util.GetGameObject(o,"rageProgress/rage"):GetComponent("Image") local live = Util.GetGameObject(o, "Mask/icon"):GetComponent("RawImage") live.transform.rotation=Vector3.New(0,0,0) local liveName = GetResourcePath(heroConfig.Painting) local roleConfig = ConfigManager.GetConfigData(ConfigName.RoleConfig, heroConfig.Id) local scale = roleConfig.play_liveScale local livePos = Vector3.New(roleConfig.offset[1], roleConfig.offset[2], 0) live.texture = CardRendererManager.GetSpineTexture(_pos + 6, liveName, Vector3.one * scale, livePos, true) live.transform.localScale = Vector3.one live.transform.localPosition = Vector3.zero if heroConfig.Toward==2 then SetHEeroLiveToward(live,1) end local zs = Util.GetGameObject(o, "zs") local zsName = GetHeroCardStarZs[curMonsterConfig.Star] if zsName == "" then zs:SetActive(false) else zs:SetActive(false) zs:GetComponent("Image").sprite = this.spLoader:LoadSprite(zsName) end yuanImage:SetActive(false) lv.text=curMonsterConfig.Level -- bg.sprite = this.spLoader:LoadSprite(GetHeroCardStarBg[curMonsterConfig.Star]) fg.sprite = this.spLoader:LoadSprite(GetHeroCardStarFg[curMonsterConfig.Star]) pro.sprite=this.spLoader:LoadSprite(GetProStrImageByProNum(heroConfig.PropertyName)) SetCardStars(starGrid,curMonsterConfig.Star) if curMonsterConfig.Star > 9 then Util.GetGameObject(o,"UI_Effect_jinkuang_KaPai").gameObject:SetActive(true) else Util.GetGameObject(o,"UI_Effect_jinkuang_KaPai").gameObject:SetActive(false) end SetHeroFormationFlyEffect(o,this.spLoader,Util.GetGameObject(o,"UI_Effect_jinkuang_KaPai"),curMonsterConfig.Star,sortingOrder) name.text=GetLanguageStrById(heroConfig.ReadingName) SetTextVerTial(name.gameObject,Vector3.New(35,-7.45,0),nil,nil,8) end function this:OnClose() for i, v in pairs(liveNodes) do if v then poolManager:UnLoadLive(liveNames[i],v) liveNames[i]= nil end end end function this:OnDestroy() this.spLoader:Destroy() heroListGo = {} end return this