AlicizaX/Client/Assets/Scripts/Startup/Procedure/PatchUpdater/ProcedureInitPackageState.cs

89 lines
2.8 KiB
C#
Raw Normal View History

2025-10-14 15:42:34 +08:00
using Cysharp.Threading.Tasks;
using AlicizaX;
using YooAsset;
namespace Unity.Startup.Procedure
{
2025-11-18 16:15:26 +08:00
internal sealed class ProcedureInitPackageState : ProcedureBase
2025-10-14 15:42:34 +08:00
{
private int maxFailedCount = 0;
protected override void OnEnter()
{
InitPackageAsync().Forget();
}
private async UniTask InitPackageAsync()
{
string hostUrl = string.Empty;
2025-11-12 15:06:22 +08:00
if (GameApp.Resource.PlayMode == EPlayMode.HostPlayMode || GameApp.Resource.PlayMode == EPlayMode.WebPlayMode)
2025-10-14 15:42:34 +08:00
{
hostUrl = HttpHelper.CDNUrl;
}
await GameApp.Resource.InitPackageAsync(string.Empty, hostUrl, hostUrl);
await UniTask.DelayFrame();
UpdateStaticVersion().Forget();
}
private async UniTask UpdateStaticVersion()
{
var buildInOperation = GameApp.Resource.RequestPackageVersionAsync();
await buildInOperation.ToUniTask();
if (buildInOperation.Status == EOperationStatus.Succeed)
{
//更新成功
string packageVersion = buildInOperation.PackageVersion;
GameApp.Resource.PackageVersion = packageVersion;
Log.Info($"Updated package Version : {packageVersion}");
UpdateManifest().Forget();
}
else
{
//更新失败
Log.Error(buildInOperation.Error);
await UniTask.Delay(3000);
Log.Info("Retry Update Static Version");
UpdateStaticVersion().Forget();
}
}
private async UniTask UpdateManifest()
{
UpdatePackageManifestOperation buildInOperation;
string packageVersion = "Simulate";
if (GameApp.Resource.PlayMode != EPlayMode.EditorSimulateMode)
{
packageVersion = GameApp.Resource.PackageVersion;
}
buildInOperation = GameApp.Resource.UpdatePackageManifestAsync(packageVersion);
await buildInOperation.ToUniTask();
if (buildInOperation.Status == EOperationStatus.Succeed)
{
if (GameApp.Resource.PlayMode == EPlayMode.OfflinePlayMode)
{
2025-11-18 16:15:26 +08:00
SwitchProcedure<ProcedurePatchDoneState>();
2025-10-14 15:42:34 +08:00
return;
}
2025-11-18 16:15:26 +08:00
SwitchProcedure<ProcedureDownloadBundleState>();
2025-10-14 15:42:34 +08:00
}
else
{
maxFailedCount++;
Log.Error(buildInOperation.Error);
if (maxFailedCount >= 3)
{
Log.Error(buildInOperation.Error);
return;
}
UpdateManifest().Forget();
}
}
}
}