Files
Fishing2/Assets/Scripts/NBC/Asset/Runtime/Tasks/Update/UpdateVersionTask.cs
2025-05-10 12:49:47 +08:00

65 lines
2.1 KiB
C#

using System.Collections.Generic;
using System.IO;
namespace NBC.Asset
{
/// <summary>
/// 更新版本内容任务
/// </summary>
public class UpdateVersionTask : DownloadTaskBase
{
private UpdateContext _context;
private SequenceTaskCollection _sequence = new SequenceTaskCollection();
private ParallelTaskCollection _downloadParallel = new ParallelTaskCollection();
public override float Progress => _downloadParallel.Progress;
public UpdateVersionTask(UpdateContext context)
{
_context = context;
}
protected override void OnStart()
{
_sequence.FailBreak = true;
_downloadParallel.ParallelNum = 5;
_downloadParallel.FailBreak = true;
var bundles = _context.NeedUpdateBundleList;
if (bundles != null && bundles.Count > 0)
{
foreach (var bundle in bundles)
{
_downloadParallel.AddTask(new DownloadFileTask(bundle.RemoteDataFilePath,
bundle.CachedDataFilePath));
}
_sequence.AddTask(_downloadParallel);
}
_sequence.AddTask(new RunFunctionTask(TryCoverNewVersionData));
_sequence.AddTask(new RunFunctionTask(Addressable.Load));
_sequence.Run(TaskRunner.DownloadRunner);
}
protected override NTaskStatus OnProcess()
{
return _sequence.IsDone ? _sequence.Status : NTaskStatus.Running;
}
/// <summary>
/// 尝试覆盖旧的版本清单文件
/// </summary>
private void TryCoverNewVersionData()
{
if (_context.NewVersionData != null)
{
var nameHash = _context.NewVersionData.NameHash;
//覆盖旧的清单文件
File.Copy(Const.GetCacheTempPath(nameHash), Const.GetCachePath(nameHash), true);
}
//覆盖旧的version.json
File.Copy(Const.GetCacheTempPath(Const.VersionFileName), Const.GetCachePath(Const.VersionFileName), true);
}
}
}