summaryrefslogtreecommitdiff
path: root/src/SMAPI/Framework
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2017-12-11 23:33:10 -0500
committerJesse Plamondon-Willard <github@jplamondonw.com>2017-12-11 23:33:10 -0500
commit2c909f26fcf48fc1de7f3b23f5f83d28d4a5e253 (patch)
tree437e1eedf1bddf7204a800104c370cf238dcac3b /src/SMAPI/Framework
parent971aff8368a8a2c196d942984926efc2f80cc216 (diff)
downloadSMAPI-2c909f26fcf48fc1de7f3b23f5f83d28d4a5e253.tar.gz
SMAPI-2c909f26fcf48fc1de7f3b23f5f83d28d4a5e253.tar.bz2
SMAPI-2c909f26fcf48fc1de7f3b23f5f83d28d4a5e253.zip
add prototype of mod-provided APIs (#409)
Diffstat (limited to 'src/SMAPI/Framework')
-rw-r--r--src/SMAPI/Framework/IModMetadata.cs6
-rw-r--r--src/SMAPI/Framework/ModHelpers/ModRegistryHelper.cs6
-rw-r--r--src/SMAPI/Framework/ModLoading/ModMetadata.cs7
3 files changed, 17 insertions, 2 deletions
diff --git a/src/SMAPI/Framework/IModMetadata.cs b/src/SMAPI/Framework/IModMetadata.cs
index c21734a7..c4be7daf 100644
--- a/src/SMAPI/Framework/IModMetadata.cs
+++ b/src/SMAPI/Framework/IModMetadata.cs
@@ -30,6 +30,9 @@ namespace StardewModdingAPI.Framework
/// <summary>The mod instance (if it was loaded).</summary>
IMod Mod { get; }
+ /// <summary>The mod-provided API (if any).</summary>
+ IModProvidedApi Api { get; }
+
/*********
** Public methods
@@ -42,6 +45,7 @@ namespace StardewModdingAPI.Framework
/// <summary>Set the mod instance.</summary>
/// <param name="mod">The mod instance to set.</param>
- IModMetadata SetMod(IMod mod);
+ /// <param name="api">The mod-provided API (if any).</param>
+ IModMetadata SetMod(IMod mod, IModProvidedApi api);
}
}
diff --git a/src/SMAPI/Framework/ModHelpers/ModRegistryHelper.cs b/src/SMAPI/Framework/ModHelpers/ModRegistryHelper.cs
index 4e3f56de..340205f3 100644
--- a/src/SMAPI/Framework/ModHelpers/ModRegistryHelper.cs
+++ b/src/SMAPI/Framework/ModHelpers/ModRegistryHelper.cs
@@ -45,5 +45,11 @@ namespace StardewModdingAPI.Framework.ModHelpers
{
return this.Registry.Get(uniqueID) != null;
}
+
+ /// <summary>Get the API provided by a mod, or <c>null</c> if it has none. This signature requires using the <see cref="IModHelper.Reflection"/> API to access the API's properties and methods.</summary>
+ public IModProvidedApi GetApi(string uniqueID)
+ {
+ return this.Registry.Get(uniqueID)?.Api;
+ }
}
}
diff --git a/src/SMAPI/Framework/ModLoading/ModMetadata.cs b/src/SMAPI/Framework/ModLoading/ModMetadata.cs
index 5055da75..2e5c27be 100644
--- a/src/SMAPI/Framework/ModLoading/ModMetadata.cs
+++ b/src/SMAPI/Framework/ModLoading/ModMetadata.cs
@@ -29,6 +29,9 @@ namespace StardewModdingAPI.Framework.ModLoading
/// <summary>The mod instance (if it was loaded).</summary>
public IMod Mod { get; private set; }
+ /// <summary>The mod-provided API (if any).</summary>
+ public IModProvidedApi Api { get; private set; }
+
/*********
** Public methods
@@ -59,9 +62,11 @@ namespace StardewModdingAPI.Framework.ModLoading
/// <summary>Set the mod instance.</summary>
/// <param name="mod">The mod instance to set.</param>
- public IModMetadata SetMod(IMod mod)
+ /// <param name="api">The mod-provided API (if any).</param>
+ public IModMetadata SetMod(IMod mod, IModProvidedApi api)
{
this.Mod = mod;
+ this.Api = api;
return this;
}
}