FsmDownloadWebFiles.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System.Collections;
  2. using Cysharp.Threading.Tasks;
  3. using ET;
  4. using YooAsset;
  5. public class FsmDownloadWebFiles : IFsmNode
  6. {
  7. public string Name { private set; get; } = nameof(FsmDownloadWebFiles);
  8. void IFsmNode.OnEnter()
  9. {
  10. PatchEventDispatcher.SendPatchStepsChangeMsg(EPatchStates.DownloadWebFiles);
  11. BeginDownload().Forget();
  12. }
  13. void IFsmNode.OnUpdate()
  14. {
  15. }
  16. void IFsmNode.OnExit()
  17. {
  18. }
  19. private async UniTaskVoid BeginDownload()
  20. {
  21. var downloader = PatchUpdater.Downloader;
  22. UniTaskCompletionSource uniTaskCompletionSource = new UniTaskCompletionSource();
  23. // 注册下载回调
  24. downloader.OnDownloadErrorCallback = PatchEventDispatcher.SendWebFileDownloadFailedMsg;
  25. downloader.OnDownloadProgressCallback = PatchEventDispatcher.SendDownloadProgressUpdateMsg;
  26. downloader.BeginDownload();
  27. downloader.Completed += _ => { uniTaskCompletionSource.TrySetResult(); };
  28. await uniTaskCompletionSource.Task;
  29. // 检测下载结果
  30. if (downloader.Status != EOperationStatus.Succeed)
  31. return;
  32. FsmManager.Transition(nameof(FsmPatchDone));
  33. }
  34. }