add option to disable console input
This commit is contained in:
parent
beb0b0aaf4
commit
76e5588f02
|
@ -8,6 +8,9 @@
|
||||||
-->
|
-->
|
||||||
|
|
||||||
## Upcoming release
|
## Upcoming release
|
||||||
|
* For players:
|
||||||
|
* Added config option to disable console input. This may reduce CPU usage on some Linux systems.
|
||||||
|
|
||||||
* For the web UI:
|
* For the web UI:
|
||||||
* Fixed log parser not showing screen IDs in split-screen mode, and improved screen display.
|
* Fixed log parser not showing screen IDs in split-screen mode, and improved screen display.
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ namespace StardewModdingAPI.Framework.Models
|
||||||
private static readonly IDictionary<string, object> DefaultValues = new Dictionary<string, object>
|
private static readonly IDictionary<string, object> DefaultValues = new Dictionary<string, object>
|
||||||
{
|
{
|
||||||
[nameof(CheckForUpdates)] = true,
|
[nameof(CheckForUpdates)] = true,
|
||||||
|
[nameof(ListenForConsoleInput)] = true,
|
||||||
[nameof(ParanoidWarnings)] = Constants.IsDebugBuild,
|
[nameof(ParanoidWarnings)] = Constants.IsDebugBuild,
|
||||||
[nameof(UseBetaChannel)] = Constants.ApiVersion.IsPrerelease(),
|
[nameof(UseBetaChannel)] = Constants.ApiVersion.IsPrerelease(),
|
||||||
[nameof(GitHubProjectName)] = "Pathoschild/SMAPI",
|
[nameof(GitHubProjectName)] = "Pathoschild/SMAPI",
|
||||||
|
@ -48,6 +49,9 @@ namespace StardewModdingAPI.Framework.Models
|
||||||
/// <summary>Whether to check for newer versions of SMAPI and mods on startup.</summary>
|
/// <summary>Whether to check for newer versions of SMAPI and mods on startup.</summary>
|
||||||
public bool CheckForUpdates { get; set; }
|
public bool CheckForUpdates { get; set; }
|
||||||
|
|
||||||
|
/// <summary>Whether SMAPI should listen for console input to support console commands.</summary>
|
||||||
|
public bool ListenForConsoleInput { get; set; }
|
||||||
|
|
||||||
/// <summary>Whether to add a section to the 'mod issues' list for mods which which directly use potentially sensitive .NET APIs like file or shell access.</summary>
|
/// <summary>Whether to add a section to the 'mod issues' list for mods which which directly use potentially sensitive .NET APIs like file or shell access.</summary>
|
||||||
public bool ParanoidWarnings { get; set; }
|
public bool ParanoidWarnings { get; set; }
|
||||||
|
|
||||||
|
@ -87,23 +91,25 @@ namespace StardewModdingAPI.Framework.Models
|
||||||
** Public methods
|
** Public methods
|
||||||
********/
|
********/
|
||||||
/// <summary>Construct an instance.</summary>
|
/// <summary>Construct an instance.</summary>
|
||||||
/// <param name="developerMode">Whether to enable development features.</param>
|
/// <param name="developerMode"><inheritdoc cref="DeveloperMode" path="/summary" /></param>
|
||||||
/// <param name="checkForUpdates">Whether to check for newer versions of SMAPI and mods on startup.</param>
|
/// <param name="checkForUpdates"><inheritdoc cref="CheckForUpdates" path="/summary" /></param>
|
||||||
/// <param name="paranoidWarnings">Whether to add a section to the 'mod issues' list for mods which which directly use potentially sensitive .NET APIs like file or shell access.</param>
|
/// <param name="listenForConsoleInput"><inheritdoc cref="ListenForConsoleInput" path="/summary" /></param>
|
||||||
/// <param name="useBetaChannel">Whether to show beta versions as valid updates.</param>
|
/// <param name="paranoidWarnings"><inheritdoc cref="ParanoidWarnings" path="/summary" /></param>
|
||||||
/// <param name="gitHubProjectName">SMAPI's GitHub project name, used to perform update checks.</param>
|
/// <param name="useBetaChannel"><inheritdoc cref="UseBetaChannel" path="/summary" /></param>
|
||||||
/// <param name="webApiBaseUrl">The base URL for SMAPI's web API, used to perform update checks.</param>
|
/// <param name="gitHubProjectName"><inheritdoc cref="GitHubProjectName" path="/summary" /></param>
|
||||||
/// <param name="verboseLogging">The log contexts for which to enable verbose logging, which may show a lot more information to simplify troubleshooting.</param>
|
/// <param name="webApiBaseUrl"><inheritdoc cref="WebApiBaseUrl" path="/summary" /></param>
|
||||||
/// <param name="rewriteMods">Whether SMAPI should rewrite mods for compatibility.</param>
|
/// <param name="verboseLogging"><inheritdoc cref="VerboseLogging" path="/summary" /></param>
|
||||||
/// <param name="useCaseInsensitivePaths">>Whether to make SMAPI file APIs case-insensitive, even on Linux.</param>
|
/// <param name="rewriteMods"><inheritdoc cref="RewriteMods" path="/summary" /></param>
|
||||||
/// <param name="logNetworkTraffic">Whether SMAPI should log network traffic.</param>
|
/// <param name="useCaseInsensitivePaths"><inheritdoc cref="UseCaseInsensitivePaths" path="/summary" /></param>
|
||||||
/// <param name="consoleColors">The colors to use for text written to the SMAPI console.</param>
|
/// <param name="logNetworkTraffic"><inheritdoc cref="LogNetworkTraffic" path="/summary" /></param>
|
||||||
/// <param name="suppressHarmonyDebugMode">Whether to prevent mods from enabling Harmony's debug mode, which impacts performance and creates a file on your desktop. Debug mode should never be enabled by a released mod.</param>
|
/// <param name="consoleColors"><inheritdoc cref="ConsoleColors" path="/summary" /></param>
|
||||||
/// <param name="suppressUpdateChecks">The mod IDs SMAPI should ignore when performing update checks or validating update keys.</param>
|
/// <param name="suppressHarmonyDebugMode"><inheritdoc cref="SuppressHarmonyDebugMode" path="/summary" /></param>
|
||||||
public SConfig(bool developerMode, bool? checkForUpdates, bool? paranoidWarnings, bool? useBetaChannel, string gitHubProjectName, string webApiBaseUrl, string[]? verboseLogging, bool? rewriteMods, bool? useCaseInsensitivePaths, bool? logNetworkTraffic, ColorSchemeConfig consoleColors, bool? suppressHarmonyDebugMode, string[]? suppressUpdateChecks)
|
/// <param name="suppressUpdateChecks"><inheritdoc cref="SuppressUpdateChecks" path="/summary" /></param>
|
||||||
|
public SConfig(bool developerMode, bool? checkForUpdates, bool? listenForConsoleInput, bool? paranoidWarnings, bool? useBetaChannel, string gitHubProjectName, string webApiBaseUrl, string[]? verboseLogging, bool? rewriteMods, bool? useCaseInsensitivePaths, bool? logNetworkTraffic, ColorSchemeConfig consoleColors, bool? suppressHarmonyDebugMode, string[]? suppressUpdateChecks)
|
||||||
{
|
{
|
||||||
this.DeveloperMode = developerMode;
|
this.DeveloperMode = developerMode;
|
||||||
this.CheckForUpdates = checkForUpdates ?? (bool)SConfig.DefaultValues[nameof(this.CheckForUpdates)];
|
this.CheckForUpdates = checkForUpdates ?? (bool)SConfig.DefaultValues[nameof(this.CheckForUpdates)];
|
||||||
|
this.ListenForConsoleInput = listenForConsoleInput ?? (bool)SConfig.DefaultValues[nameof(this.ListenForConsoleInput)];
|
||||||
this.ParanoidWarnings = paranoidWarnings ?? (bool)SConfig.DefaultValues[nameof(this.ParanoidWarnings)];
|
this.ParanoidWarnings = paranoidWarnings ?? (bool)SConfig.DefaultValues[nameof(this.ParanoidWarnings)];
|
||||||
this.UseBetaChannel = useBetaChannel ?? (bool)SConfig.DefaultValues[nameof(this.UseBetaChannel)];
|
this.UseBetaChannel = useBetaChannel ?? (bool)SConfig.DefaultValues[nameof(this.UseBetaChannel)];
|
||||||
this.GitHubProjectName = gitHubProjectName;
|
this.GitHubProjectName = gitHubProjectName;
|
||||||
|
|
|
@ -447,14 +447,17 @@ namespace StardewModdingAPI.Framework
|
||||||
this.Monitor.Log("SMAPI found problems in your game's content files which are likely to cause errors or crashes. Consider uninstalling XNB mods or reinstalling the game.", LogLevel.Error);
|
this.Monitor.Log("SMAPI found problems in your game's content files which are likely to cause errors or crashes. Consider uninstalling XNB mods or reinstalling the game.", LogLevel.Error);
|
||||||
|
|
||||||
// start SMAPI console
|
// start SMAPI console
|
||||||
new Thread(
|
if (this.Settings.ListenForConsoleInput)
|
||||||
() => this.LogManager.RunConsoleInputLoop(
|
{
|
||||||
commandManager: this.CommandManager,
|
new Thread(
|
||||||
reloadTranslations: this.ReloadTranslations,
|
() => this.LogManager.RunConsoleInputLoop(
|
||||||
handleInput: input => this.RawCommandQueue.Add(input),
|
commandManager: this.CommandManager,
|
||||||
continueWhile: () => this.IsGameRunning && !this.IsExiting
|
reloadTranslations: this.ReloadTranslations,
|
||||||
)
|
handleInput: input => this.RawCommandQueue.Add(input),
|
||||||
).Start();
|
continueWhile: () => this.IsGameRunning && !this.IsExiting
|
||||||
|
)
|
||||||
|
).Start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Raised after an instance finishes loading its initial content.</summary>
|
/// <summary>Raised after an instance finishes loading its initial content.</summary>
|
||||||
|
|
|
@ -41,6 +41,12 @@ copy all the settings, or you may cause bugs due to overridden changes in future
|
||||||
*/
|
*/
|
||||||
"DeveloperMode": true,
|
"DeveloperMode": true,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether SMAPI should listen for console input. Disabling this will prevent you from using
|
||||||
|
* console commands. On some specific Linux systems, disabling this may reduce CPU usage.
|
||||||
|
*/
|
||||||
|
"ListenForConsoleInput": true,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether SMAPI should rewrite mods for compatibility. This may prevent older mods from
|
* Whether SMAPI should rewrite mods for compatibility. This may prevent older mods from
|
||||||
* loading, but bypasses a Visual Studio crash when debugging.
|
* loading, but bypasses a Visual Studio crash when debugging.
|
||||||
|
|
Loading…
Reference in New Issue