AlicizaX/Client/Assets/Scripts/Startup/Framework/Procedure/PatchUpdater/ProcedureUpdateManifest.cs

65 lines
2.0 KiB
C#
Raw Normal View History

2025-01-23 19:06:48 +08:00
using System;
using Cysharp.Threading.Tasks;
using AlicizaX.Resource.Runtime;
2025-04-28 19:45:45 +08:00
using AlicizaX;
using Unity.Startup.UI;
2025-01-23 19:06:48 +08:00
using YooAsset;
namespace Unity.Startup.Procedure
{
2025-04-28 19:45:45 +08:00
internal sealed class ProcedureUpdateManifest : StateBase<UpdateProcedureState>
2025-01-23 19:06:48 +08:00
{
2025-04-28 19:45:45 +08:00
private int maxFailedCount = 0;
2025-01-23 19:06:48 +08:00
2025-04-28 19:45:45 +08:00
protected override async void OnEnter()
{
if (GameApp.Resource.PlayMode == EPlayMode.OfflinePlayMode)
2025-01-23 19:06:48 +08:00
{
var buildInOperation = GameApp.Resource.UpdatePackageManifestAsync(GameApp.Resource.PackageVersion);
await buildInOperation.ToUniTask();
2025-04-28 19:45:45 +08:00
SwitchState(UpdateProcedureState.ProcedurePatchDone);
2025-01-23 19:06:48 +08:00
return;
}
2025-01-24 16:21:00 +08:00
GameApp.Event.Fire(this, AssetPatchStatesChangeEventArgs.Create(EPatchStates.UpdateManifest));
2025-04-28 19:45:45 +08:00
UpdateManifest().Forget();
2025-01-23 19:06:48 +08:00
}
2025-04-28 19:45:45 +08:00
private async UniTaskVoid UpdateManifest()
2025-01-23 19:06:48 +08:00
{
await UniTask.Delay(TimeSpan.FromSeconds(0.5f));
UpdatePackageManifestOperation buildInOperation;
2025-04-28 19:45:45 +08:00
if (GameApp.Resource.PlayMode == EPlayMode.EditorSimulateMode)
2025-01-23 19:06:48 +08:00
{
buildInOperation = GameApp.Resource.UpdatePackageManifestAsync("Simulate");
}
else
{
buildInOperation = GameApp.Resource.UpdatePackageManifestAsync(GameApp.Resource.PackageVersion);
}
await buildInOperation.ToUniTask();
if (buildInOperation.Status == EOperationStatus.Succeed)
{
//更新成功
2025-04-28 19:45:45 +08:00
SwitchState(UpdateProcedureState.ProcedureCreateDownloader);
2025-01-23 19:06:48 +08:00
}
else
{
2025-04-28 19:45:45 +08:00
maxFailedCount++;
Log.Error(buildInOperation.Error);
if (maxFailedCount >= 3)
{
UILoadTipWindow.ShowUILoadTip(buildInOperation.Error).Forget();
return;
}
SwitchState(UpdateProcedureState.ProcedureUpdateManifest);
2025-01-23 19:06:48 +08:00
}
}
}
2025-01-24 16:21:00 +08:00
}