DBFSLoadPackageManifestOperation.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. 
  2. namespace YooAsset
  3. {
  4. internal class DBFSLoadPackageManifestOperation : FSLoadPackageManifestOperation
  5. {
  6. private enum ESteps
  7. {
  8. None,
  9. RequestBuildinPackageHash,
  10. LoadBuildinPackageManifest,
  11. Done,
  12. }
  13. private readonly DefaultBuildinFileSystem _fileSystem;
  14. private readonly string _packageVersion;
  15. private RequestBuildinPackageHashOperation _requestBuildinPackageHashOp;
  16. private LoadBuildinPackageManifestOperation _loadBuildinPackageManifestOp;
  17. private ESteps _steps = ESteps.None;
  18. public DBFSLoadPackageManifestOperation(DefaultBuildinFileSystem fileSystem, string packageVersion)
  19. {
  20. _fileSystem = fileSystem;
  21. _packageVersion = packageVersion;
  22. }
  23. internal override void InternalStart()
  24. {
  25. _steps = ESteps.RequestBuildinPackageHash;
  26. }
  27. internal override void InternalUpdate()
  28. {
  29. if (_steps == ESteps.None || _steps == ESteps.Done)
  30. return;
  31. if (_steps == ESteps.RequestBuildinPackageHash)
  32. {
  33. if (_requestBuildinPackageHashOp == null)
  34. {
  35. _requestBuildinPackageHashOp = new RequestBuildinPackageHashOperation(_fileSystem, _packageVersion);
  36. _requestBuildinPackageHashOp.StartOperation();
  37. AddChildOperation(_requestBuildinPackageHashOp);
  38. }
  39. _requestBuildinPackageHashOp.UpdateOperation();
  40. if (_requestBuildinPackageHashOp.IsDone == false)
  41. return;
  42. if (_requestBuildinPackageHashOp.Status == EOperationStatus.Succeed)
  43. {
  44. _steps = ESteps.LoadBuildinPackageManifest;
  45. }
  46. else
  47. {
  48. _steps = ESteps.Done;
  49. Status = EOperationStatus.Failed;
  50. Error = _requestBuildinPackageHashOp.Error;
  51. }
  52. }
  53. if (_steps == ESteps.LoadBuildinPackageManifest)
  54. {
  55. if (_loadBuildinPackageManifestOp == null)
  56. {
  57. string packageHash = _requestBuildinPackageHashOp.PackageHash;
  58. _loadBuildinPackageManifestOp = new LoadBuildinPackageManifestOperation(_fileSystem, _packageVersion, packageHash);
  59. _loadBuildinPackageManifestOp.StartOperation();
  60. AddChildOperation(_loadBuildinPackageManifestOp);
  61. }
  62. _loadBuildinPackageManifestOp.UpdateOperation();
  63. if (_loadBuildinPackageManifestOp.IsDone == false)
  64. return;
  65. if (_loadBuildinPackageManifestOp.Status == EOperationStatus.Succeed)
  66. {
  67. _steps = ESteps.Done;
  68. Manifest = _loadBuildinPackageManifestOp.Manifest;
  69. Status = EOperationStatus.Succeed;
  70. }
  71. else
  72. {
  73. _steps = ESteps.Done;
  74. Status = EOperationStatus.Failed;
  75. Error = _loadBuildinPackageManifestOp.Error;
  76. }
  77. }
  78. }
  79. }
  80. }