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-07-11 21:00: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
|
|
|
|
}
|