-- 异构阵线2.0章节界面 local XUiMaverick2Explore = XLuaUiManager.Register(XLuaUi, "UiMaverick2Explore") local XUiDoomsdayDragZoomProxy = require("XUi/XUiDoomsday/XUiDoomsdayDragZoomProxy") local Select = CS.UiButtonState.Select local Normal = CS.UiButtonState.Normal local StagePrefabName = { "GridMaverick2Stage", -- 主线M "GridMaverick2StageCamp", -- 主线Boss "GridMaverick2Stage", -- 角色 "GridMaverick2Stage", -- 挑战 "GridMaverick2Stage", -- 每日关卡 "GridMaverick2Stage", -- 积分关卡 } local CSVector2 = CS.UnityEngine.Vector2 local CSVector3 = CS.UnityEngine.Vector3 local ANIM_TIME = 0.5 --镜头移动动画时间 local SELECT_STAGE_WIDTH_OFFSET = 0.382 -- 选中关卡时,聚焦关卡的宽度偏移值 local GUIDE_DAILY_CHAPTER_ID = 2 -- 指引每日关卡的章节id function XUiMaverick2Explore:OnAwake() -- 章节页签 self.BtnList = {} -- 当前显示页签按钮列表 self.ChapterCfgs = {} --页签对应章节配置表列表 self.SelectTabIndex = nil -- 当前选中页签下标 self.IsDifficult = nil -- 获取当前是否困难模式 self.UnOpenTabList = {} -- 未开放的页签列表 -- 章节地图 self.MapDic = {} -- 地图对象,有根节点预制体、关卡预制体列表 self.StageLoadDic = {} -- 记录地图节点加载完的关卡预置,包括普通难度和困难难度 self.StageIdToUiObj = {} -- 记录关卡id对应的关卡预置的UiObject self.SelectStageId = nil -- 当前选中的关卡id self:SetButtonCallBack() self:InitTimes() self:InitMap() self:InitAssetPanel() self:PlayChapterEndMovie() self.DragProxy = XUiDoomsdayDragZoomProxy.New(self.PanelDrag) self.Stage.gameObject:SetActiveEx(false) self.StageDifficult.gameObject:SetActiveEx(false) end function XUiMaverick2Explore:OnStart() end function XUiMaverick2Explore:OnEnable() self.Super.OnEnable(self) self:InitLastSelect() self:Refresh() -- 战斗胜利回到关卡界面 XDataCenter.Maverick2Manager.PlayBGM() end function XUiMaverick2Explore:OnDisable() end function XUiMaverick2Explore:SetButtonCallBack() XUiHelper.RegisterClickEvent(self, self.BtnBack, self.OnClickBtnClose) XUiHelper.RegisterClickEvent(self, self.BtnMainUi, function() XLuaUiManager.RunMain() end) XUiHelper.RegisterClickEvent(self, self.BtnMember, function() XLuaUiManager.Open("UiMaverick2Character") end) XUiHelper.RegisterClickEvent(self, self.BtnRank, function() XDataCenter.Maverick2Manager.OpenUiRank() end) XUiHelper.RegisterClickEvent(self, self.BtnMental, function() XLuaUiManager.Open("UiMaverick2Talent") end) XUiHelper.RegisterClickEvent(self, self.BtnNightmareStage, function() self:OnChangeDifficult(true) end) XUiHelper.RegisterClickEvent(self, self.BtnNormalStage, function() self:OnChangeDifficult(false) end) self:BindHelpBtn(self.BtnHelp, XMaverick2Configs.GetHelpKey()) end function XUiMaverick2Explore:OnClickBtnClose() self:Close() end function XUiMaverick2Explore:OnChangeDifficult(isDifficult) self.IsDifficult = isDifficult --self.SelectTabIndex = nil -- 获取章节列表 self.ChapterCfgs = self:GetShowChapterCfgs() -- 确定当前选中页签下标 local tabIndex = 1 local chapterId = XDataCenter.Maverick2Manager.GetLastSelChapterId() for index, chapterCfg in ipairs(self.ChapterCfgs) do if chapterCfg.ChapterId == chapterId then tabIndex = index end end self:PlayAnimation("QieHuan") self:RefreshTabList(tabIndex) end function XUiMaverick2Explore:Refresh() -- 主线指引提示 self:RefreshMainLineTips() -- 心智等级 self:RefreshMentalLevel() XDataCenter.Maverick2Manager.CheckMentalLvUp(function() self:RefreshMentalLevel() end) -- 新角色解锁/支援技能解锁弹窗tips self:ShowUnlockTips() self:UpdateAssetPanel() end function XUiMaverick2Explore:InitTimes() self:SetAutoCloseInfo(XDataCenter.Maverick2Manager.GetActivityEndTime(), function(isClose) if isClose then XLuaUiManager.RunMain() XUiManager.TipMsg(XUiHelper.GetText("ActivityAlreadyOver")) else self:RefreshTabListOpenTime() self:RefreshDailyListTime() end end) end function XUiMaverick2Explore:OnGetEvents() return { XEventId.EVENT_MAVERICK2_UPDATE_DAILY } end function XUiMaverick2Explore:OnNotify(evt) if evt == XEventId.EVENT_MAVERICK2_UPDATE_DAILY then self:RefreshMap() end end ---------------------------------------- 章节页签 begin ---------------------------------------- -- 初始化上次的选中 function XUiMaverick2Explore:InitLastSelect() local chapterId = XDataCenter.Maverick2Manager.GetLastSelChapterId() local config = XMaverick2Configs.GetMaverick2Chapter(chapterId, true) local isDifficult = config.IfFlag == 1 and XDataCenter.Maverick2Manager.IsChapterUnlock(chapterId) self:OnChangeDifficult(isDifficult) end -- 获取当前显示的章节配置表列表 function XUiMaverick2Explore:GetShowChapterCfgs() local showCfgs = {} local cfgs = XMaverick2Configs.GetMaverick2Chapter() for _, cfg in ipairs(cfgs) do local isDifficult = cfg.IfFlag == 1 if isDifficult == self.IsDifficult and XDataCenter.Maverick2Manager.IsChapterUnlock(cfg.ChapterId) then table.insert(showCfgs, cfg) end end return showCfgs end -- 刷新章节页签列表 function XUiMaverick2Explore:RefreshTabList(selectIndex) -- 刷新页签ui self.BtnList = {} self.UnOpenTabList = {} XUiHelper.RefreshCustomizedList(self.BtnContent.transform, self.BtnTab.gameObject, #self.ChapterCfgs, function(index, go) local chapterCfg = self.ChapterCfgs[index] local btn = go:GetComponent("XUiButton") table.insert(self.BtnList, btn) btn:SetNameByGroup(0, chapterCfg.Name) local passStageCnt, allStageCnt = XDataCenter.Maverick2Manager.GetChapterProgress(chapterCfg.ChapterId) local isPass = passStageCnt >= allStageCnt local txtProgress = isPass and "" or XUiHelper.GetText("Maverick2ChapterCompleteProgress", math.floor(passStageCnt * 100 / allStageCnt)) btn:SetNameByGroup(1, txtProgress) btn:ShowTag(isPass) btn:SetButtonState(Normal) local isRed = XDataCenter.Maverick2Manager.IsChapterShowRed(chapterCfg.ChapterId) btn:ShowReddot(isRed) -- 开启时间 local uiObj = go:GetComponent("UiObject") local txtProgress = uiObj:GetObject("TxtProgress") local txtOpenTime = uiObj:GetObject("TxtOpenTime") self:RefreshTabOpenTime(chapterCfg.ChapterId, txtProgress, txtOpenTime) local isOpen = XDataCenter.Maverick2Manager.IsChapterOpenTime(chapterCfg.ChapterId) if not isOpen then table.insert(self.UnOpenTabList, { ChapterId = chapterCfg.ChapterId, TxtProgress = txtProgress, TxtOpenTime = txtOpenTime }) end -- 章节解锁动画 if isRed then uiObj:GetObject("BtnTabEnable").transform:PlayTimelineAnimation() end local tempIndex = index XUiHelper.RegisterClickEvent(self, btn, function() self:OnBtnTabClick(tempIndex) end) end) -- 刷新切换章节组按钮 self:RefreshSwitchChapterListBtn() -- 刷新ButtonGroup组件 self.BtnContent:Init(self.BtnList,function(index) self:OnBtnTabClick(index) end) self.BtnContent:SelectIndex(selectIndex) end -- 刷新章节页签列表的开启时间 function XUiMaverick2Explore:RefreshTabListOpenTime() if #self.UnOpenTabList > 0 then local cnt = #self.UnOpenTabList for i = cnt, 1, -1 do local tabInfo = self.UnOpenTabList[i] self:RefreshTabOpenTime(tabInfo.ChapterId, tabInfo.TxtProgress, tabInfo.TxtOpenTime) local isOpen = XDataCenter.Maverick2Manager.IsChapterOpenTime(tabInfo.ChapterId) if isOpen then table.remove(self.UnOpenTabList, i) end end end end -- 刷新每日关卡的倒计时时间 function XUiMaverick2Explore:RefreshDailyListTime() local dailyStageDic = XDataCenter.Maverick2Manager.GetDailyStage() for stageId, isExit in pairs(dailyStageDic) do if stageId and isExit and self.StageIdToUiObj[stageId] then local refreshTime = XTime.GetSeverNextRefreshTime() local nowTime = XTime.GetServerNowTimestamp() local showTime = XUiHelper.GetTime(refreshTime - nowTime, XUiHelper.TimeFormatType.ACTIVITY) local textTime = self.StageIdToUiObj[stageId]:GetObject("TxtTime") textTime.text = XUiHelper.GetText("DrawFreeTicketCoolDown", showTime) end end end -- 刷新章节页签的开启时间 function XUiMaverick2Explore:RefreshTabOpenTime(chapterId, txtProgress, txtOpenTime) local isOpen = XDataCenter.Maverick2Manager.IsChapterOpenTime(chapterId) txtProgress.gameObject:SetActiveEx(isOpen) txtOpenTime.gameObject:SetActiveEx(not isOpen) if not isOpen then local openTime = XDataCenter.Maverick2Manager.GetChapterOpenTime(chapterId) txtOpenTime.text = XUiHelper.GetTime(openTime, XUiHelper.TimeFormatType.DAY_HOUR) end end function XUiMaverick2Explore:OnBtnTabClick(index) if self.SelectTabIndex == index then return end -- 检测页签是否到开放时间 local chapterId = self.ChapterCfgs[index].ChapterId for _, info in ipairs(self.UnOpenTabList) do if info.ChapterId == chapterId then XUiManager.TipText("RiftChapterTimeLimit") self.BtnContent:SelectIndex(self.SelectTabIndex) return end end -- 切换按钮状态 self.SelectTabIndex = index for index, btn in ipairs(self.BtnList) do local state = index == self.SelectTabIndex and Select or Normal btn:SetButtonState(state) end -- 刷新列表 self:RefreshMap() -- 保存最后选中章节记录 XDataCenter.Maverick2Manager.SaveLastSelChapterId(chapterId) -- 移除红点 self.BtnList[index]:ShowReddot(false) local characterId = self:GetCurChapterId() XDataCenter.Maverick2Manager.RemveChapterRed(characterId) -- 播放剧情 self:PlayChapterStartMovie() end function XUiMaverick2Explore:GetCurChapterId() local chapterId = self.ChapterCfgs[self.SelectTabIndex].ChapterId return chapterId end ---------------------------------------- 章节页签 end ---------------------------------------- ---------------------------------------- 章节地图 begin ---------------------------------------- -- 播放第一次打开章节的开幕剧情 function XUiMaverick2Explore:PlayChapterStartMovie() local curChapterId = self:GetCurChapterId() XDataCenter.Maverick2Manager.PlayChapterMovie(curChapterId, function() -- 剧情播放结束,重新播音效 XDataCenter.Maverick2Manager.PlayBGM() end) end -- 初始化预制体上的地图 function XUiMaverick2Explore:InitMap() self.MapDic = {} local index = 1 while(self["Map" .. index]) do local map = {} self.MapDic[index] = map local mapGo = self["Map" .. index] map.gameObject = mapGo.gameObject map.StageGos = {} local maxCnt = mapGo.transform.childCount for i = 1, maxCnt do local stageGo = mapGo:GetObject("Stage"..i) if stageGo then table.insert(map.StageGos, stageGo) end end index = index + 1 end end -- 刷新地图 function XUiMaverick2Explore:RefreshMap() local chapterId = self:GetCurChapterId() local config = XMaverick2Configs.GetMaverick2Chapter(chapterId, true) -- 显示当前章节的地图 for _, map in pairs(self.MapDic) do map.gameObject:SetActiveEx(false) end -- 刷新背景图 self.RImgMapBg:SetRawImage(config.MapBg) -- 刷新特效 local showEffect = config.MapEffect and config.MapEffect ~= "" self.Effect.gameObject:SetActiveEx(showEffect) if showEffect then self.Effect:LoadUiEffect(config.MapEffect) end -- 刷新当前地图关卡 self.MapDic[config.Map].gameObject:SetActiveEx(true) local stageGos = self.MapDic[config.Map].StageGos for _, stageGo in ipairs(stageGos) do stageGo.gameObject:SetActiveEx(false) end local stageCfgs = XMaverick2Configs.GetChapterStages(chapterId) for index, stageCfg in ipairs(stageCfgs) do local stageGo = stageGos[stageCfg.IconPos] local isUnlock = false local isActiveDailyStage = false if stageCfg then isUnlock = XDataCenter.Maverick2Manager.IsStageUnlock(stageCfg.StageId) isActiveDailyStage = XDataCenter.Maverick2Manager.IsShowDailyStage(stageCfg.StageId) end local isShowStage = isUnlock or isActiveDailyStage if isShowStage then stageGo.gameObject:SetActiveEx(true) self:RefreshStage(stageCfg, stageGo) end end -- 刷新每日关卡倒计时 self:RefreshDailyListTime() -- 聚焦关卡 local focusStage = nil -- 聚焦关卡 for _, stageCfg in ipairs(stageCfgs) do local isCompare = false if stageCfg.StageType == XMaverick2Configs.StageType.Daily then local isActive = XDataCenter.Maverick2Manager.IsShowDailyStage(stageCfg.StageId) isCompare = isActive else local isUnlock = XDataCenter.Maverick2Manager.IsStageUnlock(stageCfg.StageId) local isPass = XDataCenter.Maverick2Manager.IsStagePassed(stageCfg.StageId) isCompare = isUnlock and not isPass end if isCompare then if focusStage == nil or XMaverick2Configs.FocusStageOrder[stageCfg.StageType] < XMaverick2Configs.FocusStageOrder[focusStage.StageType] then focusStage = stageCfg end end end -- 特写指引聚焦每日关卡的章节id local isNotOpenedDaily = not XDataCenter.Maverick2Manager.IsOpenedDailyStage() if chapterId == GUIDE_DAILY_CHAPTER_ID and isNotOpenedDaily then for _, stageCfg in ipairs(stageCfgs) do if stageCfg.StageType == XMaverick2Configs.StageType.Daily then local isActive = XDataCenter.Maverick2Manager.IsShowDailyStage(stageCfg.StageId) if isActive then focusStage = stageCfg end end end end if focusStage then local uiObj = self.StageIdToUiObj[focusStage.StageId] uiObj:GetObject("Effect").gameObject:SetActiveEx(true) self:FocusStage(uiObj.gameObject, nil, nil, ANIM_TIME) else self:FocusStage(nil, nil, nil, ANIM_TIME) end end function XUiMaverick2Explore:RefreshStage(stageCfg, goParent) local stageId = stageCfg.StageId local instanceID = goParent:GetInstanceID() -- 隐藏Stage和StageDifficult两种关卡 if self.StageLoadDic[instanceID] then local stage = self.StageLoadDic[instanceID].Stage if stage then stage.gameObject:SetActiveEx(false) end local stageDifficult = self.StageLoadDic[instanceID].StageDifficult if stageDifficult then stageDifficult.gameObject:SetActiveEx(false) end else self.StageLoadDic[instanceID] = {} end -- 显示、加载、刷新当前关卡 local isDifficult = self:IsCurDifficult() local uiObj = isDifficult and self.StageLoadDic[instanceID].StageDifficult or self.StageLoadDic[instanceID].Stage -- 创建预制体 if not uiObj then if isDifficult then local go = CS.UnityEngine.GameObject.Instantiate(self.StageDifficult, goParent) self.StageLoadDic[instanceID].StageDifficult = go uiObj = go:GetComponent("UiObject") else local go = CS.UnityEngine.GameObject.Instantiate(self.Stage, goParent) self.StageLoadDic[instanceID].Stage = go uiObj = go:GetComponent("UiObject") end end self.StageIdToUiObj[stageId] = uiObj -- 刷新ui uiObj.gameObject:SetActiveEx(true) uiObj:GetObject("BgNormal").gameObject:SetActiveEx(true) uiObj:GetObject("BgSelect").gameObject:SetActiveEx(false) local typeConfig = XMaverick2Configs.GetMaverick2StageType(stageCfg.StageType, true) uiObj:GetObject("IconNormal"):SetSprite(typeConfig.Icon) uiObj:GetObject("IconSelect"):SetSprite(typeConfig.Icon) local isPass = XDataCenter.Maverick2Manager.IsStagePassed(stageId) uiObj:GetObject("ImgClearNormal").gameObject:SetActiveEx(isPass) uiObj:GetObject("ImgClearSelect").gameObject:SetActiveEx(isPass) uiObj:GetObject("Effect").gameObject:SetActiveEx(false) -- 积分关卡 local isScore = XMaverick2Configs.StageType.Score == stageCfg.StageType local txtScore = uiObj:GetObject("TxtScore") txtScore.gameObject:SetActiveEx(isScore) if isScore then local record = XDataCenter.Maverick2Manager.GetScoreStageRecord() txtScore.text = record.Score and tostring(record.Score) or "0" end -- 每日关卡,这里只控制显示,刷新在RefreshDailyListTime()函数 local isDaily = stageCfg.StageType == XMaverick2Configs.StageType.Daily local txtTime = uiObj:GetObject("TxtTime") txtTime.gameObject:SetActiveEx(isDaily) -- 注册事件 XUiHelper.RegisterClickEvent(self, uiObj:GetObject("BtnClick"), function() self:OnClickStage(stageId) end) -- 解锁动画 local isPlay = XDataCenter.Maverick2Manager.IsStagePlayUnlockAnim(stageId) if isPlay then XDataCenter.Maverick2Manager.SetStagePlayUnlockAnim(stageId) uiObj:GetObject("AnimEnable").transform:PlayTimelineAnimation() local line = goParent:Find("GridMaverick2StageLine") if line then local lineUiObj = line:GetComponent("UiObject") lineUiObj:GetObject("AnimEnable"):PlayTimelineAnimation() end end end function XUiMaverick2Explore:OnClickStage(stageId) if self.SelectStageId == stageId then return end self:CloseStageSelect() self:OpenStageSelect(stageId) self:CloseAllStageTipsEffect() local uiObj = self.StageIdToUiObj[stageId] self:FocusStage(uiObj.gameObject, SELECT_STAGE_WIDTH_OFFSET, nil, ANIM_TIME) -- 选中动画 uiObj:GetObject("BgSelectEnable").transform:PlayTimelineAnimation(function() uiObj:GetObject("BgSelectLoop").transform:PlayTimelineAnimation(nil, nil, CS.UnityEngine.Playables.DirectorWrapMode.Loop) end) end -- 打开关卡选中 function XUiMaverick2Explore:OpenStageSelect(stageId) self.SelectStageId = stageId local isDifficult = self:IsCurDifficult() local uiObj = self.StageIdToUiObj[stageId] uiObj:GetObject("BgNormal").gameObject:SetActiveEx(false) uiObj:GetObject("BgSelect").gameObject:SetActiveEx(true) XLuaUiManager.Open("UiMaverick2StageDetail", stageId, function() self:CloseStageSelect() end) end -- 关闭关卡选中 function XUiMaverick2Explore:CloseStageSelect() if not self.SelectStageId then return end local stageId = self.SelectStageId self.SelectStageId = nil local isDifficult = self:IsCurDifficult() local uiObj = self.StageIdToUiObj[stageId] uiObj:GetObject("BgNormal").gameObject:SetActiveEx(true) uiObj:GetObject("BgSelect").gameObject:SetActiveEx(false) end -- 聚焦在关卡 function XUiMaverick2Explore:FocusStage(stageObj, widthOffset, heightOffset, duration, easeType) widthOffset = widthOffset or 0.5 heightOffset = heightOffset or 0.5 duration = duration or 0 easeType = easeType or CS.DG.Tweening.Ease.Linear local midScreenPos = CS.UnityEngine.Vector2(CS.UnityEngine.Screen.width * widthOffset, CS.UnityEngine.Screen.height * heightOffset) local _, midPos = CS.UnityEngine.RectTransformUtility.ScreenPointToLocalPointInRectangle( self.PanelStages, midScreenPos, CS.UnityEngine.Camera.main ) local offset = CSVector3(midPos.x, midPos.y, 0) if stageObj then -- 避免地图节点缩放影响 local stagePos = stageObj.transform.parent.localPosition local mapGo = stageObj.transform.parent.parent stagePos.x = stagePos.x * mapGo.localScale.x stagePos.y = stagePos.y * mapGo.localScale.y offset = offset - stagePos end -- 避免缩放影响 offset.x = offset.x * self.PanelStages.localScale.x offset.y = offset.y * self.PanelStages.localScale.y self.AnimOffset = offset self.PanelStages:DOLocalMove(self.PanelStages.localPosition + offset, duration) end -- 关闭所有关卡提示特效 function XUiMaverick2Explore:CloseAllStageTipsEffect() local chapterId = self:GetCurChapterId() local stageCfgs = XMaverick2Configs.GetChapterStages(chapterId) for _, stageCfg in ipairs(stageCfgs) do local uiObj = self.StageIdToUiObj[stageCfg.StageId] if uiObj then uiObj:GetObject("Effect").gameObject:SetActiveEx(false) end end end ---------------------------------------- 章节地图 end ---------------------------------------- ---------------------------------------- 资源栏 begin ---------------------------------------- function XUiMaverick2Explore:InitAssetPanel() self.AssetActivityPanel = XUiPanelActivityAsset.New(self.PanelSpecialTool) XDataCenter.ItemManager.AddCountUpdateListener( { XDataCenter.ItemManager.ItemId.Maverick2Coin, }, handler(self, self.UpdateAssetPanel), self.AssetActivityPanel ) end function XUiMaverick2Explore:UpdateAssetPanel() self.AssetActivityPanel:Refresh( { XDataCenter.ItemManager.ItemId.Maverick2Coin, } ) end ---------------------------------------- 资源栏 end ---------------------------------------- -- 刷新主线提示目的 function XUiMaverick2Explore:RefreshMainLineTips() local tips = nil local stageCfgs = XMaverick2Configs.GetMaverick2Stage() for _, stageCfg in pairs(stageCfgs) do local isUnlock = XDataCenter.Maverick2Manager.IsStageUnlock(stageCfg.StageId) local isPass = XDataCenter.Maverick2Manager.IsStagePassed(stageCfg.StageId) if isUnlock and not isPass and stageCfg.MainlineTips then tips = stageCfg.MainlineTips break end end local isShow = tips ~= nil self.PanelGuide.gameObject:SetActiveEx(isShow) if isShow then self.TxtGuideTips.text = tips local isDifficult = self:IsCurDifficult() self.RImgGuideNormal.gameObject:SetActiveEx(not isDifficult) self.RImgGuidNightmare.gameObject:SetActiveEx(isDifficult) end end -- 刷新心智等级 function XUiMaverick2Explore:RefreshMentalLevel() local mentalLv = XDataCenter.Maverick2Manager.GetMentalLv() local maxMentalLv = XDataCenter.Maverick2Manager.GetMentalMaxLv() self.MentalLevel.text = tostring(mentalLv) self.MentalProgress.fillAmount = mentalLv / maxMentalLv local isMax = mentalLv == maxMentalLv if isMax then self.TxtUnitNumber.text = "MAX" self.RawImageUnit.gameObject:SetActiveEx(false) self.MentalProgress.fillAmount = 1 else local unitCnt = XDataCenter.Maverick2Manager.GetUnitCount() local config = XMaverick2Configs.GetMaverick2Mental(mentalLv + 1, true) self.TxtUnitNumber.text = string.format("%s/%s", unitCnt, config.NeedUnit) self.RawImageUnit.gameObject:SetActiveEx(true) local itemIcon = XItemConfigs.GetItemIconById(XDataCenter.ItemManager.ItemId.Maverick2Unit) self.RawImageUnit:SetRawImage(itemIcon) self.MentalProgress.fillAmount = unitCnt / config.NeedUnit end -- 红点 local robotId = XDataCenter.Maverick2Manager.GetLastSelRobotId() local isRed = XDataCenter.Maverick2Manager.IsShowTalentRed(robotId) self.BtnMental.transform:Find("Red").gameObject:SetActiveEx(isRed) end -- 新角色解锁/支援技能解锁弹窗tips function XUiMaverick2Explore:ShowUnlockTips() XDataCenter.Maverick2Manager.CheckRobotUnlock() XDataCenter.Maverick2Manager.CheckAssistTalentLvUp() end -- 当前是否处于困难模式 function XUiMaverick2Explore:IsCurDifficult() return self.IsDifficult == true end -- 刷新切换章节组按钮 function XUiMaverick2Explore:RefreshSwitchChapterListBtn() local isUnlock = XDataCenter.Maverick2Manager.IsUnlockDifficultChapterList() if isUnlock then local isDifficult = self:IsCurDifficult() self.BtnNormalStage.gameObject:SetActiveEx(isDifficult) self.BtnNightmareStage.gameObject:SetActiveEx(not isDifficult) else self.BtnNormalStage.gameObject:SetActiveEx(false) self.BtnNightmareStage.gameObject:SetActiveEx(false) end end -- 战斗结束回到主界面播章节结束剧情 function XUiMaverick2Explore:PlayChapterEndMovie() local lastPassStageId = XDataCenter.Maverick2Manager.GetLastPassStageId() if lastPassStageId then local key = XDataCenter.Maverick2Manager.GetActivitySaveKey() .. "UiMaverick2Explore_PlayChapterEndMovie_" .. tostring(lastPassStageId) if XSaveTool.GetData(key) then return end local stageCfg = XMaverick2Configs.GetMaverick2Stage(lastPassStageId, true) local movieCfgs = XMaverick2Configs.GetMaverick2Movie() for _, movieCfg in ipairs(movieCfgs) do for i, stageId in ipairs(movieCfg.CloseStageIds) do if stageId == lastPassStageId then local movieId = movieCfg.CloseMovieIds[i] XDataCenter.MovieManager.PlayMovie(movieId) XSaveTool.SaveData(key, true) return end end end end end