Package.DependencyInfo.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using System;
  2. namespace TBL.GodotSharp.Content;
  3. public partial class Package
  4. {
  5. /// <summary>
  6. /// 包信息
  7. /// </summary>
  8. public struct Info
  9. {
  10. /// <summary>
  11. /// 包名称
  12. /// </summary>
  13. public readonly string Name;
  14. /// <summary>
  15. /// 作者信息
  16. /// </summary>
  17. public readonly string AuthorInfo;
  18. /// <summary>
  19. /// 版本信息
  20. /// </summary>
  21. public readonly Version VersionInfo;
  22. public Info(string name, string author, string version)
  23. {
  24. Name = name;
  25. AuthorInfo = author;
  26. if (!Version.TryParse(version, out VersionInfo))
  27. VersionInfo = new Version();
  28. }
  29. /// <summary>
  30. /// 判断本信息能否满足 <paramref name="target"/> 的版本要求
  31. /// </summary>
  32. /// <param name="target">依赖项信息</param>
  33. public readonly bool IsCompatibleWith(DependencyInfo target)
  34. {
  35. return Content.IsCompatibleWith(VersionInfo, target.Target.VersionInfo,
  36. (target.Flags & DependencyInfo.FlagsEnum.Strict) != 0 ? 1 : 0);
  37. }
  38. }
  39. /// <summary>
  40. /// 包依赖信息
  41. /// </summary>
  42. public struct DependencyInfo
  43. {
  44. /// <summary>
  45. /// 依赖目标
  46. /// </summary>
  47. public readonly Info Target;
  48. /// <summary>
  49. /// 依赖属性
  50. /// </summary>
  51. public readonly FlagsEnum Flags;
  52. /// <summary>
  53. /// 依赖项属性
  54. /// </summary>
  55. [Flags]
  56. public enum FlagsEnum
  57. {
  58. /// <summary>
  59. /// 无属性
  60. /// </summary>
  61. None,
  62. /// <summary>
  63. /// 非必须依赖项
  64. /// </summary>
  65. Unnecessary,
  66. /// <summary>
  67. /// 严格(次版本号)兼容依赖项
  68. /// </summary>
  69. Strict
  70. }
  71. public DependencyInfo(Info target, FlagsEnum flags = FlagsEnum.None)
  72. {
  73. Target = target;
  74. Flags = flags;
  75. }
  76. }
  77. }