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.

63 lines
2.3 KiB

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