diff options
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.cs | 7 | ||||
-rw-r--r-- | src/StardewModdingAPI/Framework/ModLoading/ModMetadata.cs | 11 | ||||
-rw-r--r-- | src/StardewModdingAPI/Framework/ModRegistry.cs | 14 |
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); } |