From 238b5db4f7f2f05e8967cc5eda761733d4bf35b4 Mon Sep 17 00:00:00 2001 From: Drachenkaetzchen Date: Wed, 15 Jan 2020 17:50:12 +0100 Subject: Added "trigger dump" command to dump the configured triggers as commands for copy'n'paste --- .../Commands/Other/PerformanceCounterCommand.cs | 67 +++++++++++++++------- 1 file changed, 47 insertions(+), 20 deletions(-) (limited to 'src/SMAPI.Mods.ConsoleCommands/Framework') diff --git a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Other/PerformanceCounterCommand.cs b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Other/PerformanceCounterCommand.cs index 82b44562..f096614f 100644 --- a/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Other/PerformanceCounterCommand.cs +++ b/src/SMAPI.Mods.ConsoleCommands/Framework/Commands/Other/PerformanceCounterCommand.cs @@ -206,6 +206,9 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Other SCore.PerformanceCounterManager.PauseAlerts = false; monitor.Log($"Alerts are now resumed.", LogLevel.Info); break; + case "dump": + this.OutputAlertTriggers(monitor, true); + break; case "clear": this.ClearAlertTriggers(monitor); break; @@ -308,7 +311,8 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Other /// Lists all configured alert triggers. /// Writes messages to the console and log file. - private void OutputAlertTriggers(IMonitor monitor) + /// True to dump the triggers as commands. + private void OutputAlertTriggers(IMonitor monitor, bool asDump = false) { StringBuilder sb = new StringBuilder(); sb.AppendLine("Configured triggers:"); @@ -332,16 +336,27 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Other { sb.AppendLine("Collection Triggers:"); sb.AppendLine(); - sb.AppendLine(this.GetTableString( - data: collectionTriggers, - header: new[] {"Collection", "Threshold"}, - getRow: item => new[] + + if (asDump) + { + foreach (var item in collectionTriggers) { - item.collectionName, - this.FormatMilliseconds(item.threshold) - }, - true - )); + sb.AppendLine($"pc trigger {item.collectionName} {item.threshold}"); + } + } + else + { + sb.AppendLine(this.GetTableString( + data: collectionTriggers, + header: new[] {"Collection", "Threshold"}, + getRow: item => new[] + { + item.collectionName, + this.FormatMilliseconds(item.threshold) + }, + true + )); + } sb.AppendLine(); } @@ -354,17 +369,28 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Other { sb.AppendLine("Source Triggers:"); sb.AppendLine(); - sb.AppendLine(this.GetTableString( - data: sourceTriggers, - header: new[] {"Collection", "Source", "Threshold"}, - getRow: item => new[] + + if (asDump) + { + foreach (var item in sourceTriggers) { - item.collectionName, - item.sourceName, - this.FormatMilliseconds(item.threshold) - }, - true - )); + sb.AppendLine($"pc trigger {item.collectionName} {item.threshold} {item.sourceName}"); + } + } + else + { + sb.AppendLine(this.GetTableString( + data: sourceTriggers, + header: new[] {"Collection", "Source", "Threshold"}, + getRow: item => new[] + { + item.collectionName, + item.sourceName, + this.FormatMilliseconds(item.threshold) + }, + true + )); + } sb.AppendLine(); } @@ -560,6 +586,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Other sb.AppendLine(" - clear Clears all trigger entries"); sb.AppendLine(" - pause Pauses triggering of alerts"); sb.AppendLine(" - resume Resumes triggering of alerts"); + sb.AppendLine(" - dump Dumps all triggers as commands for copy and paste"); sb.AppendLine(" Defaults to 'list' if not specified."); sb.AppendLine(); sb.AppendLine(" Required if the mode 'collection' is specified."); -- cgit