163 lines
3.7 KiB
C#
163 lines
3.7 KiB
C#
|
|
using Cysharp.Threading.Tasks;
|
||
|
|
using Framework;
|
||
|
|
using PhxhSDK;
|
||
|
|
|
||
|
|
namespace Gameplay.SubSystems
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// 加载管理器
|
||
|
|
/// </summary>
|
||
|
|
public class LoadingManager : Singlenton<LoadingManager>, IInitable
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// 当前加载
|
||
|
|
/// </summary>
|
||
|
|
private LoadingExecutor curLoadingExecutor;
|
||
|
|
/// <summary>
|
||
|
|
/// 加载表现
|
||
|
|
/// </summary>
|
||
|
|
private LoadingDisplay loadingDisplay;
|
||
|
|
|
||
|
|
#region 进度
|
||
|
|
/// <summary>
|
||
|
|
/// 是否正在运行
|
||
|
|
/// </summary>
|
||
|
|
public bool IsRuning
|
||
|
|
{
|
||
|
|
get
|
||
|
|
{
|
||
|
|
if (null == curLoadingExecutor)
|
||
|
|
return false;
|
||
|
|
|
||
|
|
return curLoadingExecutor.IsRunning;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 实际进度
|
||
|
|
/// </summary>
|
||
|
|
public float Progress
|
||
|
|
{
|
||
|
|
get
|
||
|
|
{
|
||
|
|
if (null == curLoadingExecutor)
|
||
|
|
return 0f;
|
||
|
|
|
||
|
|
return curLoadingExecutor.Progress;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 表现进度
|
||
|
|
/// </summary>
|
||
|
|
public float ShowProgress
|
||
|
|
{
|
||
|
|
get
|
||
|
|
{
|
||
|
|
if (null == loadingDisplay)
|
||
|
|
return Progress;
|
||
|
|
|
||
|
|
loadingDisplay.Update(Progress);
|
||
|
|
|
||
|
|
return loadingDisplay.ShowProgress;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 是否等待中
|
||
|
|
/// </summary>
|
||
|
|
public bool IsWait
|
||
|
|
{
|
||
|
|
get
|
||
|
|
{
|
||
|
|
if (null == curLoadingExecutor)
|
||
|
|
return true;
|
||
|
|
|
||
|
|
return curLoadingExecutor.IsWait;
|
||
|
|
}
|
||
|
|
set
|
||
|
|
{
|
||
|
|
curLoadingExecutor.IsWait = value;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#endregion
|
||
|
|
|
||
|
|
public void Init()
|
||
|
|
{
|
||
|
|
loadingDisplay = new();
|
||
|
|
}
|
||
|
|
|
||
|
|
public void Release()
|
||
|
|
{
|
||
|
|
loadingDisplay = null;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 开始加载
|
||
|
|
/// </summary>
|
||
|
|
/// <param name="executer"></param>
|
||
|
|
/// <param name="changeProgressTime"></param>
|
||
|
|
/// <param name="loadingCompleteWaitTime"></param>
|
||
|
|
/// <returns></returns>
|
||
|
|
public async UniTask ExecuteLoading(LoadingExecutor executer, float changeProgressTime = 1f, float loadingCompleteWaitTime = 0.2f)
|
||
|
|
{
|
||
|
|
if (null == executer)
|
||
|
|
{
|
||
|
|
DebugUtil.LogError("错误,启动空的加载器");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (IsRuning)
|
||
|
|
{
|
||
|
|
DebugUtil.LogError("错误,有加载器没有加载完");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
loadingDisplay.SetInfo(changeProgressTime, loadingCompleteWaitTime);
|
||
|
|
curLoadingExecutor = executer;
|
||
|
|
|
||
|
|
await curLoadingExecutor.Excute(changeProgressTime + loadingCompleteWaitTime);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// loading界面类型
|
||
|
|
/// </summary>
|
||
|
|
public enum E_LoadingType
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// 登录游戏
|
||
|
|
/// </summary>
|
||
|
|
Login,
|
||
|
|
/// <summary>
|
||
|
|
/// 通用加载
|
||
|
|
/// </summary>
|
||
|
|
CommonLoading,
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 加载结果
|
||
|
|
/// </summary>
|
||
|
|
public enum E_LoadingResult
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// 完成加载
|
||
|
|
/// </summary>
|
||
|
|
Success = 0,
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 加载出错(测试)
|
||
|
|
/// </summary>
|
||
|
|
ErrorTest = 1,
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 启动游戏时网络连接出错
|
||
|
|
/// </summary>
|
||
|
|
GameStartSevNetError = 2,
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 当前设备网络问题
|
||
|
|
/// </summary>
|
||
|
|
DeviceNetError = 3,
|
||
|
|
}
|
||
|
|
}
|