Files
TuanTuan-Engine/Assets/GameFramework/Runtime/PatchLogic/MainOperation.cs

63 lines
2.2 KiB
C#
Raw Normal View History

2025-11-03 00:24:36 +08:00
using Cysharp.Threading.Tasks;
using YooAsset;
public class MainOperation
{
PatchOperationData data;
PatchOperation operation;
2025-11-03 12:03:21 +08:00
bool autoDownload;
public MainOperation(EPlayMode playMode, bool autoDownload = false)
2025-11-03 00:24:36 +08:00
{
data = new PatchOperationData();
data.packageName = "Main";
data.playMode = playMode;
data.useBuildinFileSystem = false;
data.downloadingMaxNum = 10;
data.failedTryAgain = 3;
2025-11-03 12:03:21 +08:00
data.downloadUpdate = OnDownloadUpdate;
data.downloadFinish = OnDownloadFinish;
data.downloadError = OnDownloadError;
2025-11-03 00:24:36 +08:00
operation = new PatchOperation(data);
2025-11-03 12:03:21 +08:00
this.autoDownload = autoDownload;
2025-11-03 00:24:36 +08:00
}
public async UniTask Execute()
{
2025-11-03 12:03:21 +08:00
PatchEvent.UpdateProgress(0f);
2025-11-03 17:46:28 +08:00
if (!await operation.InitializePackage()) return;
if (!await operation.RequestPackageVersion()) return;
if (!await operation.UpdatePackageManifest()) return;
if (operation.CreateDownloader())
2025-11-03 12:03:21 +08:00
{
if (autoDownload)
{
2025-11-03 17:46:28 +08:00
if (!await operation.DownloadPackageFiles()) return;
2025-11-03 12:03:21 +08:00
}
else
{
2025-11-03 17:46:28 +08:00
if (!await operation.CheckDownloadOrSkip()) return;
2025-11-03 12:03:21 +08:00
}
2025-11-03 00:24:36 +08:00
}
2025-11-03 17:46:28 +08:00
if (!await operation.ClearCacheBundle()) return;
operation.SaveVersionToCache();
YooAssets.SetDefaultPackage(operation.package);
2025-11-03 12:03:21 +08:00
}
private void OnDownloadUpdate(DownloadUpdateData downloadUpdateData)
{
float progress = (float)downloadUpdateData.CurrentDownloadBytes / downloadUpdateData.TotalDownloadBytes;
2025-11-05 20:56:21 +08:00
string sizeText = $"{operation.FormatFileSize(downloadUpdateData.CurrentDownloadBytes)} / {operation.FormatFileSize(downloadUpdateData.TotalDownloadBytes)}";
2025-11-03 12:03:21 +08:00
PatchEvent.UpdateProgress(progress);
PatchEvent.UpdateDownloadSize(sizeText);
2025-11-03 17:46:28 +08:00
PatchEvent.UpdateStatus($"{data.packageName} 资源下载中...");
2025-11-03 12:03:21 +08:00
}
private void OnDownloadFinish(DownloaderFinishData downloaderFinishData)
{
2025-11-03 17:46:28 +08:00
PatchEvent.UpdateStatus("下载完成");
2025-11-03 12:03:21 +08:00
}
private void OnDownloadError(DownloadErrorData downloadErrorData)
{
2025-11-03 17:46:28 +08:00
PatchEvent.UpdateStatus($"下载失败:{downloadErrorData.FileName}\n{downloadErrorData.ErrorInfo}");
2025-11-03 00:24:36 +08:00
}
}