PackageCachingOperation.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.IO;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. namespace YooAsset
  6. {
  7. internal class PackageCachingOperation : AsyncOperationBase
  8. {
  9. private enum ESteps
  10. {
  11. None,
  12. FindCacheFiles,
  13. VerifyCacheFiles,
  14. Done,
  15. }
  16. private readonly string _packageName;
  17. private FindCacheFilesOperation _findCacheFilesOp;
  18. private VerifyCacheFilesOperation _verifyCacheFilesOp;
  19. private ESteps _steps = ESteps.None;
  20. public PackageCachingOperation(string packageName)
  21. {
  22. _packageName = packageName;
  23. }
  24. internal override void Start()
  25. {
  26. _steps = ESteps.FindCacheFiles;
  27. }
  28. internal override void Update()
  29. {
  30. if (_steps == ESteps.None || _steps == ESteps.Done)
  31. return;
  32. if (_steps == ESteps.FindCacheFiles)
  33. {
  34. if (_findCacheFilesOp == null)
  35. {
  36. _findCacheFilesOp = new FindCacheFilesOperation(_packageName);
  37. OperationSystem.StartOperation(_findCacheFilesOp);
  38. }
  39. Progress = _findCacheFilesOp.Progress;
  40. if (_findCacheFilesOp.IsDone == false)
  41. return;
  42. _steps = ESteps.VerifyCacheFiles;
  43. }
  44. if (_steps == ESteps.VerifyCacheFiles)
  45. {
  46. if (_verifyCacheFilesOp == null)
  47. {
  48. _verifyCacheFilesOp = VerifyCacheFilesOperation.CreateOperation(_findCacheFilesOp.VerifyElements);
  49. OperationSystem.StartOperation(_verifyCacheFilesOp);
  50. }
  51. Progress = _verifyCacheFilesOp.Progress;
  52. if (_verifyCacheFilesOp.IsDone == false)
  53. return;
  54. // 注意:总是返回成功
  55. _steps = ESteps.Done;
  56. Status = EOperationStatus.Succeed;
  57. int totalCount = CacheSystem.GetCachedFilesCount(_packageName);
  58. YooLogger.Log($"Package '{_packageName}' cached files count : {totalCount}");
  59. }
  60. }
  61. }
  62. }