Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,712 @@
|
||||
local TimerManager = require("GameCore.Timer.TimerManager")
|
||||
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
|
||||
local ClientMgr = CS.ClientManager
|
||||
local AdventureModuleHelper = CS.AdventureModuleHelper
|
||||
local PanelManager = {}
|
||||
local mapUIRootTransform, mapDefinePanel, objCurPanel, objNextPanel, tbBackHistory, tbDisposablePanel, trSnapshotParent, tbTemplateSnapshot, nThresholdHistoryPanelCount, objTransitionPanel, bMainViewSkipAnimIn
|
||||
local nInputRC = 0
|
||||
local tbGoSnapShot, objPlayerInfoPanel
|
||||
local OnClearRequiredLua = function(listener, strPath)
|
||||
printLog("[Lua重载] 清除了:" .. strPath)
|
||||
package.loaded[strPath] = nil
|
||||
end
|
||||
local TakeSnapshot = function(nType)
|
||||
local goSnapshotIns
|
||||
if nType <= 0 or tbTemplateSnapshot == nil then
|
||||
return goSnapshotIns
|
||||
end
|
||||
local goT = tbTemplateSnapshot[nType]
|
||||
if goT ~= nil and goT:IsNull() == false then
|
||||
goSnapshotIns = instantiate(goT, trSnapshotParent)
|
||||
goSnapshotIns:SetActive(true)
|
||||
local goUIEffectSnapshot
|
||||
if nType == 1 or nType == 3 or nType == 4 then
|
||||
goUIEffectSnapshot = goSnapshotIns.transform:GetChild(0).gameObject
|
||||
else
|
||||
goUIEffectSnapshot = goSnapshotIns
|
||||
end
|
||||
NovaAPI.UIEffectSnapShotCapture(goUIEffectSnapshot)
|
||||
end
|
||||
return goSnapshotIns
|
||||
end
|
||||
local GetPanelName = function(nPanelId)
|
||||
for k, v in pairs(PanelId) do
|
||||
if v == nPanelId then
|
||||
return k
|
||||
end
|
||||
end
|
||||
end
|
||||
local AddTbGoSnapShot = function(nPanelId, goIns)
|
||||
if Settings.bDestroyHistoryUIInstance then
|
||||
if tbGoSnapShot == nil then
|
||||
tbGoSnapShot = {}
|
||||
end
|
||||
if goIns ~= nil then
|
||||
tbGoSnapShot[nPanelId] = {goIns = goIns, bMove = false}
|
||||
end
|
||||
end
|
||||
end
|
||||
local MoveSnapShot = function(nPanelId)
|
||||
if Settings.bDestroyHistoryUIInstance and tbGoSnapShot[nPanelId] ~= nil then
|
||||
tbGoSnapShot[nPanelId].bMove = true
|
||||
tbGoSnapShot[nPanelId].goIns.gameObject.transform:SetParent(trSnapshotParent)
|
||||
end
|
||||
end
|
||||
local GetSnapShot = function(nPanelId)
|
||||
if Settings.bDestroyHistoryUIInstance and tbGoSnapShot[nPanelId] ~= nil then
|
||||
tbGoSnapShot[nPanelId].bMove = false
|
||||
tbGoSnapShot[nPanelId].goIns.gameObject:SetActive(true)
|
||||
return tbGoSnapShot[nPanelId].goIns
|
||||
end
|
||||
end
|
||||
local HideMoveSnapshot = function()
|
||||
if Settings.bDestroyHistoryUIInstance and tbGoSnapShot ~= nil then
|
||||
for _, v in pairs(tbGoSnapShot) do
|
||||
if v.bMove and v.goIns ~= nil then
|
||||
v.goIns.gameObject:SetActive(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
local RemoveTbSnapShot = function(nPanelId)
|
||||
if Settings.bDestroyHistoryUIInstance and tbGoSnapShot[nPanelId] ~= nil then
|
||||
local goIns = tbGoSnapShot[nPanelId].goIns
|
||||
if goIns ~= nil then
|
||||
destroy(goIns)
|
||||
end
|
||||
tbGoSnapShot[nPanelId] = nil
|
||||
end
|
||||
end
|
||||
local CheckThresholdCount = function()
|
||||
if nThresholdHistoryPanelCount == nil then
|
||||
nThresholdHistoryPanelCount = ConfigTable.GetConfigNumber("MaxHistoryPanel")
|
||||
end
|
||||
local nCurCount = #tbBackHistory
|
||||
if nCurCount > nThresholdHistoryPanelCount then
|
||||
local nDelCount = nCurCount - nThresholdHistoryPanelCount
|
||||
local tbNeedRemovePanelIndex = {}
|
||||
for i = 1, nCurCount do
|
||||
if tbBackHistory[i]._nPanelId ~= PanelId.MainView then
|
||||
table.insert(tbNeedRemovePanelIndex, i)
|
||||
nDelCount = nDelCount - 1
|
||||
if nDelCount <= 0 then
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
nDelCount = #tbNeedRemovePanelIndex
|
||||
if nDelCount == nCurCount - nThresholdHistoryPanelCount then
|
||||
for i = nDelCount, 1, -1 do
|
||||
local nPanelIndex = tbNeedRemovePanelIndex[i]
|
||||
RemoveTbSnapShot(tbBackHistory[nPanelIndex]._nPanelId)
|
||||
tbBackHistory[nPanelIndex]:_Exit()
|
||||
tbBackHistory[nPanelIndex]:_Destroy()
|
||||
table.remove(tbBackHistory, nPanelIndex)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
local DoBackToTarget = function(nTargetIndex)
|
||||
if type(nTargetIndex) ~= "number" then
|
||||
nTargetIndex = 1
|
||||
end
|
||||
local nCount = #tbBackHistory
|
||||
if nTargetIndex < nCount and objCurPanel ~= nil then
|
||||
local func_PreExitDone = function()
|
||||
if objCurPanel._bAddToBackHistory == true then
|
||||
table.remove(tbBackHistory, nCount)
|
||||
end
|
||||
nCount = #tbBackHistory
|
||||
for i = nCount, nTargetIndex + 1, -1 do
|
||||
local objPanel = tbBackHistory[i]
|
||||
RemoveTbSnapShot(objPanel._nPanelId)
|
||||
objPanel:_PreExit()
|
||||
objPanel:_Exit()
|
||||
objPanel:_Destroy()
|
||||
table.remove(tbBackHistory, i)
|
||||
end
|
||||
local objBackPanel = tbBackHistory[nTargetIndex]
|
||||
if type(objBackPanel.Awake) == "function" then
|
||||
objBackPanel:Awake()
|
||||
end
|
||||
local goSnapshot = GetSnapShot(objBackPanel._nPanelId)
|
||||
objBackPanel:_PreEnter(nil, goSnapshot)
|
||||
objCurPanel:_Exit()
|
||||
objBackPanel:_Enter()
|
||||
objCurPanel:_Destroy()
|
||||
objCurPanel = objBackPanel
|
||||
printLog("[界面切换] 已返回至历史队列指定的索引:" .. tostring(nTargetIndex) .. ",界面:" .. GetPanelName(objCurPanel._nPanelId))
|
||||
end
|
||||
objCurPanel:_PreExit(func_PreExitDone, true)
|
||||
end
|
||||
PanelManager.CloseAllDisposablePanel()
|
||||
end
|
||||
local CloseCurPanel = function()
|
||||
local nLastIndex = #tbBackHistory
|
||||
if objCurPanel == nil then
|
||||
return
|
||||
end
|
||||
if objCurPanel._bAddToBackHistory ~= true or objCurPanel._bAddToBackHistory == true and 1 < nLastIndex then
|
||||
local func_DoBack = function()
|
||||
if objCurPanel._bAddToBackHistory == true then
|
||||
table.remove(tbBackHistory, nLastIndex)
|
||||
end
|
||||
nLastIndex = #tbBackHistory
|
||||
local objBackPanel = tbBackHistory[nLastIndex]
|
||||
local goSnapshot = GetSnapShot(objBackPanel._nPanelId)
|
||||
objBackPanel:_PreEnter(nil, goSnapshot)
|
||||
objCurPanel:_Exit()
|
||||
objBackPanel:_Enter()
|
||||
objCurPanel:_Destroy()
|
||||
objCurPanel = objBackPanel
|
||||
objCurPanel:_AfterEnter()
|
||||
printLog("[界面切换] 已完成:关闭当前并打开历史队列的最后一个, 当前打开的界面:" .. GetPanelName(objCurPanel._nPanelId))
|
||||
end
|
||||
RemoveTbSnapShot(objCurPanel._nPanelId)
|
||||
objCurPanel:_PreExit(func_DoBack, true)
|
||||
end
|
||||
end
|
||||
local ClosePanel = function(nPanelId)
|
||||
if objCurPanel ~= nil then
|
||||
if objCurPanel._nPanelId == nPanelId then
|
||||
CloseCurPanel()
|
||||
else
|
||||
local nCount = #tbBackHistory
|
||||
for i = nCount, 1, -1 do
|
||||
local objPanel = tbBackHistory[i]
|
||||
if objPanel._nPanelId == nPanelId then
|
||||
table.remove(tbBackHistory, i)
|
||||
objPanel:_Destroy()
|
||||
RemoveTbSnapShot(objPanel._nPanelId)
|
||||
objPanel = nil
|
||||
printLog("[界面切换] 仅关闭指定的界面:" .. GetPanelName(nPanelId))
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
local OnClosePanel = function(listener, nPanelId)
|
||||
if objNextPanel ~= nil then
|
||||
printError("[界面切换] 关闭界面:" .. GetPanelName(nPanelId) .. " 失败,上一次界面切换流程尚未完成,正在处理:" .. GetPanelName(objNextPanel._nPanelId))
|
||||
return
|
||||
end
|
||||
if type(nPanelId) == "number" then
|
||||
local bIsMainPanel = true
|
||||
if type(tbDisposablePanel) == "table" then
|
||||
for i, v in ipairs(tbDisposablePanel) do
|
||||
if v._nPanelId == nPanelId then
|
||||
EventManager.Hit("Guide_CloseDisposablePanel", nPanelId)
|
||||
v:_PreExit()
|
||||
v:_Exit()
|
||||
v:_Destroy()
|
||||
table.remove(tbDisposablePanel, i)
|
||||
RemoveTbSnapShot(v._nPanelId)
|
||||
bIsMainPanel = false
|
||||
printLog("[界面切换] 关闭了非主 Panel 界面:" .. GetPanelName(nPanelId))
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if bIsMainPanel == true then
|
||||
ClosePanel(nPanelId)
|
||||
end
|
||||
end
|
||||
end
|
||||
local OnCloseCurPanel = function(listener)
|
||||
if objCurPanel ~= nil and objCurPanel._bIsMainPanel == true then
|
||||
CloseCurPanel()
|
||||
end
|
||||
end
|
||||
local EnterNext = function()
|
||||
objNextPanel:_Enter(true)
|
||||
if objCurPanel ~= nil then
|
||||
if objCurPanel._bAddToBackHistory == true then
|
||||
objCurPanel:_SetPrefabInstance(Settings.bDestroyHistoryUIInstance)
|
||||
else
|
||||
objCurPanel:_Destroy()
|
||||
end
|
||||
end
|
||||
objCurPanel = objNextPanel
|
||||
objNextPanel = nil
|
||||
objCurPanel:_AfterEnter()
|
||||
printLog("[界面切换] 完成,当前界面:" .. tostring(objCurPanel._nPanelId) .. ", " .. GetPanelName(objCurPanel._nPanelId))
|
||||
end
|
||||
local ExitCurrent = function()
|
||||
if objCurPanel == nil then
|
||||
EnterNext()
|
||||
else
|
||||
objCurPanel:_Exit()
|
||||
EnterNext()
|
||||
end
|
||||
end
|
||||
local PreEnterNext = function()
|
||||
local goSnapshot = TakeSnapshot(objNextPanel._nSnapshotPrePanel)
|
||||
AddTbGoSnapShot(objNextPanel._nPanelId, goSnapshot)
|
||||
cs_coroutine.start(function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
objNextPanel:_PreEnter(ExitCurrent, goSnapshot)
|
||||
HideMoveSnapshot()
|
||||
end)
|
||||
end
|
||||
local PreExitCurrent = function()
|
||||
if objCurPanel == nil then
|
||||
PreEnterNext()
|
||||
else
|
||||
MoveSnapShot(objCurPanel._nPanelId)
|
||||
objCurPanel:_PreExit(PreEnterNext, true)
|
||||
end
|
||||
end
|
||||
local OnOpenPanel = function(listener, nPanelId, ...)
|
||||
if objNextPanel ~= nil then
|
||||
printError("[界面切换] 打开界面:" .. GetPanelName(nPanelId) .. " 失败,上一次界面切换流程尚未完成,正在处理:" .. GetPanelName(objNextPanel._nPanelId))
|
||||
return
|
||||
end
|
||||
if nPanelId == PanelId.MainView and 0 < #tbBackHistory then
|
||||
EventManager.Hit(EventId.CloesCurPanel)
|
||||
return
|
||||
end
|
||||
if objCurPanel ~= nil and objCurPanel._nPanelId == nPanelId then
|
||||
return
|
||||
end
|
||||
local luaClass = require(mapDefinePanel[nPanelId])
|
||||
local tbParameter = {}
|
||||
for i = 1, select("#", ...) do
|
||||
local param = select(i, ...)
|
||||
table.insert(tbParameter, param)
|
||||
end
|
||||
local nIndex = 1
|
||||
if objCurPanel ~= nil then
|
||||
nIndex = objCurPanel._nIndex + 1
|
||||
end
|
||||
local objTempPanel = luaClass.new(nIndex, nPanelId, tbParameter)
|
||||
if objTempPanel._bIsMainPanel == true then
|
||||
objNextPanel = objTempPanel
|
||||
if objNextPanel._bAddToBackHistory == true then
|
||||
table.insert(tbBackHistory, objNextPanel)
|
||||
end
|
||||
PreExitCurrent()
|
||||
else
|
||||
local _bHasOpenTips = false
|
||||
for i, v in ipairs(tbDisposablePanel) do
|
||||
if _bHasOpenTips == false then
|
||||
_bHasOpenTips = UTILS.CheckIsTipsPanel(v._nPanelId)
|
||||
end
|
||||
if v._nPanelId == nPanelId then
|
||||
MoveSnapShot(v._nPanelId)
|
||||
objTempPanel:_PreExit()
|
||||
objTempPanel:_Exit()
|
||||
objTempPanel:_Destroy()
|
||||
objTempPanel = nil
|
||||
printLog("[界面切换] 打开非主 Panel:" .. GetPanelName(nPanelId) .. " 失败,不能重复打开。")
|
||||
return
|
||||
end
|
||||
end
|
||||
objTempPanel._nIndex = objTempPanel._nIndex + #tbDisposablePanel
|
||||
objTempPanel._bIsExtraTips = _bHasOpenTips
|
||||
local goSnapshot = TakeSnapshot(objTempPanel._nSnapshotPrePanel)
|
||||
objTempPanel:_PreEnter(nil, goSnapshot)
|
||||
objTempPanel:_Enter()
|
||||
table.insert(tbDisposablePanel, objTempPanel)
|
||||
printLog("[界面切换] 打开非主 Panel:" .. GetPanelName(nPanelId) .. "成功。")
|
||||
end
|
||||
CheckThresholdCount()
|
||||
end
|
||||
local OnOpenLoading = function(listener, objTarget, callbackUpdate, callbackDone)
|
||||
if objTarget == nil or type(callbackUpdate) == "function" then
|
||||
else
|
||||
end
|
||||
end
|
||||
local OnBlockInput = function(listener, bEnable)
|
||||
if bEnable == true then
|
||||
ClientMgr.Instance:EnableInputBlock()
|
||||
else
|
||||
ClientMgr.Instance:DisableInputBlock()
|
||||
end
|
||||
end
|
||||
local OnTemporaryBlockInput = function(listener, nDuration, callback)
|
||||
if 0 < nDuration then
|
||||
local timerCallback = function()
|
||||
OnBlockInput(PanelManager, false)
|
||||
if type(callback) == "function" then
|
||||
callback()
|
||||
end
|
||||
end
|
||||
OnBlockInput(PanelManager, true)
|
||||
TimerManager.Add(1, nDuration, PanelManager, timerCallback, true, true, true)
|
||||
end
|
||||
end
|
||||
local OnMarkCurCanvasFullRectWH = function()
|
||||
if trSnapshotParent ~= nil and trSnapshotParent:IsNull() == false then
|
||||
local rt = trSnapshotParent:GetComponent("RectTransform")
|
||||
Settings.CURRENT_CANVAS_FULL_RECT_WIDTH = rt.rect.width
|
||||
Settings.CURRENT_CANVAS_FULL_RECT_HEIGHT = rt.rect.height
|
||||
Settings.CANVAS_SCALE = rt.localScale.x
|
||||
end
|
||||
end
|
||||
local function OnCSLuaManagerShutdown()
|
||||
if objCurPanel ~= nil then
|
||||
objCurPanel:_PreExit()
|
||||
objCurPanel:_Exit()
|
||||
objCurPanel:_Destroy()
|
||||
end
|
||||
EventManager.Remove(EventId.CSLuaManagerShutdown, PanelManager, OnCSLuaManagerShutdown)
|
||||
EventManager.Remove(EventId.OpenPanel, PanelManager, OnOpenPanel)
|
||||
EventManager.Remove(EventId.ClosePanel, PanelManager, OnClosePanel)
|
||||
EventManager.Remove(EventId.CloesCurPanel, PanelManager, OnCloseCurPanel)
|
||||
EventManager.Remove(EventId.OpenLoading, PanelManager, OnOpenLoading)
|
||||
EventManager.Remove(EventId.BlockInput, PanelManager, OnBlockInput)
|
||||
EventManager.Remove(EventId.TemporaryBlockInput, PanelManager, OnTemporaryBlockInput)
|
||||
EventManager.Remove("ReEnterLogin", PanelManager, PanelManager.OnConfirmBackToLogIn)
|
||||
EventManager.Remove("OnSdkLogout", PanelManager, PanelManager.OnConfirmBackToLogIn)
|
||||
EventManager.Remove(EventId.MarkFullRectWH, PanelManager, OnMarkCurCanvasFullRectWH)
|
||||
EventManager.Remove("ClearRequiredLua", PanelManager, OnClearRequiredLua)
|
||||
end
|
||||
local AddEventCallback = function()
|
||||
EventManager.Add(EventId.CSLuaManagerShutdown, PanelManager, OnCSLuaManagerShutdown)
|
||||
EventManager.Add(EventId.OpenPanel, PanelManager, OnOpenPanel)
|
||||
EventManager.Add(EventId.ClosePanel, PanelManager, OnClosePanel)
|
||||
EventManager.Add(EventId.CloesCurPanel, PanelManager, OnCloseCurPanel)
|
||||
EventManager.Add(EventId.OpenLoading, PanelManager, OnOpenLoading)
|
||||
EventManager.Add(EventId.BlockInput, PanelManager, OnBlockInput)
|
||||
EventManager.Add(EventId.TemporaryBlockInput, PanelManager, OnTemporaryBlockInput)
|
||||
EventManager.Add("ReEnterLogin", PanelManager, PanelManager.OnConfirmBackToLogIn)
|
||||
EventManager.Add("OnSdkLogout", PanelManager, PanelManager.OnConfirmBackToLogIn)
|
||||
EventManager.Add(EventId.MarkFullRectWH, PanelManager, OnMarkCurCanvasFullRectWH)
|
||||
EventManager.Add("ClearRequiredLua", PanelManager, OnClearRequiredLua)
|
||||
end
|
||||
local InitGuidePanel = function()
|
||||
if AVG_EDITOR == true then
|
||||
return
|
||||
end
|
||||
local GuidePanel = require("Game.UI.Guide.GuidePanel")
|
||||
local objGuidePanel = GuidePanel.new(AllEnum.UI_SORTING_ORDER.Guide, PanelId.Guide, {})
|
||||
objGuidePanel:_PreEnter()
|
||||
objGuidePanel:_Enter()
|
||||
end
|
||||
local InitTransitionPanel = function()
|
||||
local TransitionPanel = require("Game.UI.TransitionEx.TransitionPanel")
|
||||
objTransitionPanel = TransitionPanel.new(AllEnum.UI_SORTING_ORDER.Transition, PanelId.Transition, {})
|
||||
objTransitionPanel:_PreEnter()
|
||||
objTransitionPanel:_Enter()
|
||||
end
|
||||
local CreateCBTTips = function()
|
||||
if EXE_EDITOR == true then
|
||||
return
|
||||
end
|
||||
local GameResourceLoader = require("Game.Common.Resource.GameResourceLoader")
|
||||
local ResType = GameResourceLoader.ResType
|
||||
local prefab = GameResourceLoader.LoadAsset(ResType.Any, Settings.AB_ROOT_PATH .. "UI/CBT_Tips/CBT_TipsPanel.prefab", typeof(Object), "UI", -999)
|
||||
local trParent = PanelManager.GetUIRoot(AllEnum.SortingLayerName.UI_Top)
|
||||
local goPrefabInstance = instantiate(prefab, trParent)
|
||||
goPrefabInstance.name = prefab.name
|
||||
goPrefabInstance.transform:SetAsLastSibling()
|
||||
local _canvasCBTTips = goPrefabInstance:GetComponent("Canvas")
|
||||
NovaAPI.SetCanvasWorldCamera(_canvasCBTTips, CS.GameCameraStackManager.Instance.uiCamera)
|
||||
end
|
||||
local CreatePlayerInfoTips = function()
|
||||
if EXE_EDITOR == true then
|
||||
return
|
||||
end
|
||||
local PlayerInfoPanel = require("Game.UI.PlayerInfo.PlayerInfoPanel")
|
||||
objPlayerInfoPanel = PlayerInfoPanel.new(AllEnum.UI_SORTING_ORDER.Player_Info, PanelId.PlayerInfo, {})
|
||||
objPlayerInfoPanel:_PreEnter()
|
||||
objPlayerInfoPanel:_Enter()
|
||||
end
|
||||
function PanelManager.Init()
|
||||
local goUIRoot = GameObject.Find("==== UI ROOT ====")
|
||||
if goUIRoot ~= nil then
|
||||
mapUIRootTransform = {}
|
||||
mapUIRootTransform[0] = goUIRoot.transform
|
||||
local func_CacheRootTransform = function(sSortingLayerName, sNodeName)
|
||||
local trNode = goUIRoot.transform:Find(sNodeName)
|
||||
mapUIRootTransform[sSortingLayerName] = trNode
|
||||
end
|
||||
func_CacheRootTransform(AllEnum.SortingLayerName.HUD, "---- HUD ----")
|
||||
func_CacheRootTransform(AllEnum.SortingLayerName.UI, "---- UI ----")
|
||||
func_CacheRootTransform(AllEnum.SortingLayerName.UI_Top, "---- UI TOP ----")
|
||||
func_CacheRootTransform(AllEnum.SortingLayerName.UI_Video, "---- UI Video ----")
|
||||
func_CacheRootTransform(AllEnum.SortingLayerName.Overlay, "---- UI OVERLAY ----")
|
||||
trSnapshotParent = mapUIRootTransform[0]:Find("---- UI ----/Snapshot")
|
||||
tbTemplateSnapshot = {}
|
||||
tbTemplateSnapshot[1] = trSnapshotParent:GetChild(0).gameObject
|
||||
tbTemplateSnapshot[2] = trSnapshotParent:GetChild(1).gameObject
|
||||
tbTemplateSnapshot[3] = trSnapshotParent:GetChild(2).gameObject
|
||||
tbTemplateSnapshot[4] = trSnapshotParent:GetChild(3).gameObject
|
||||
OnMarkCurCanvasFullRectWH()
|
||||
end
|
||||
objCurPanel = nil
|
||||
objNextPanel = nil
|
||||
tbBackHistory = {}
|
||||
tbDisposablePanel = {}
|
||||
mapDefinePanel = require("GameCore.UI.PanelDefine")
|
||||
AddEventCallback()
|
||||
InitGuidePanel()
|
||||
InitTransitionPanel()
|
||||
local goBootstrapUI = GameObject.Find("==== Builtin UI ====/BootstrapUI")
|
||||
GameObject.Destroy(goBootstrapUI)
|
||||
local goLaunchUI = GameObject.Find("==== Builtin UI ====/LaunchUI")
|
||||
NovaAPI.CloseLaunchLoading(goLaunchUI)
|
||||
CreatePlayerInfoTips()
|
||||
end
|
||||
function PanelManager.GetUIRoot(sSortingLayerName)
|
||||
if sSortingLayerName == nil then
|
||||
sSortingLayerName = 0
|
||||
end
|
||||
return mapUIRootTransform[sSortingLayerName]
|
||||
end
|
||||
function PanelManager.Home()
|
||||
local nBackToIdx = 1
|
||||
for nIndex, objPanel in ipairs(tbBackHistory) do
|
||||
if objPanel._nPanelId == PanelId.MainMenu then
|
||||
nBackToIdx = nIndex
|
||||
break
|
||||
end
|
||||
end
|
||||
DoBackToTarget(nBackToIdx)
|
||||
end
|
||||
function PanelManager.OnConfirmBackToLogIn()
|
||||
if objCurPanel == nil then
|
||||
return
|
||||
end
|
||||
if objCurPanel._bAddToBackHistory ~= true then
|
||||
objCurPanel:_PreExit()
|
||||
objCurPanel:_Exit()
|
||||
objCurPanel:_Destroy()
|
||||
objCurPanel = nil
|
||||
end
|
||||
local nCount = #tbBackHistory
|
||||
for i = nCount, 1, -1 do
|
||||
local objPanel = tbBackHistory[i]
|
||||
objPanel:_PreExit()
|
||||
objPanel:_Exit()
|
||||
objPanel:_Destroy()
|
||||
table.remove(tbBackHistory, i)
|
||||
RemoveTbSnapShot(objPanel._nPanelId)
|
||||
if objCurPanel ~= nil and objCurPanel == objPanel then
|
||||
objCurPanel = nil
|
||||
end
|
||||
objPanel = nil
|
||||
end
|
||||
PlayerData.UnInit()
|
||||
PlayerData.Init()
|
||||
NovaAPI.ExitGame()
|
||||
end
|
||||
function PanelManager.Release()
|
||||
if type(tbBackHistory) == "table" then
|
||||
for i, objPanel in ipairs(tbBackHistory) do
|
||||
objPanel:_Release()
|
||||
end
|
||||
end
|
||||
end
|
||||
function PanelManager.GetCurPanelId()
|
||||
if objCurPanel ~= nil then
|
||||
return objCurPanel._nPanelId
|
||||
end
|
||||
return 0
|
||||
end
|
||||
function PanelManager.GetDisposablePanelState(nPanelId)
|
||||
for i, v in ipairs(tbDisposablePanel) do
|
||||
if v._nPanelId == nPanelId then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
function PanelManager.CheckPanelOpen(nPanelId)
|
||||
if type(tbBackHistory) == "table" then
|
||||
for i, objPanel in ipairs(tbBackHistory) do
|
||||
if objPanel._nPanelId == nPanelId then
|
||||
return true, objPanel._bIsActive
|
||||
end
|
||||
end
|
||||
end
|
||||
if type(tbDisposablePanel) == "table" then
|
||||
for i, v in ipairs(tbDisposablePanel) do
|
||||
if v._nPanelId == nPanelId then
|
||||
return true, v._bIsActive
|
||||
end
|
||||
end
|
||||
end
|
||||
return false, false
|
||||
end
|
||||
function PanelManager.CheckNextPanelOpening()
|
||||
return objNextPanel ~= nil
|
||||
end
|
||||
function PanelManager.SetMainViewSkipAnimIn(bIn)
|
||||
bMainViewSkipAnimIn = bIn
|
||||
end
|
||||
function PanelManager.GetMainViewSkipAnimIn()
|
||||
return bMainViewSkipAnimIn
|
||||
end
|
||||
function PanelManager.InputEnable(bAudioStop, bDisActiveUICombat)
|
||||
print("PanelManager.InputEnable")
|
||||
local resume = function()
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
NovaAPI.InputEnable()
|
||||
AdventureModuleHelper.ResumeLogic()
|
||||
if bAudioStop then
|
||||
WwiseAudioMgr:PostEvent("char_common_all_stop")
|
||||
WwiseAudioMgr:PostEvent("mon_common_all_stop")
|
||||
else
|
||||
WwiseAudioMgr:PostEvent("char_common_all_resume")
|
||||
WwiseAudioMgr:PostEvent("mon_common_all_resume")
|
||||
end
|
||||
if not bDisActiveUICombat then
|
||||
WwiseAudioMgr:PostEvent("ui_loading_combatSFX_active", nil, false)
|
||||
end
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
nInputRC = nInputRC - 1
|
||||
if nInputRC == 0 then
|
||||
resume()
|
||||
end
|
||||
if nInputRC < 0 then
|
||||
nInputRC = 0
|
||||
printError("InputEnable与InputDisable使用不匹配,请成对使用")
|
||||
resume()
|
||||
end
|
||||
end
|
||||
function PanelManager.InputDisable()
|
||||
print("PanelManager.InputDisable")
|
||||
if nInputRC == 0 then
|
||||
NovaAPI.InputDisable()
|
||||
AdventureModuleHelper.PauseLogic()
|
||||
WwiseAudioMgr:PostEvent("ui_loading_combatSFX_mute", nil, false)
|
||||
WwiseAudioMgr:PostEvent("char_common_all_pause")
|
||||
WwiseAudioMgr:PostEvent("mon_common_all_pause")
|
||||
end
|
||||
nInputRC = nInputRC + 1
|
||||
end
|
||||
function PanelManager.ClearInputState()
|
||||
nInputRC = 0
|
||||
end
|
||||
local goDiscSkillActive, goSelect1, goSelect2, goSelect3, goDashboard, trSupportRole, trMainRole, trSkillHint, trJoystick, goTransition, goPlayerInfo
|
||||
function PanelManager.SwitchUI()
|
||||
if mapUIRootTransform == nil then
|
||||
return
|
||||
end
|
||||
local trUIRoot
|
||||
trUIRoot = mapUIRootTransform[AllEnum.SortingLayerName.UI]
|
||||
if trUIRoot ~= nil then
|
||||
if goDiscSkillActive == nil or goDiscSkillActive ~= nil and goDiscSkillActive:IsNull() == true then
|
||||
goDiscSkillActive = trUIRoot:Find("DiscSkillActivePanel")
|
||||
if goDiscSkillActive ~= nil and goDiscSkillActive:IsNull() == false then
|
||||
goDiscSkillActive:SetParent(mapUIRootTransform[0])
|
||||
end
|
||||
end
|
||||
if goSelect1 == nil or goSelect1 ~= nil and goSelect1:IsNull() == true then
|
||||
goSelect1 = trUIRoot:Find("FateCardSelectPanel")
|
||||
if goSelect1 ~= nil and goSelect1:IsNull() == false then
|
||||
goSelect1:SetParent(mapUIRootTransform[0])
|
||||
end
|
||||
end
|
||||
if goSelect2 == nil or goSelect2 ~= nil and goSelect2:IsNull() == true then
|
||||
goSelect2 = trUIRoot:Find("NoteSelectPanel")
|
||||
if goSelect2 ~= nil and goSelect2:IsNull() == false then
|
||||
goSelect2:SetParent(mapUIRootTransform[0])
|
||||
end
|
||||
end
|
||||
if goSelect3 == nil or goSelect3 ~= nil and goSelect3:IsNull() == true then
|
||||
goSelect3 = trUIRoot:Find("PotentialSelectPanel")
|
||||
if goSelect3 ~= nil and goSelect3:IsNull() == false then
|
||||
goSelect3:SetParent(mapUIRootTransform[0])
|
||||
end
|
||||
end
|
||||
if goDashboard == nil or goDashboard ~= nil and goDashboard:IsNull() == true then
|
||||
goDashboard = trUIRoot:Find("BattleDashboard")
|
||||
if goDashboard ~= nil and goDashboard:IsNull() == false then
|
||||
goDashboard:SetParent(mapUIRootTransform[0])
|
||||
trSupportRole = goDashboard:Find("--safe_area--/--support_role--")
|
||||
trMainRole = goDashboard:Find("--safe_area--/--main_role--")
|
||||
trSkillHint = goDashboard:Find("--safe_area--/--skill_hint--")
|
||||
trJoystick = goDashboard:Find("--safe_area--/--joystick--")
|
||||
end
|
||||
end
|
||||
if 0 < trUIRoot.localScale.x then
|
||||
trUIRoot.localScale = Vector3.zero
|
||||
trJoystick.localScale = Vector3.zero
|
||||
else
|
||||
trUIRoot.localScale = Vector3.one
|
||||
trJoystick.localScale = Vector3.one
|
||||
end
|
||||
end
|
||||
trUIRoot = mapUIRootTransform[AllEnum.SortingLayerName.UI_Top]
|
||||
if trUIRoot ~= nil then
|
||||
if goTransition == nil or goTransition ~= nil and goTransition:IsNull() == true then
|
||||
goTransition = trUIRoot:Find("TransitionPanel")
|
||||
if goTransition ~= nil and goTransition:IsNull() == false then
|
||||
goTransition:SetParent(mapUIRootTransform[0])
|
||||
end
|
||||
end
|
||||
if 0 < trUIRoot.localScale.x then
|
||||
trUIRoot.localScale = Vector3.zero
|
||||
else
|
||||
trUIRoot.localScale = Vector3.one
|
||||
end
|
||||
end
|
||||
trUIRoot = mapUIRootTransform[AllEnum.SortingLayerName.Overlay]
|
||||
if trUIRoot ~= nil then
|
||||
if goPlayerInfo == nil or goPlayerInfo ~= nil and goPlayerInfo:IsNull() == true then
|
||||
goPlayerInfo = trUIRoot:Find("PlayerInfoPanel/----AdaptedArea----")
|
||||
end
|
||||
if 0 < goPlayerInfo.localScale.x then
|
||||
goPlayerInfo.localScale = Vector3.zero
|
||||
else
|
||||
goPlayerInfo.localScale = Vector3.one
|
||||
end
|
||||
end
|
||||
end
|
||||
function PanelManager.SwitchSkillBtn()
|
||||
if mapUIRootTransform == nil then
|
||||
return
|
||||
end
|
||||
if goDashboard == nil or goDashboard ~= nil and goDashboard:IsNull() == true then
|
||||
local trUIRoot = mapUIRootTransform[AllEnum.SortingLayerName.UI]
|
||||
goDashboard = trUIRoot:Find("BattleDashboard")
|
||||
if goDashboard ~= nil and goDashboard:IsNull() == false then
|
||||
goDashboard:SetParent(mapUIRootTransform[0])
|
||||
trSupportRole = goDashboard:Find("--safe_area--/--support_role--")
|
||||
trMainRole = goDashboard:Find("--safe_area--/--main_role--")
|
||||
trSkillHint = goDashboard:Find("--safe_area--/--skill_hint--")
|
||||
trJoystick = goDashboard:Find("--safe_area--/--joystick--")
|
||||
end
|
||||
end
|
||||
if 0 < trSupportRole.localScale.x then
|
||||
trSupportRole.localScale = Vector3.zero
|
||||
trMainRole.localScale = Vector3.zero
|
||||
trSkillHint.localScale = Vector3.zero
|
||||
else
|
||||
trSupportRole.localScale = Vector3.one
|
||||
trMainRole.localScale = Vector3.one
|
||||
trSkillHint.localScale = Vector3.one
|
||||
end
|
||||
end
|
||||
function PanelManager.CloseAllDisposablePanel()
|
||||
if type(tbDisposablePanel) == "table" then
|
||||
local n = #tbDisposablePanel
|
||||
for i = n, 1, -1 do
|
||||
local objTempPanel = tbDisposablePanel[i]
|
||||
objTempPanel:_PreExit()
|
||||
objTempPanel:_Exit()
|
||||
objTempPanel:_Destroy()
|
||||
objTempPanel = nil
|
||||
table.remove(tbDisposablePanel, i)
|
||||
end
|
||||
if 0 < n then
|
||||
printLog("[界面切换] 同时关闭所有非主 Panel 界面")
|
||||
end
|
||||
end
|
||||
end
|
||||
function PanelManager.CheckInTransition()
|
||||
if objTransitionPanel ~= nil then
|
||||
local nStatus = objTransitionPanel:GetTransitionStatus()
|
||||
if nStatus ~= AllEnum.TransitionStatus.OutAnimDone then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
return PanelManager
|
||||
Reference in New Issue
Block a user