summaryrefslogtreecommitdiff
path: root/src/StardewModdingAPI.Toolkit/Serialisation/Models/Manifest.cs
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2018-06-24 21:51:51 -0400
committerJesse Plamondon-Willard <github@jplamondonw.com>2018-06-24 21:51:51 -0400
commitb08e27d13a1f0c82656df95212fc40588b3b5314 (patch)
treead38bb6d5bffc699ff0ba0ee0d5cd8e82f929a5f /src/StardewModdingAPI.Toolkit/Serialisation/Models/Manifest.cs
parent316242eeb2b6b6e711ab98f64c147a59c1d0aab8 (diff)
downloadSMAPI-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.cs37
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 };
+ }
}
}