QueryCachePackageVersionOperation.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System.IO;
  2. namespace YooAsset
  3. {
  4. internal class QueryCachePackageVersionOperation : AsyncOperationBase
  5. {
  6. private enum ESteps
  7. {
  8. None,
  9. LoadCachePackageVersionFile,
  10. Done,
  11. }
  12. private readonly string _packageName;
  13. private ESteps _steps = ESteps.None;
  14. /// <summary>
  15. /// 包裹版本
  16. /// </summary>
  17. public string PackageVersion { private set; get; }
  18. public QueryCachePackageVersionOperation(string packageName)
  19. {
  20. _packageName = packageName;
  21. }
  22. internal override void Start()
  23. {
  24. _steps = ESteps.LoadCachePackageVersionFile;
  25. }
  26. internal override void Update()
  27. {
  28. if (_steps == ESteps.None || _steps == ESteps.Done)
  29. return;
  30. if (_steps == ESteps.LoadCachePackageVersionFile)
  31. {
  32. string filePath = PersistentTools.GetPersistent(_packageName).GetSandboxPackageVersionFilePath();
  33. if (File.Exists(filePath) == false)
  34. {
  35. _steps = ESteps.Done;
  36. Status = EOperationStatus.Failed;
  37. Error = $"Cache package version file not found : {filePath}";
  38. return;
  39. }
  40. PackageVersion = FileUtility.ReadAllText(filePath);
  41. if (string.IsNullOrEmpty(PackageVersion))
  42. {
  43. _steps = ESteps.Done;
  44. Status = EOperationStatus.Failed;
  45. Error = $"Cache package version file content is empty !";
  46. }
  47. else
  48. {
  49. _steps = ESteps.Done;
  50. Status = EOperationStatus.Succeed;
  51. }
  52. }
  53. }
  54. }
  55. }