From fcf233b6565ef5242a06eae90a2704b7b4ddc8f8 Mon Sep 17 00:00:00 2001 From: Soar Qin Date: Sun, 2 Apr 2023 21:24:33 +0800 Subject: [PATCH] Do not use UnpatchAll() --- CompressSave/CompressSave.cs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/CompressSave/CompressSave.cs b/CompressSave/CompressSave.cs index 70ca545..cd51bfe 100644 --- a/CompressSave/CompressSave.cs +++ b/CompressSave/CompressSave.cs @@ -19,6 +19,7 @@ public enum CompressionType [BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)] public class CompressSave : BaseUnityPlugin { + private Harmony patchSave, patchUISave, patchUILoad; string StringFromCompresstionType(CompressionType type) { switch (type) @@ -60,10 +61,10 @@ public class CompressSave : BaseUnityPlugin $"Save version mismatch. Expect:{SaveUtil.VerifiedVersion}, Current:{GameConfig.gameVersion}. MOD may not work as expected."); } - Harmony.CreateAndPatchAll(typeof(PatchSave)); + patchSave = Harmony.CreateAndPatchAll(typeof(PatchSave)); if (PatchSave.EnableCompress && PatchSave.CompressionTypeForSaves != CompressionType.None) - Harmony.CreateAndPatchAll(typeof(PatchUISaveGame)); - Harmony.CreateAndPatchAll(typeof(PatchUILoadGame)); + patchUISave = Harmony.CreateAndPatchAll(typeof(PatchUISaveGame)); + patchUILoad = Harmony.CreateAndPatchAll(typeof(PatchUILoadGame)); } else SaveUtil.logger.LogWarning("Either lz4warp.dll or zstdwrap.dll is not avaliable."); @@ -71,9 +72,17 @@ public class CompressSave : BaseUnityPlugin public void OnDestroy() { - PatchUISaveGame.OnDestroy(); - PatchUILoadGame.OnDestroy(); - Harmony.UnpatchAll(); + if (patchUISave != null) + { + PatchUISaveGame.OnDestroy(); + patchUISave.UnpatchSelf(); + } + if (patchUILoad != null) + { + PatchUILoadGame.OnDestroy(); + patchUILoad.UnpatchSelf(); + } + patchSave?.UnpatchSelf(); } }