summaryrefslogtreecommitdiff
path: root/src/StardewModdingAPI/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'src/StardewModdingAPI/Framework')
-rw-r--r--src/StardewModdingAPI/Framework/IModMetadata.cs (renamed from src/StardewModdingAPI/Framework/ModLoading/IModMetadata.cs)10
-rw-r--r--src/StardewModdingAPI/Framework/ModHelper.cs7
-rw-r--r--src/StardewModdingAPI/Framework/ModLoading/ModMetadata.cs11
-rw-r--r--src/StardewModdingAPI/Framework/ModRegistry.cs14
4 files changed, 31 insertions, 11 deletions
diff --git a/src/StardewModdingAPI/Framework/ModLoading/IModMetadata.cs b/src/StardewModdingAPI/Framework/IModMetadata.cs
index 3771ffdd..56ac25f1 100644
--- a/src/StardewModdingAPI/Framework/ModLoading/IModMetadata.cs
+++ b/src/StardewModdingAPI/Framework/IModMetadata.cs
@@ -1,6 +1,7 @@
using StardewModdingAPI.Framework.Models;
+using StardewModdingAPI.Framework.ModLoading;
-namespace StardewModdingAPI.Framework.ModLoading
+namespace StardewModdingAPI.Framework
{
/// <summary>Metadata for a mod.</summary>
internal interface IModMetadata
@@ -26,6 +27,9 @@ namespace StardewModdingAPI.Framework.ModLoading
/// <summary>The reason the metadata is invalid, if any.</summary>
string Error { get; }
+ /// <summary>The mod instance (if it was loaded).</summary>
+ IMod Mod { get; }
+
/*********
** Public methods
@@ -35,5 +39,9 @@ namespace StardewModdingAPI.Framework.ModLoading
/// <param name="error">The reason the metadata is invalid, if any.</param>
/// <returns>Return the instance for chaining.</returns>
IModMetadata SetStatus(ModMetadataStatus status, string error = null);
+
+ /// <summary>Set the mod instance.</summary>
+ /// <param name="mod">The mod instance to set.</param>
+ IModMetadata SetMod(IMod mod);
}
}
diff --git a/src/StardewModdingAPI/Framework/ModHelper.cs b/src/StardewModdingAPI/Framework/ModHelper.cs
index 7810148c..f939b83c 100644
--- a/src/StardewModdingAPI/Framework/ModHelper.cs
+++ b/src/StardewModdingAPI/Framework/ModHelper.cs
@@ -37,6 +37,7 @@ namespace StardewModdingAPI.Framework
** Public methods
*********/
/// <summary>Construct an instance.</summary>
+ /// <param name="displayName">The mod's display name.</param>
/// <param name="manifest">The manifest for the associated mod.</param>
/// <param name="modDirectory">The full path to the mod's folder.</param>
/// <param name="jsonHelper">Encapsulate SMAPI's JSON parsing.</param>
@@ -46,7 +47,7 @@ namespace StardewModdingAPI.Framework
/// <param name="reflection">Simplifies access to private game code.</param>
/// <exception cref="ArgumentNullException">An argument is null or empty.</exception>
/// <exception cref="InvalidOperationException">The <paramref name="modDirectory"/> path does not exist on disk.</exception>
- public ModHelper(IManifest manifest, string modDirectory, JsonHelper jsonHelper, IModRegistry modRegistry, CommandManager commandManager, SContentManager contentManager, IReflectionHelper reflection)
+ public ModHelper(string displayName, IManifest manifest, string modDirectory, JsonHelper jsonHelper, IModRegistry modRegistry, CommandManager commandManager, SContentManager contentManager, IReflectionHelper reflection)
{
// validate
if (string.IsNullOrWhiteSpace(modDirectory))
@@ -61,9 +62,9 @@ namespace StardewModdingAPI.Framework
// initialise
this.DirectoryPath = modDirectory;
this.JsonHelper = jsonHelper;
- this.Content = new ContentHelper(contentManager, modDirectory, manifest.Name);
+ this.Content = new ContentHelper(contentManager, modDirectory, displayName);
this.ModRegistry = modRegistry;
- this.ConsoleCommands = new CommandHelper(manifest.Name, commandManager);
+ this.ConsoleCommands = new CommandHelper(displayName, commandManager);
this.Reflection = reflection;
}
diff --git a/src/StardewModdingAPI/Framework/ModLoading/ModMetadata.cs b/src/StardewModdingAPI/Framework/ModLoading/ModMetadata.cs
index 7b25e090..ab590e10 100644
--- a/src/StardewModdingAPI/Framework/ModLoading/ModMetadata.cs
+++ b/src/StardewModdingAPI/Framework/ModLoading/ModMetadata.cs
@@ -26,6 +26,9 @@ namespace StardewModdingAPI.Framework.ModLoading
/// <summary>The reason the metadata is invalid, if any.</summary>
public string Error { get; private set; }
+ /// <summary>The mod instance (if it was loaded).</summary>
+ public IMod Mod { get; private set; }
+
/*********
** Public methods
@@ -53,5 +56,13 @@ namespace StardewModdingAPI.Framework.ModLoading
this.Error = error;
return this;
}
+
+ /// <summary>Set the mod instance.</summary>
+ /// <param name="mod">The mod instance to set.</param>
+ public IModMetadata SetMod(IMod mod)
+ {
+ this.Mod = mod;
+ return this;
+ }
}
}
diff --git a/src/StardewModdingAPI/Framework/ModRegistry.cs b/src/StardewModdingAPI/Framework/ModRegistry.cs
index 3899aa3f..62063fbd 100644
--- a/src/StardewModdingAPI/Framework/ModRegistry.cs
+++ b/src/StardewModdingAPI/Framework/ModRegistry.cs
@@ -13,7 +13,7 @@ namespace StardewModdingAPI.Framework
** Properties
*********/
/// <summary>The registered mod data.</summary>
- private readonly List<IMod> Mods = new List<IMod>();
+ private readonly List<IModMetadata> Mods = new List<IModMetadata>();
/// <summary>The friendly mod names treated as deprecation warning sources (assembly full name => mod name).</summary>
private readonly IDictionary<string, string> ModNamesByAssembly = new Dictionary<string, string>();
@@ -28,7 +28,7 @@ namespace StardewModdingAPI.Framework
/// <summary>Get metadata for all loaded mods.</summary>
public IEnumerable<IManifest> GetAll()
{
- return this.Mods.Select(p => p.ModManifest);
+ return this.Mods.Select(p => p.Manifest);
}
/// <summary>Get metadata for a loaded mod.</summary>
@@ -50,15 +50,15 @@ namespace StardewModdingAPI.Framework
** Internal methods
****/
/// <summary>Register a mod as a possible source of deprecation warnings.</summary>
- /// <param name="mod">The mod instance.</param>
- public void Add(IMod mod)
+ /// <param name="metadata">The mod metadata.</param>
+ public void Add(IModMetadata metadata)
{
- this.Mods.Add(mod);
- this.ModNamesByAssembly[mod.GetType().Assembly.FullName] = mod.ModManifest.Name;
+ this.Mods.Add(metadata);
+ this.ModNamesByAssembly[metadata.Mod.GetType().Assembly.FullName] = metadata.DisplayName;
}
/// <summary>Get all enabled mods.</summary>
- public IEnumerable<IMod> GetMods()
+ public IEnumerable<IModMetadata> GetMods()
{
return (from mod in this.Mods select mod);
}