diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-06-24 21:51:51 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-06-24 21:51:51 -0400 |
commit | b08e27d13a1f0c82656df95212fc40588b3b5314 (patch) | |
tree | ad38bb6d5bffc699ff0ba0ee0d5cd8e82f929a5f /src/StardewModdingAPI.Toolkit/Serialisation/Models/Manifest.cs | |
parent | 316242eeb2b6b6e711ab98f64c147a59c1d0aab8 (diff) | |
download | SMAPI-b08e27d13a1f0c82656df95212fc40588b3b5314.tar.gz SMAPI-b08e27d13a1f0c82656df95212fc40588b3b5314.tar.bz2 SMAPI-b08e27d13a1f0c82656df95212fc40588b3b5314.zip |
merge IManifest interfaces into new project (#532)
Diffstat (limited to 'src/StardewModdingAPI.Toolkit/Serialisation/Models/Manifest.cs')
-rw-r--r-- | src/StardewModdingAPI.Toolkit/Serialisation/Models/Manifest.cs | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/src/StardewModdingAPI.Toolkit/Serialisation/Models/Manifest.cs b/src/StardewModdingAPI.Toolkit/Serialisation/Models/Manifest.cs index 68987dd1..6ec57258 100644 --- a/src/StardewModdingAPI.Toolkit/Serialisation/Models/Manifest.cs +++ b/src/StardewModdingAPI.Toolkit/Serialisation/Models/Manifest.cs @@ -5,7 +5,7 @@ using StardewModdingAPI.Toolkit.Serialisation.Converters; namespace StardewModdingAPI.Toolkit.Serialisation.Models { /// <summary>A manifest which describes a mod for SMAPI.</summary> - public class Manifest + public class Manifest : IManifest { /********* ** Accessors @@ -20,21 +20,23 @@ namespace StardewModdingAPI.Toolkit.Serialisation.Models public string Author { get; set; } /// <summary>The mod version.</summary> - public SemanticVersion Version { get; set; } + [JsonConverter(typeof(SemanticVersionConverter))] + public ISemanticVersion Version { get; set; } /// <summary>The minimum SMAPI version required by this mod, if any.</summary> - public SemanticVersion MinimumApiVersion { get; set; } + [JsonConverter(typeof(SemanticVersionConverter))] + public ISemanticVersion MinimumApiVersion { get; set; } /// <summary>The name of the DLL in the directory that has the <c>Entry</c> method. Mutually exclusive with <see cref="ContentPackFor"/>.</summary> public string EntryDll { get; set; } /// <summary>The mod which will read this as a content pack. Mutually exclusive with <see cref="Manifest.EntryDll"/>.</summary> [JsonConverter(typeof(ManifestContentPackForConverter))] - public ManifestContentPackFor ContentPackFor { get; set; } + public IManifestContentPackFor ContentPackFor { get; set; } /// <summary>The other mods that must be loaded before this mod.</summary> [JsonConverter(typeof(ManifestDependencyArrayConverter))] - public ManifestDependency[] Dependencies { get; set; } + public IManifestDependency[] Dependencies { get; set; } /// <summary>The namespaced mod IDs to query for updates (like <c>Nexus:541</c>).</summary> public string[] UpdateKeys { get; set; } @@ -45,5 +47,30 @@ namespace StardewModdingAPI.Toolkit.Serialisation.Models /// <summary>Any manifest fields which didn't match a valid field.</summary> [JsonExtensionData] public IDictionary<string, object> ExtraFields { get; set; } + + + /********* + ** Public methods + *********/ + /// <summary>Construct an instance.</summary> + public Manifest() { } + + /// <summary>Construct an instance for a transitional content pack.</summary> + /// <param name="uniqueID">The unique mod ID.</param> + /// <param name="name">The mod name.</param> + /// <param name="author">The mod author's name.</param> + /// <param name="description">A brief description of the mod.</param> + /// <param name="version">The mod version.</param> + /// <param name="contentPackFor">The modID which will read this as a content pack.</param> + public Manifest(string uniqueID, string name, string author, string description, ISemanticVersion version, string contentPackFor = null) + { + this.Name = name; + this.Author = author; + this.Description = description; + this.Version = version; + this.UniqueID = uniqueID; + this.UpdateKeys = new string[0]; + this.ContentPackFor = new ManifestContentPackFor { UniqueID = contentPackFor }; + } } } |