using System.Collections; using System.Collections.Generic; using Cysharp.Threading.Tasks; using Framework; using Gameplay; using Gameplay.Level; using Gameplay.SubSystems; using PhxhSDK; using TGS; using UnityEngine; using UnityEngine.SceneManagement; public partial class PVPManager { private enum ECurrState { None, LoadingScene, LoadingUI, } private ECurrState _currState; private string _scenePath; public async void EnterDefendPrepare() { var loadingExecutor = new LoadingExecutorWithUILoadingController { getProgress = GetEnterProgress, }; UIManager.Instance.HideAllUI(); LoadingExecutorManager.Instance.ExecuteLoading(loadingExecutor); _currState = ECurrState.None; await LoadScene(); await LoadUI(); CameraManager.Instance.SetMainCameraActive(false); } public async void ExitDefendPrepare() { PrepareTeamManager.Instance.Dispose(); UIManager.Instance.CloseWindow(UINameConst.UI_PVPDefendPrepare, UIWindowCloseType.HideAndDestroy); UIManager.Instance.ShowAllUI(); await GameSceneManager.Instance.UnLoadSceneAsync(_scenePath); CameraManager.Instance.SetMainCameraActive(true); } private async UniTask LoadScene() { _currState = ECurrState.LoadingScene; _scenePath = _pvpLevelInfo.LevelScene; // await GameSceneManager.Instance.LoadSceneAsync(_scenePath,LoadSceneMode.Additive); await GameSceneManager.Instance.LoadSceneForUIView(_scenePath, LoadSceneMode.Additive); } private async UniTask LoadUI() { if (_pvpLevelInfo == null) return; _currState = ECurrState.LoadingUI; var tgs = UnityEngine.Object.FindObjectOfType(); PrepareTeamManager.Instance.Init(tgs, _pvpLevelInfo.MapData, _pvpLevelInfo.LevelData.pvpDefendRegionId, _pvpLevelInfo.LevelData.pvpDefendToward, NLDSceneManager.Instance.SceneCamera); await UIManager.Instance.OpenWindow(UINameConst.UI_PVPDefendPrepare); } private float GetEnterProgress() { switch (_currState) { case ECurrState.None: return 0; break; case ECurrState.LoadingScene: return GameSceneManager.Instance.GetSceneLoadingProgress(_pvpLevelInfo.LevelScene) * 100; break; case ECurrState.LoadingUI: return 100; default: return 0; } } }