You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.3 KiB

  1. using IPA.JsonConverters;
  2. using IPA.Utilities;
  3. using Newtonsoft.Json;
  4. using SemVer;
  5. using System;
  6. using System.Collections.Generic;
  7. using Version = SemVer.Version;
  8. namespace IPA.Loader
  9. {
  10. internal class PluginManifest
  11. {
  12. [JsonProperty("name", Required = Required.Always)]
  13. public string Name;
  14. [JsonProperty("id", Required = Required.AllowNull)]
  15. public string Id;
  16. [JsonProperty("description", Required = Required.Always), JsonConverter(typeof(MultilineStringConverter))]
  17. public string Description;
  18. [JsonProperty("version", Required = Required.Always), JsonConverter(typeof(SemverVersionConverter))]
  19. public Version Version;
  20. [JsonProperty("gameVersion", Required = Required.Always), JsonConverter(typeof(AlmostVersionConverter))]
  21. public AlmostVersion GameVersion;
  22. [JsonProperty("author", Required = Required.Always)]
  23. public string Author;
  24. [JsonProperty("dependsOn", Required = Required.DisallowNull, ItemConverterType = typeof(SemverRangeConverter))]
  25. public Dictionary<string, Range> Dependencies = new Dictionary<string, Range>();
  26. [JsonProperty("conflictsWith", Required = Required.DisallowNull, ItemConverterType = typeof(SemverRangeConverter))]
  27. public Dictionary<string, Range> Conflicts = new Dictionary<string, Range>();
  28. [JsonProperty("features", Required = Required.DisallowNull)]
  29. public string[] Features = new string[0];
  30. [JsonProperty("loadBefore", Required = Required.DisallowNull)]
  31. public string[] LoadBefore = new string[0];
  32. [JsonProperty("loadAfter", Required = Required.DisallowNull)]
  33. public string[] LoadAfter = new string[0];
  34. [JsonProperty("icon", Required = Required.DisallowNull)]
  35. public string IconPath = null;
  36. [Serializable]
  37. public class LinksObject
  38. {
  39. [JsonProperty("project-home", Required = Required.DisallowNull)]
  40. public Uri ProjectHome = null;
  41. [JsonProperty("project-source", Required = Required.DisallowNull)]
  42. public Uri ProjectSource = null;
  43. [JsonProperty("donate", Required = Required.DisallowNull)]
  44. public Uri Donate = null;
  45. }
  46. [JsonProperty("links", Required = Required.DisallowNull)]
  47. public LinksObject Links = null;
  48. }
  49. }