2024-10-14 20:31:57 +08:00
|
|
|
|
using Cysharp.Threading.Tasks;
|
|
|
|
|
using SHFrame;
|
|
|
|
|
using SHFrame.FSM;
|
|
|
|
|
using YooAsset;
|
|
|
|
|
|
2024-10-15 18:26:52 +08:00
|
|
|
|
namespace HotMain.SHGame.Procedure
|
2024-10-14 20:31:57 +08:00
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 更新资源清单
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class ProcedureUpdatePackageManifest : ProcedureBase
|
|
|
|
|
{
|
2024-10-15 02:12:55 +08:00
|
|
|
|
protected override void OnEnter(IFsm<IProcedureManager> procedureOwner)
|
2024-10-14 20:31:57 +08:00
|
|
|
|
{
|
|
|
|
|
base.OnEnter(procedureOwner);
|
|
|
|
|
UpdateManifest(procedureOwner).Forget();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async UniTask UpdateManifest(IFsm<IProcedureManager> procedureOwner)
|
|
|
|
|
{
|
|
|
|
|
bool result = await UpdatePackageManifest(ProcedureInitializePackage.RawFilePackageName);
|
|
|
|
|
if (!result) return;
|
|
|
|
|
|
|
|
|
|
result = await UpdatePackageManifest(ProcedureInitializePackage.DefaultPackageName);
|
|
|
|
|
if (!result) return;
|
|
|
|
|
|
|
|
|
|
//切换到更新资源版本
|
|
|
|
|
ChangeState<ProcedureUpdatePackageVersion>(procedureOwner);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 更新资源清单
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private async UniTask<bool> UpdatePackageManifest(string packageName)
|
|
|
|
|
{
|
|
|
|
|
ResourcePackage package = YooAssets.GetPackage(packageName);
|
|
|
|
|
|
|
|
|
|
//2.获取资源版本
|
2024-10-15 02:12:55 +08:00
|
|
|
|
UpdatePackageVersionOperation updateVerOperation = package.UpdatePackageVersionAsync(false);
|
2024-10-14 20:31:57 +08:00
|
|
|
|
await updateVerOperation.ToUniTask();
|
|
|
|
|
|
|
|
|
|
// TODO 如果初始化失败弹出提示界面
|
|
|
|
|
if (updateVerOperation.Status != EOperationStatus.Succeed)
|
|
|
|
|
{
|
|
|
|
|
//初始化失败了 弹出提示
|
|
|
|
|
Log.Error($"{package.PackageName} 获取远程资源版本信息失败: {updateVerOperation.Error}");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string packageVersion = updateVerOperation.PackageVersion;
|
|
|
|
|
Log.Debug($"Init {package.PackageName} version : {packageVersion}");
|
|
|
|
|
|
|
|
|
|
//3.更新补丁清单
|
|
|
|
|
UpdatePackageManifestOperation updateManifestOperation = package.UpdatePackageManifestAsync(packageVersion);
|
|
|
|
|
await updateManifestOperation.ToUniTask();
|
|
|
|
|
|
|
|
|
|
if (updateManifestOperation.Status != EOperationStatus.Succeed)
|
|
|
|
|
{
|
|
|
|
|
//更新失败了 弹出提示
|
|
|
|
|
Log.Error($"{package.PackageName} 更新资源版本清单失败: {updateManifestOperation.Error}");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|