UnpackBuildinManifestOperation.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. 
  2. namespace YooAsset
  3. {
  4. internal class UnpackBuildinManifestOperation : AsyncOperationBase
  5. {
  6. private enum ESteps
  7. {
  8. None,
  9. UnpackManifestHashFile,
  10. UnpackManifestFile,
  11. Done,
  12. }
  13. private readonly string _buildinPackageName;
  14. private readonly string _buildinPackageVersion;
  15. private UnityWebFileRequester _downloader1;
  16. private UnityWebFileRequester _downloader2;
  17. private ESteps _steps = ESteps.None;
  18. public UnpackBuildinManifestOperation(string buildinPackageName, string buildinPackageVersion)
  19. {
  20. _buildinPackageName = buildinPackageName;
  21. _buildinPackageVersion = buildinPackageVersion;
  22. }
  23. internal override void Start()
  24. {
  25. _steps = ESteps.UnpackManifestHashFile;
  26. }
  27. internal override void Update()
  28. {
  29. if (_steps == ESteps.None || _steps == ESteps.Done)
  30. return;
  31. if (_steps == ESteps.UnpackManifestHashFile)
  32. {
  33. if (_downloader1 == null)
  34. {
  35. var persistent = PersistentTools.GetPersistent(_buildinPackageName);
  36. string savePath = persistent.GetSandboxPackageHashFilePath(_buildinPackageVersion);
  37. string filePath = persistent.GetBuildinPackageHashFilePath(_buildinPackageVersion);
  38. string url = PersistentTools.ConvertToWWWPath(filePath);
  39. _downloader1 = new UnityWebFileRequester();
  40. _downloader1.SendRequest(url, savePath);
  41. }
  42. if (_downloader1.IsDone() == false)
  43. return;
  44. if (_downloader1.HasError())
  45. {
  46. _steps = ESteps.Done;
  47. Status = EOperationStatus.Failed;
  48. Error = _downloader1.GetError();
  49. }
  50. else
  51. {
  52. _steps = ESteps.UnpackManifestFile;
  53. }
  54. _downloader1.Dispose();
  55. }
  56. if (_steps == ESteps.UnpackManifestFile)
  57. {
  58. if (_downloader2 == null)
  59. {
  60. var persistent = PersistentTools.GetPersistent(_buildinPackageName);
  61. string savePath = persistent.GetSandboxPackageManifestFilePath(_buildinPackageVersion);
  62. string filePath = persistent.GetBuildinPackageManifestFilePath(_buildinPackageVersion);
  63. string url = PersistentTools.ConvertToWWWPath(filePath);
  64. _downloader2 = new UnityWebFileRequester();
  65. _downloader2.SendRequest(url, savePath);
  66. }
  67. if (_downloader2.IsDone() == false)
  68. return;
  69. if (_downloader2.HasError())
  70. {
  71. _steps = ESteps.Done;
  72. Status = EOperationStatus.Failed;
  73. Error = _downloader2.GetError();
  74. }
  75. else
  76. {
  77. _steps = ESteps.Done;
  78. Status = EOperationStatus.Succeed;
  79. }
  80. _downloader2.Dispose();
  81. }
  82. }
  83. }
  84. }