summaryrefslogtreecommitdiff
path: root/src/SMAPI
diff options
context:
space:
mode:
Diffstat (limited to 'src/SMAPI')
-rw-r--r--src/SMAPI/Framework/Commands/HarmonySummaryCommand.cs38
-rw-r--r--src/SMAPI/Framework/SCore.cs2
2 files changed, 35 insertions, 5 deletions
diff --git a/src/SMAPI/Framework/Commands/HarmonySummaryCommand.cs b/src/SMAPI/Framework/Commands/HarmonySummaryCommand.cs
index 8c20fbdd..8fdd4282 100644
--- a/src/SMAPI/Framework/Commands/HarmonySummaryCommand.cs
+++ b/src/SMAPI/Framework/Commands/HarmonySummaryCommand.cs
@@ -1,16 +1,27 @@
-#if HARMONY_2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
+#if HARMONY_2
using HarmonyLib;
+#else
+using Harmony;
+#endif
namespace StardewModdingAPI.Framework.Commands
{
/// <summary>The 'harmony_summary' SMAPI console command.</summary>
internal class HarmonySummaryCommand : IInternalCommand
{
+#if !HARMONY_2
+ /*********
+ ** Fields
+ *********/
+ /// <summary>The Harmony instance through which to fetch patch info.</summary>
+ private readonly HarmonyInstance HarmonyInstance = HarmonyInstance.Create($"SMAPI.{nameof(HarmonySummaryCommand)}");
+#endif
+
/*********
** Accessors
*********/
@@ -45,7 +56,16 @@ namespace StardewModdingAPI.Framework.Commands
foreach (var ownerGroup in match.PatchTypesByOwner.OrderBy(p => p.Key))
{
var sortedTypes = ownerGroup.Value
- .OrderBy(p => p switch { PatchType.Prefix => 0, PatchType.Postfix => 1, PatchType.Finalizer => 2, PatchType.Transpiler => 3, _ => 4 });
+ .OrderBy(p => p switch
+ {
+ PatchType.Prefix => 0,
+ PatchType.Postfix => 1,
+#if HARMONY_2
+ PatchType.Finalizer => 2,
+#endif
+ PatchType.Transpiler => 3,
+ _ => 4
+ });
result.AppendLine($" - {ownerGroup.Key} ({string.Join(", ", sortedTypes).ToLower()})");
}
@@ -91,15 +111,26 @@ namespace StardewModdingAPI.Framework.Commands
/// <summary>Get all current Harmony patches.</summary>
private IEnumerable<SearchResult> GetAllPatches()
{
+#if HARMONY_2
foreach (MethodBase method in Harmony.GetAllPatchedMethods())
+#else
+ foreach (MethodBase method in this.HarmonyInstance.GetPatchedMethods())
+#endif
{
// get metadata for method
+#if HARMONY_2
HarmonyLib.Patches patchInfo = Harmony.GetPatchInfo(method);
+#else
+ Harmony.Patches patchInfo = this.HarmonyInstance.GetPatchInfo(method);
+#endif
+
IDictionary<PatchType, IReadOnlyCollection<Patch>> patchGroups = new Dictionary<PatchType, IReadOnlyCollection<Patch>>
{
[PatchType.Prefix] = patchInfo.Prefixes,
[PatchType.Postfix] = patchInfo.Postfixes,
+#if HARMONY_2
[PatchType.Finalizer] = patchInfo.Finalizers,
+#endif
[PatchType.Transpiler] = patchInfo.Transpilers
};
@@ -129,8 +160,10 @@ namespace StardewModdingAPI.Framework.Commands
/// <summary>A postfix patch.</summary>
Postfix,
+#if HARMONY_2
/// <summary>A finalizer patch.</summary>
Finalizer,
+#endif
/// <summary>A transpiler patch.</summary>
Transpiler
@@ -167,4 +200,3 @@ namespace StardewModdingAPI.Framework.Commands
}
}
}
-#endif
diff --git a/src/SMAPI/Framework/SCore.cs b/src/SMAPI/Framework/SCore.cs
index 2794002c..e1db563c 100644
--- a/src/SMAPI/Framework/SCore.cs
+++ b/src/SMAPI/Framework/SCore.cs
@@ -511,9 +511,7 @@ namespace StardewModdingAPI.Framework
this.Monitor.Log("Type 'help' for help, or 'help <cmd>' for a command's usage", LogLevel.Info);
this.GameInstance.CommandManager
.Add(new HelpCommand(this.GameInstance.CommandManager), this.Monitor)
-#if HARMONY_2
.Add(new HarmonySummaryCommand(), this.Monitor)
-#endif
.Add(new ReloadI18nCommand(this.ReloadTranslations), this.Monitor);
// start handling command line input