92 lines
2.4 KiB
C#
92 lines
2.4 KiB
C#
using System.Linq;
|
||
using Gameplay;
|
||
using Gameplay.SubSystems;
|
||
using PhxhSDK;
|
||
using UnityEngine;
|
||
using UnityEngine.SceneManagement;
|
||
using static Gameplay.CommonUtils;
|
||
|
||
public partial class CampManager
|
||
{
|
||
/// <summary>
|
||
/// 进度
|
||
/// </summary>
|
||
private enum EProcess
|
||
{
|
||
None = 0,
|
||
/// <summary>
|
||
/// 加载场景
|
||
/// </summary>
|
||
LoadingScene,
|
||
/// <summary>
|
||
/// 加载UI
|
||
/// </summary>
|
||
LoadingUI,
|
||
/// <summary>
|
||
/// 刷新营地
|
||
/// </summary>
|
||
RefreshCamp,
|
||
/// <summary>
|
||
/// 当前
|
||
/// </summary>
|
||
Present,
|
||
}
|
||
|
||
private EProcess curProcess = EProcess.None;
|
||
/// <summary>
|
||
/// 演出管理器
|
||
/// </summary>
|
||
private ShowManager showManager;
|
||
|
||
public async void EnterCamp()
|
||
{
|
||
UIManager.Instance.HideAllUI();
|
||
curProcess = EProcess.LoadingScene;
|
||
|
||
LoadingExecutorWithUILoadingController loadingExecutor = new()
|
||
{
|
||
getProgress = GetLoadingProcess
|
||
};
|
||
LoadingExecutorManager.Instance.ExecuteLoading(loadingExecutor);
|
||
UISceneResult uiSceneResult = await OpenUIWithScene(UINameConst.UI_Camp, Framework.Constants.CAMP_SCENE_PATH, null, false);
|
||
curProcess = EProcess.RefreshCamp;
|
||
|
||
showManager = GetSceneRootComponent<ShowManager>(uiSceneResult.sceneHandle.Scene);
|
||
if (showManager == null)
|
||
{
|
||
DebugUtil.LogError($"无法进入营地场景,campSceneManager不存在,scene path:{Framework.Constants.CAMP_SCENE_PATH}");
|
||
curProcess = EProcess.None;
|
||
|
||
return;
|
||
}
|
||
|
||
await showManager.RefreshShow();
|
||
curProcess = EProcess.Present;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 退出营地
|
||
/// </summary>
|
||
public async void ExitCamp()
|
||
{
|
||
await CloseUIWithScene(UINameConst.UI_Camp);
|
||
curProcess = EProcess.None;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取加载进度
|
||
/// </summary>
|
||
/// <returns>0f-100f</returns>
|
||
private float GetLoadingProcess()
|
||
{
|
||
return curProcess switch
|
||
{
|
||
EProcess.None => 0f,
|
||
EProcess.LoadingScene => GameSceneManager.Instance.GetSceneLoadingProgress(Framework.Constants.CAMP_SCENE_PATH) * 0.5f,
|
||
EProcess.LoadingUI => 60f,
|
||
EProcess.RefreshCamp => 60f + showManager.GetRefreshProcess() * 40f,
|
||
EProcess.Present => 100f,
|
||
_ => 0f,
|
||
};
|
||
}
|
||
} |