NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Camp/CampManager.SceneLogic.cs

90 lines
2.4 KiB
C#
Raw Normal View History

2024-01-10 18:30:01 +08:00
using System.Linq;
using cfg.ShowCfg;
2024-01-10 18:30:01 +08:00
using Gameplay;
using Gameplay.SubSystems;
2024-01-12 15:35:41 +08:00
using PhxhSDK;
using UnityEngine;
2024-01-10 18:30:01 +08:00
using UnityEngine.SceneManagement;
using static Gameplay.CommonUtils;
2024-01-10 18:30:01 +08:00
public partial class CampManager
{
/// <summary>
/// 进度
/// </summary>
2024-01-10 18:30:01 +08:00
private enum EProcess
{
None = 0,
/// <summary>
/// 加载场景
/// </summary>
2024-01-10 18:30:01 +08:00
LoadingScene,
/// <summary>
/// 加载UI
/// </summary>
2024-01-10 18:30:01 +08:00
LoadingUI,
/// <summary>
/// 刷新营地
/// </summary>
2024-01-10 18:30:01 +08:00
RefreshCamp,
/// <summary>
/// 当前
/// </summary>
2024-01-10 18:30:01 +08:00
Present,
}
private EProcess curProcess = EProcess.None;
2024-01-10 18:30:01 +08:00
public async void EnterCamp()
{
2024-01-11 18:32:08 +08:00
UIManager.Instance.HideAllUI();
curProcess = EProcess.LoadingScene;
LoadingExecutorWithUILoadingController loadingExecutor = new()
{
getProgress = GetLoadingProcess
};
2024-01-10 18:30:01 +08:00
LoadingExecutorManager.Instance.ExecuteLoading(loadingExecutor);
UISceneResult uiSceneResult = await OpenUIWithScene(UINameConst.UI_Camp, Framework.Constants.CAMP_SCENE_PATH, null, false);
curProcess = EProcess.RefreshCamp;
ShowComponent showComponent = GetSceneRootComponent<ShowComponent>(uiSceneResult.sceneHandle.Scene);
if (showComponent == null)
2024-01-10 18:30:01 +08:00
{
DebugUtil.LogError($"无法进入营地场景,{typeof(ShowComponent).Name}不存在,scene path:{Framework.Constants.CAMP_SCENE_PATH}");
curProcess = EProcess.None;
2024-01-10 18:30:01 +08:00
return;
}
2024-03-18 17:41:46 +08:00
await ShowManager.Instance.RefreshShow(E_ShowSceneType.Camp);
curProcess = EProcess.Present;
2024-01-10 18:30:01 +08:00
}
/// <summary>
/// 退出营地
/// </summary>
2024-01-10 18:30:01 +08:00
public async void ExitCamp()
{
await CloseUIWithScene(UINameConst.UI_Camp);
curProcess = EProcess.None;
2024-01-10 18:30:01 +08:00
}
/// <summary>
/// 获取加载进度
/// </summary>
/// <returns>0f-100f</returns>
2024-01-10 18:30:01 +08:00
private float GetLoadingProcess()
{
return curProcess switch
2024-01-10 18:30:01 +08:00
{
EProcess.None => 0f,
EProcess.LoadingScene => GameSceneManager.Instance.GetSceneLoadingProgress(Framework.Constants.CAMP_SCENE_PATH) * 0.5f,
EProcess.LoadingUI => 60f,
EProcess.RefreshCamp => 60f + ShowManager.Instance.GetRefreshProcess(E_ShowSceneType.Camp) * 40f,
EProcess.Present => 100f,
_ => 0f,
};
2024-01-10 18:30:01 +08:00
}
}