RequestPackageVersionOperation.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. 
  2. namespace YooAsset
  3. {
  4. public abstract class RequestPackageVersionOperation : AsyncOperationBase
  5. {
  6. /// <summary>
  7. /// 当前最新的包裹版本
  8. /// </summary>
  9. public string PackageVersion { protected set; get; }
  10. }
  11. internal sealed class RequestPackageVersionImplOperation : RequestPackageVersionOperation
  12. {
  13. private enum ESteps
  14. {
  15. None,
  16. RequestPackageVersion,
  17. Done,
  18. }
  19. private readonly PlayModeImpl _impl;
  20. private readonly bool _appendTimeTicks;
  21. private readonly int _timeout;
  22. private FSRequestPackageVersionOperation _requestPackageVersionOp;
  23. private ESteps _steps = ESteps.None;
  24. internal RequestPackageVersionImplOperation(PlayModeImpl impl, bool appendTimeTicks, int timeout)
  25. {
  26. _impl = impl;
  27. _appendTimeTicks = appendTimeTicks;
  28. _timeout = timeout;
  29. }
  30. internal override void InternalStart()
  31. {
  32. _steps = ESteps.RequestPackageVersion;
  33. }
  34. internal override void InternalUpdate()
  35. {
  36. if (_steps == ESteps.None || _steps == ESteps.Done)
  37. return;
  38. if (_steps == ESteps.RequestPackageVersion)
  39. {
  40. if (_requestPackageVersionOp == null)
  41. {
  42. var mainFileSystem = _impl.GetMainFileSystem();
  43. _requestPackageVersionOp = mainFileSystem.RequestPackageVersionAsync(_appendTimeTicks, _timeout);
  44. _requestPackageVersionOp.StartOperation();
  45. AddChildOperation(_requestPackageVersionOp);
  46. }
  47. _requestPackageVersionOp.UpdateOperation();
  48. if (_requestPackageVersionOp.IsDone == false)
  49. return;
  50. if (_requestPackageVersionOp.Status == EOperationStatus.Succeed)
  51. {
  52. _steps = ESteps.Done;
  53. PackageVersion = _requestPackageVersionOp.PackageVersion;
  54. Status = EOperationStatus.Succeed;
  55. }
  56. else
  57. {
  58. _steps = ESteps.Done;
  59. Status = EOperationStatus.Failed;
  60. Error = _requestPackageVersionOp.Error;
  61. }
  62. }
  63. }
  64. }
  65. }