From 61d857c41fc2b90cd495c4923251cb1ed472e5ca Mon Sep 17 00:00:00 2001 From: Patrick Müssig Date: Sat, 2 Apr 2022 03:47:52 +0200 Subject: Added support for `--developer-mode true|false` Minimal changes required to enable/disable developer mode via command line argument. This commit does not include any error handling for invalid values how ever they will be ignored and not crash the game. --- src/SMAPI/Framework/SCore.cs | 10 +++++++++- src/SMAPI/Program.cs | 19 +++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/SMAPI/Framework/SCore.cs b/src/SMAPI/Framework/SCore.cs index b4aa3595..801a7237 100644 --- a/src/SMAPI/Framework/SCore.cs +++ b/src/SMAPI/Framework/SCore.cs @@ -168,7 +168,8 @@ namespace StardewModdingAPI.Framework /// Construct an instance. /// The path to search for mods. /// Whether to output log messages to the console. - public SCore(string modsPath, bool writeToConsole) + /// null if not modified else whether to use developer mode + public SCore(string modsPath, bool writeToConsole, bool? developerModeValue) { SCore.Instance = this; @@ -183,6 +184,13 @@ namespace StardewModdingAPI.Framework // init basics this.Settings = JsonConvert.DeserializeObject(File.ReadAllText(Constants.ApiConfigPath)); + + // temporary overwrite DeveloperMode Setting + if (developerModeValue.HasValue) + { + this.Settings.DeveloperMode = developerModeValue.Value; + } + if (File.Exists(Constants.ApiUserConfigPath)) JsonConvert.PopulateObject(File.ReadAllText(Constants.ApiUserConfigPath), this.Settings); diff --git a/src/SMAPI/Program.cs b/src/SMAPI/Program.cs index f2f65287..32bf0bdd 100644 --- a/src/SMAPI/Program.cs +++ b/src/SMAPI/Program.cs @@ -179,15 +179,30 @@ namespace StardewModdingAPI bool writeToConsole = !args.Contains("--no-terminal") && Environment.GetEnvironmentVariable("SMAPI_NO_TERMINAL") == null; // get mods path + bool? developerModeValue = null; string modsPath; { string rawModsPath = null; - // get from command line args + // get mods path from command line args int pathIndex = Array.LastIndexOf(args, "--mods-path") + 1; if (pathIndex >= 1 && args.Length >= pathIndex) rawModsPath = args[pathIndex]; + // get developer mode from command line args + int developerModeValueIndex = Array.LastIndexOf(args, "--developer-mode") + 1; + if (developerModeValueIndex >= 1 && args.Length >= developerModeValueIndex) + { + if (args[developerModeValueIndex].ToLower().Equals("true")) + { + developerModeValue = true; + } + else if (args[developerModeValueIndex].ToLower().Equals("false")) + { + developerModeValue = false; + } + } + // get from environment variables if (string.IsNullOrWhiteSpace(rawModsPath)) rawModsPath = Environment.GetEnvironmentVariable("SMAPI_MODS_PATH"); @@ -199,7 +214,7 @@ namespace StardewModdingAPI } // load SMAPI - using SCore core = new SCore(modsPath, writeToConsole); + using SCore core = new SCore(modsPath, writeToConsole, developerModeValue); core.RunInteractively(); } -- cgit