NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/PVP/PVPManager.DefenderPrepare.cs

84 lines
2.5 KiB
C#

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<TerrainGridSystem>();
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;
}
}
}