From 6045351395f6b74846a2b18b131f662b88641569 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Thu, 13 Dec 2018 02:00:30 -0500 Subject: simplify access to deprecation manager for deprecation warnings --- src/SMAPI/Framework/SCore.cs | 51 ++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 25 deletions(-) (limited to 'src/SMAPI/Framework/SCore.cs') diff --git a/src/SMAPI/Framework/SCore.cs b/src/SMAPI/Framework/SCore.cs index 76b091d0..3749bab4 100644 --- a/src/SMAPI/Framework/SCore.cs +++ b/src/SMAPI/Framework/SCore.cs @@ -75,10 +75,6 @@ namespace StardewModdingAPI.Framework /// This is initialised after the game starts. private readonly ModRegistry ModRegistry = new ModRegistry(); - /// Manages deprecation warnings. - /// This is initialised after the game starts. - private readonly DeprecationManager DeprecationManager; - /// Manages SMAPI events for mods. private readonly EventManager EventManager; @@ -120,6 +116,14 @@ namespace StardewModdingAPI.Framework private string ModsPath => Constants.ModsPath; + /********* + ** Accessors + *********/ + /// Manages deprecation warnings. + /// This is initialised after the game starts. This is accessed directly because it's not part of the normal class model. + internal static DeprecationManager DeprecationManager { get; private set; } + + /********* ** Public methods *********/ @@ -148,15 +152,12 @@ namespace StardewModdingAPI.Framework }; this.MonitorForGame = this.GetSecondaryMonitor("game"); this.EventManager = new EventManager(this.Monitor, this.ModRegistry); - this.DeprecationManager = new DeprecationManager(this.Monitor, this.ModRegistry); + SCore.DeprecationManager = new DeprecationManager(this.Monitor, this.ModRegistry); // redirect direct console output if (this.MonitorForGame.WriteToConsole) this.ConsoleManager.OnMessageIntercepted += message => this.HandleConsoleMessage(this.MonitorForGame, message); - // inject deprecation managers - SemanticVersion.DeprecationManager = this.DeprecationManager; - // init logging this.Monitor.Log($"SMAPI {Constants.ApiVersion} with Stardew Valley {Constants.GameVersion} on {EnvironmentUtility.GetFriendlyPlatformName(Constants.Platform)}", LogLevel.Info); this.Monitor.Log($"Mods go here: {modsPath}"); @@ -196,19 +197,19 @@ namespace StardewModdingAPI.Framework { #if !SMAPI_3_0_STRICT // hook up events - ContentEvents.Init(this.EventManager, this.DeprecationManager); - ControlEvents.Init(this.EventManager, this.DeprecationManager); - GameEvents.Init(this.EventManager, this.DeprecationManager); - GraphicsEvents.Init(this.EventManager, this.DeprecationManager); - InputEvents.Init(this.EventManager, this.DeprecationManager); - LocationEvents.Init(this.EventManager, this.DeprecationManager); - MenuEvents.Init(this.EventManager, this.DeprecationManager); - MineEvents.Init(this.EventManager, this.DeprecationManager); - MultiplayerEvents.Init(this.EventManager, this.DeprecationManager); - PlayerEvents.Init(this.EventManager, this.DeprecationManager); - SaveEvents.Init(this.EventManager, this.DeprecationManager); - SpecialisedEvents.Init(this.EventManager, this.DeprecationManager); - TimeEvents.Init(this.EventManager, this.DeprecationManager); + ContentEvents.Init(this.EventManager); + ControlEvents.Init(this.EventManager); + GameEvents.Init(this.EventManager); + GraphicsEvents.Init(this.EventManager); + InputEvents.Init(this.EventManager); + LocationEvents.Init(this.EventManager); + MenuEvents.Init(this.EventManager); + MineEvents.Init(this.EventManager); + MultiplayerEvents.Init(this.EventManager); + PlayerEvents.Init(this.EventManager); + SaveEvents.Init(this.EventManager); + SpecialisedEvents.Init(this.EventManager); + TimeEvents.Init(this.EventManager); #endif // init JSON parser @@ -232,7 +233,7 @@ namespace StardewModdingAPI.Framework // override game SGame.ConstructorHack = new SGameConstructorHack(this.Monitor, this.Reflection, this.Toolkit.JsonHelper); - this.GameInstance = new SGame(this.Monitor, this.MonitorForGame, this.Reflection, this.EventManager, this.Toolkit.JsonHelper, this.ModRegistry, this.DeprecationManager, this.OnLocaleChanged, this.InitialiseAfterGameStart, this.Dispose); + this.GameInstance = new SGame(this.Monitor, this.MonitorForGame, this.Reflection, this.EventManager, this.Toolkit.JsonHelper, this.ModRegistry, SCore.DeprecationManager, this.OnLocaleChanged, this.InitialiseAfterGameStart, this.Dispose); StardewValley.Program.gamePtr = this.GameInstance; // add exit handler @@ -920,7 +921,7 @@ namespace StardewModdingAPI.Framework // add deprecation warning for old version format { if (mod.Manifest?.Version is Toolkit.SemanticVersion version && version.IsLegacyFormat) - this.DeprecationManager.Warn(mod.DisplayName, "non-string manifest version", "2.8", DeprecationLevel.Notice); + SCore.DeprecationManager.Warn(mod.DisplayName, "non-string manifest version", "2.8", DeprecationLevel.Notice); } #endif @@ -1016,7 +1017,7 @@ namespace StardewModdingAPI.Framework IContentHelper contentHelper = new ContentHelper(contentCore, mod.DirectoryPath, manifest.UniqueID, mod.DisplayName, monitor); IContentPackHelper contentPackHelper = new ContentPackHelper(manifest.UniqueID, new Lazy(GetContentPacks), CreateFakeContentPack); IDataHelper dataHelper = new DataHelper(manifest.UniqueID, mod.DirectoryPath, jsonHelper); - IReflectionHelper reflectionHelper = new ReflectionHelper(manifest.UniqueID, mod.DisplayName, this.Reflection, this.DeprecationManager); + IReflectionHelper reflectionHelper = new ReflectionHelper(manifest.UniqueID, mod.DisplayName, this.Reflection); IModRegistry modRegistryHelper = new ModRegistryHelper(manifest.UniqueID, this.ModRegistry, proxyFactory, monitor); IMultiplayerHelper multiplayerHelper = new MultiplayerHelper(manifest.UniqueID, this.GameInstance.Multiplayer); ITranslationHelper translationHelper = new TranslationHelper(manifest.UniqueID, manifest.Name, contentCore.GetLocale(), contentCore.Language); @@ -1028,7 +1029,7 @@ namespace StardewModdingAPI.Framework return new ContentPack(packDirPath, packManifest, packContentHelper, this.Toolkit.JsonHelper); } - modHelper = new ModHelper(manifest.UniqueID, mod.DirectoryPath, this.Toolkit.JsonHelper, this.GameInstance.Input, events, contentHelper, contentPackHelper, commandHelper, dataHelper, modRegistryHelper, reflectionHelper, multiplayerHelper, translationHelper, this.DeprecationManager); + modHelper = new ModHelper(manifest.UniqueID, mod.DirectoryPath, this.Toolkit.JsonHelper, this.GameInstance.Input, events, contentHelper, contentPackHelper, commandHelper, dataHelper, modRegistryHelper, reflectionHelper, multiplayerHelper, translationHelper); } // init mod -- cgit