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.CoreInterfaces | |
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.CoreInterfaces')
3 files changed, 74 insertions, 0 deletions
diff --git a/src/StardewModdingAPI.Toolkit.CoreInterfaces/IManifest.cs b/src/StardewModdingAPI.Toolkit.CoreInterfaces/IManifest.cs new file mode 100644 index 00000000..6c07d374 --- /dev/null +++ b/src/StardewModdingAPI.Toolkit.CoreInterfaces/IManifest.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; + +namespace StardewModdingAPI +{ + /// <summary>A manifest which describes a mod for SMAPI.</summary> + public interface IManifest + { + /********* + ** Accessors + *********/ + /// <summary>The mod name.</summary> + string Name { get; } + + /// <summary>A brief description of the mod.</summary> + string Description { get; } + + /// <summary>The mod author's name.</summary> + string Author { get; } + + /// <summary>The mod version.</summary> + ISemanticVersion Version { get; } + + /// <summary>The minimum SMAPI version required by this mod, if any.</summary> + ISemanticVersion MinimumApiVersion { get; } + + /// <summary>The unique mod ID.</summary> + string UniqueID { get; } + + /// <summary>The name of the DLL in the directory that has the <see cref="IMod.Entry"/> method. Mutually exclusive with <see cref="EntryDll"/>.</summary> + string EntryDll { get; } + + /// <summary>The mod which will read this as a content pack. Mutually exclusive with <see cref="EntryDll"/>.</summary> + IManifestContentPackFor ContentPackFor { get; } + + /// <summary>The other mods that must be loaded before this mod.</summary> + IManifestDependency[] Dependencies { get; } + + /// <summary>The namespaced mod IDs to query for updates (like <c>Nexus:541</c>).</summary> + string[] UpdateKeys { get; } + + /// <summary>Any manifest fields which didn't match a valid field.</summary> + IDictionary<string, object> ExtraFields { get; } + } +} diff --git a/src/StardewModdingAPI.Toolkit.CoreInterfaces/IManifestContentPackFor.cs b/src/StardewModdingAPI.Toolkit.CoreInterfaces/IManifestContentPackFor.cs new file mode 100644 index 00000000..f05a3873 --- /dev/null +++ b/src/StardewModdingAPI.Toolkit.CoreInterfaces/IManifestContentPackFor.cs @@ -0,0 +1,12 @@ +namespace StardewModdingAPI +{ + /// <summary>Indicates which mod can read the content pack represented by the containing manifest.</summary> + public interface IManifestContentPackFor + { + /// <summary>The unique ID of the mod which can read this content pack.</summary> + string UniqueID { get; } + + /// <summary>The minimum required version (if any).</summary> + ISemanticVersion MinimumVersion { get; } + } +} diff --git a/src/StardewModdingAPI.Toolkit.CoreInterfaces/IManifestDependency.cs b/src/StardewModdingAPI.Toolkit.CoreInterfaces/IManifestDependency.cs new file mode 100644 index 00000000..e86cd1f4 --- /dev/null +++ b/src/StardewModdingAPI.Toolkit.CoreInterfaces/IManifestDependency.cs @@ -0,0 +1,18 @@ +namespace StardewModdingAPI +{ + /// <summary>A mod dependency listed in a mod manifest.</summary> + public interface IManifestDependency + { + /********* + ** Accessors + *********/ + /// <summary>The unique mod ID to require.</summary> + string UniqueID { get; } + + /// <summary>The minimum required version (if any).</summary> + ISemanticVersion MinimumVersion { get; } + + /// <summary>Whether the dependency must be installed to use the mod.</summary> + bool IsRequired { get; } + } +} |