ClearHistory.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System.Collections.Generic;
  2. using System.IO;
  3. namespace VEngine
  4. {
  5. public sealed class ClearHistory : Operation
  6. {
  7. public readonly List<string> files = new List<string>();
  8. private int count;
  9. public override void Start()
  10. {
  11. base.Start();
  12. files.AddRange(Directory.GetFiles(Versions.DownloadDataPath));
  13. var usedFiles = new List<string>();
  14. var manifest = Versions.Manifest;
  15. usedFiles.Add(Manifest.GetVersionFile(manifest.name));
  16. usedFiles.Add(manifest.name);
  17. foreach (var bundle in manifest.bundles)
  18. {
  19. if (string.IsNullOrEmpty(bundle.nameWithAppendHash)) continue;
  20. usedFiles.Add(bundle.nameWithAppendHash);
  21. }
  22. files.RemoveAll(file =>
  23. {
  24. var name = Path.GetFileName(file);
  25. return usedFiles.Contains(name);
  26. });
  27. count = files.Count;
  28. }
  29. protected override void Update()
  30. {
  31. if (status == OperationStatus.Processing)
  32. {
  33. while (files.Count > 0)
  34. {
  35. progress = (count - files.Count) * 1f / count;
  36. var file = files[0];
  37. if (File.Exists(file)) File.Delete(file);
  38. files.RemoveAt(0);
  39. if (Updater.Instance.busy) break;
  40. }
  41. Finish();
  42. }
  43. }
  44. }
  45. }