using System.Collections; using System.Collections.Generic; using Cysharp.Threading.Tasks; using Framework; using Gameplay; using Gameplay.Level; using Gameplay.SubSystems; using TGS; using UnityEngine; public partial class PVPManager { private enum ECurrState { None, LoadingScene, LoadingUI, } private ECurrState _currState; public async void EnterDefendPrepare() { var loadingExecutor = new LoadingExecutorWithUILoadingController { getProgress = GetEnterProgress, }; LoadingExecutorManager.Instance.ExecuteLoading(loadingExecutor); _currState = ECurrState.None; await LoadScene(); await LoadUI(); } public async void ExitDefendPrepare() { PrepareTeamManager.Instance.Dispose(); UIManager.Instance.CloseWindow(UINameConst.UI_PVPDefendPrepare, UIWindowCloseType.HideAndDestroy); UIManager.Instance.ShowAllUI(); await GameSceneManager.Instance.ChangeScene(GameSceneManager.EnumScene.GameMain); } private async UniTask LoadScene() { _currState = ECurrState.LoadingScene; var pvpScene = _pvpLevelInfo.LevelScene; await GameSceneManager.Instance.LoadSceneAsync(pvpScene); } private async UniTask LoadUI() { if (_pvpLevelInfo == null) return; _currState = ECurrState.LoadingUI; UIManager.Instance.HideAllUI(); var tgs = UnityEngine.Object.FindObjectOfType(); PrepareTeamManager.Instance.Init(tgs, _pvpLevelInfo.MapData, _pvpLevelInfo.LevelData.pvpDefendRegionId, _pvpLevelInfo.LevelData.pvpDefendToward); 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; } } }