From ade1a692a38efe12cdb1889883ec6b1179a9df6b Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Wed, 1 Mar 2017 20:20:58 -0500 Subject: deprecate `IConfigFile` (#238) --- src/StardewModdingAPI/Advanced/ConfigFile.cs | 4 +++- src/StardewModdingAPI/Advanced/IConfigFile.cs | 5 ++++- src/StardewModdingAPI/Framework/ModHelper.cs | 15 ++++++++++++++- src/StardewModdingAPI/Program.cs | 1 + 4 files changed, 22 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/StardewModdingAPI/Advanced/ConfigFile.cs b/src/StardewModdingAPI/Advanced/ConfigFile.cs index 1a2e6618..78cad26a 100644 --- a/src/StardewModdingAPI/Advanced/ConfigFile.cs +++ b/src/StardewModdingAPI/Advanced/ConfigFile.cs @@ -1,9 +1,11 @@ -using System.IO; +using System; +using System.IO; using Newtonsoft.Json; namespace StardewModdingAPI.Advanced { /// Wraps a configuration file with IO methods for convenience. + [Obsolete] public abstract class ConfigFile : IConfigFile { /********* diff --git a/src/StardewModdingAPI/Advanced/IConfigFile.cs b/src/StardewModdingAPI/Advanced/IConfigFile.cs index 5bc31a88..1b424ace 100644 --- a/src/StardewModdingAPI/Advanced/IConfigFile.cs +++ b/src/StardewModdingAPI/Advanced/IConfigFile.cs @@ -1,6 +1,9 @@ -namespace StardewModdingAPI.Advanced +using System; + +namespace StardewModdingAPI.Advanced { /// Wraps a configuration file with IO methods for convenience. + [Obsolete] public interface IConfigFile { /********* diff --git a/src/StardewModdingAPI/Framework/ModHelper.cs b/src/StardewModdingAPI/Framework/ModHelper.cs index 04767de5..0d50201b 100644 --- a/src/StardewModdingAPI/Framework/ModHelper.cs +++ b/src/StardewModdingAPI/Framework/ModHelper.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using StardewModdingAPI.Advanced; using StardewModdingAPI.Framework.Reflection; using StardewModdingAPI.Framework.Serialisation; @@ -14,6 +15,9 @@ namespace StardewModdingAPI.Framework /// Encapsulates SMAPI's JSON file parsing. private readonly JsonHelper JsonHelper; + /// Manages deprecation warnings. + private static DeprecationManager DeprecationManager; + /********* ** Accessors @@ -61,6 +65,13 @@ namespace StardewModdingAPI.Framework this.ConsoleCommands = new CommandHelper(modName, commandManager); } + /// Injects types required for backwards compatibility. + /// Manages deprecation warnings. + internal static void Shim(DeprecationManager deprecationManager) + { + ModHelper.DeprecationManager = deprecationManager; + } + /**** ** Mod config file ****/ @@ -69,7 +80,9 @@ namespace StardewModdingAPI.Framework public TConfig ReadConfig() where TConfig : class, new() { - var config = this.ReadJsonFile("config.json") ?? new TConfig(); + TConfig config = this.ReadJsonFile("config.json") ?? new TConfig(); + if (config is IConfigFile) + ModHelper.DeprecationManager.Warn($"{nameof(IConfigFile)}", "1.9", DeprecationLevel.Info); this.WriteConfig(config); // create file or fill in missing fields return config; } diff --git a/src/StardewModdingAPI/Program.cs b/src/StardewModdingAPI/Program.cs index 360f75f0..6ebeccd2 100644 --- a/src/StardewModdingAPI/Program.cs +++ b/src/StardewModdingAPI/Program.cs @@ -98,6 +98,7 @@ namespace StardewModdingAPI InternalExtensions.Shim(this.ModRegistry); Log.Shim(this.DeprecationManager, this.GetSecondaryMonitor("legacy mod"), this.ModRegistry); Mod.Shim(this.DeprecationManager); + ModHelper.Shim(this.DeprecationManager); ContentEvents.Shim(this.ModRegistry, this.Monitor); PlayerEvents.Shim(this.DeprecationManager); TimeEvents.Shim(this.DeprecationManager); -- cgit