67 lines
2.2 KiB
C#
67 lines
2.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using Cysharp.Threading.Tasks;
|
|
using AlicizaX.Resource.Runtime;
|
|
using AlicizaX.Fsm.Runtime;
|
|
using AlicizaX.Procedure.Runtime;
|
|
using AlicizaX.Runtime;
|
|
using UnityEngine;
|
|
using YooAsset;
|
|
|
|
namespace Unity.Startup.Procedure
|
|
{
|
|
internal sealed class ProcedureUpdateManifest : ProcedureBase
|
|
{
|
|
protected override async void OnEnter(IFsm<IProcedureManager> procedureOwner)
|
|
{
|
|
base.OnEnter(procedureOwner);
|
|
|
|
if (GameApp.Resource.GamePlayMode == EPlayMode.OfflinePlayMode)
|
|
{
|
|
var buildInOperation = GameApp.Resource.UpdatePackageManifestAsync(GameApp.Resource.PackageVersion);
|
|
await buildInOperation.ToUniTask();
|
|
ChangeState<ProcedurePatchDone>(procedureOwner);
|
|
return;
|
|
}
|
|
|
|
GameApp.Event.Fire(this, AssetPatchStatesChangeEventArgs.Create(EPatchStates.UpdateManifest));
|
|
UpdateManifest(procedureOwner).Forget();
|
|
}
|
|
|
|
|
|
private async UniTaskVoid UpdateManifest(IFsm<IProcedureManager> procedureOwner)
|
|
{
|
|
await UniTask.Delay(TimeSpan.FromSeconds(0.5f));
|
|
|
|
|
|
UpdatePackageManifestOperation buildInOperation;
|
|
if (GameApp.Resource.GamePlayMode == EPlayMode.EditorSimulateMode)
|
|
{
|
|
buildInOperation = GameApp.Resource.UpdatePackageManifestAsync("Simulate");
|
|
}
|
|
else
|
|
{
|
|
buildInOperation = GameApp.Resource.UpdatePackageManifestAsync(GameApp.Resource.PackageVersion);
|
|
}
|
|
|
|
await buildInOperation.ToUniTask();
|
|
|
|
|
|
if (buildInOperation.Status == EOperationStatus.Succeed)
|
|
{
|
|
//更新成功
|
|
ChangeState<ProcedureCreateDownloader>(procedureOwner);
|
|
}
|
|
else
|
|
{
|
|
//更新失败
|
|
Debug.LogError(buildInOperation.Error);
|
|
GameApp.Event.Fire(this, AssetPatchManifestUpdateFailedEventArgs.Create(buildInOperation.Error));
|
|
|
|
//询问是否重试
|
|
//ChangeState<ProcedureUpdateManifest>(procedureOwner);
|
|
}
|
|
}
|
|
}
|
|
}
|