From 87c12f446b12441957d34473e4597912907ae561 Mon Sep 17 00:00:00 2001 From: bernardd Date: Sun, 2 Aug 2020 15:18:24 +1000 Subject: [PATCH] Move to CitiesHarmony.API mod for Harmony support --- .gitignore | 3 +++ Crossings/Crossings.cs | 38 +++++++++++++++++++++++++++++++++----- Crossings/Crossings.csproj | 14 +++++++++----- Crossings/packages.config | 3 ++- 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index bbdd17b..6d0768e 100644 --- a/.gitignore +++ b/.gitignore @@ -77,3 +77,6 @@ obj Reference *.userprefs +/packages/Lib.Harmony.2.0.1 +/packages/CitiesHarmony.API.1.0.5 +/.vs diff --git a/Crossings/Crossings.cs b/Crossings/Crossings.cs index 7ac93bf..5be608d 100644 --- a/Crossings/Crossings.cs +++ b/Crossings/Crossings.cs @@ -1,7 +1,7 @@ using ICities; +using CitiesHarmony.API; using ColossalFramework.UI; using HarmonyLib; -using UnityEngine; using System; using System.Reflection; @@ -11,7 +11,6 @@ public class Crossings { public static NetNode.Flags CrossingFlag = NetNode.Flags.Sewage; // Hopefully this won't break anything *fingers crossed* } - public class CrossingsInfo : IUserMod { public string Name { get { return "Pedestrian Crossings"; } @@ -20,6 +19,10 @@ public string Name { public string Description { get { return "Adds placeable pedestrian (zebra) crossings"; } } + public void OnEnabled() + { + HarmonyHelper.EnsureHarmonyInstalled(); + } } public class Loader : LoadingExtensionBase { @@ -34,8 +37,7 @@ public override void OnCreated(ILoading loading) // Debug.Log ("[Crossings] OnCreated()"); base.OnCreated (loading); - var harmony = new Harmony("org.guarana.citiesskylines.mod.crossings"); - harmony.PatchAll(); + if (HarmonyHelper.IsHarmonyInstalled) Patcher.PatchAll(); ui.selectedToolModeChanged += (bool enabled) => { SetToolEnabled(enabled); @@ -46,7 +48,9 @@ public override void OnCreated(ILoading loading) public override void OnReleased() { -// Debug.Log ("[Crossings] OnReleased()"); + if (HarmonyHelper.IsHarmonyInstalled) Patcher.UnpatchAll(); + + // Debug.Log ("[Crossings] OnReleased()"); ui.DestroyView(); DestroyBuildTool(); @@ -112,6 +116,30 @@ static void DestroyBuildTool() { } } } + + public static class Patcher + { + private const string HarmonyId = "org.guarana.citiesskylines.mod.crossings"; + private static bool patched = false; + + public static void PatchAll() + { + if (patched) return; + + patched = true; + var harmony = new Harmony(HarmonyId); + harmony.PatchAll(); + } + + public static void UnpatchAll() + { + if (!patched) return; + + var harmony = new Harmony(HarmonyId); + harmony.UnpatchAll(HarmonyId); + patched = false; + } + } public static class Util { diff --git a/Crossings/Crossings.csproj b/Crossings/Crossings.csproj index 231598c..a899b40 100644 --- a/Crossings/Crossings.csproj +++ b/Crossings/Crossings.csproj @@ -36,10 +36,14 @@ 4 false true + AnyCPU - - ..\packages\Lib.Harmony.2.0.0.8\lib\net35\0Harmony.dll + + ..\packages\Lib.Harmony.2.0.1\lib\net35\0Harmony.dll + + + ..\packages\CitiesHarmony.API.1.0.5\lib\net35\CitiesHarmony.API.dll @@ -79,7 +83,7 @@ - - + copy /Y "$(TargetDir)Crossings.dll" "C:\Users\Bernard\AppData\Local\Colossal Order\Cities_Skylines\Addons\Mods\Crossings\Crossings.dll" +copy /Y "$(TargetDir)CitiesHarmony.API.dll" "C:\Users\Bernard\AppData\Local\Colossal Order\Cities_Skylines\Addons\Mods\Crossings\CitiesHarmony.API.dll" - \ No newline at end of file + diff --git a/Crossings/packages.config b/Crossings/packages.config index 0cc4485..3c972cf 100644 --- a/Crossings/packages.config +++ b/Crossings/packages.config @@ -1,4 +1,5 @@  - + + \ No newline at end of file