diff --git a/CriticalPathAnalyzer/CriticalPathAnalyzer.csproj b/CriticalPathAnalyzer/CriticalPathAnalyzer.csproj index d5f9423..646ca83 100644 --- a/CriticalPathAnalyzer/CriticalPathAnalyzer.csproj +++ b/CriticalPathAnalyzer/CriticalPathAnalyzer.csproj @@ -8,9 +8,6 @@ - - ..\HarmonyForLogicWorld\HarmonyForLogicWorld\assemblies\client\0Harmony.dll - $(LogicWorldGameLocation)\Logic_World_Data\Managed\FancyInput.dll @@ -29,6 +26,9 @@ $(LogicWorldGameLocation)\Logic_World_Data\Managed\LogicUI.dll + + $(LogicWorldGameLocation)\Logic_World_Data\Managed\LogicWorld.dll + $(LogicWorldGameLocation)\Logic_World_Data\Managed\LogicWorld.Building.dll diff --git a/CriticalPathAnalyzer/CriticalPathAnalyzer/manifest.jecs b/CriticalPathAnalyzer/CriticalPathAnalyzer/manifest.jecs index 7c959c1..bb0c75a 100644 --- a/CriticalPathAnalyzer/CriticalPathAnalyzer/manifest.jecs +++ b/CriticalPathAnalyzer/CriticalPathAnalyzer/manifest.jecs @@ -1,8 +1,7 @@ ID: CriticalPathAnalyzer Name: CriticalPathAnalyzer Author: D4VID -Version: 0.2.2 +Version: 0.3.0 Priority: 0 Dependencies: - - HarmonyForLogicWorld - EccsLogicWorldAPI diff --git a/CriticalPathAnalyzer/CriticalPathAnalyzer/src/client/CriticalPathAnalyzerClient.cs b/CriticalPathAnalyzer/CriticalPathAnalyzer/src/client/CriticalPathAnalyzerClient.cs index 51c7c2b..f1b99c1 100644 --- a/CriticalPathAnalyzer/CriticalPathAnalyzer/src/client/CriticalPathAnalyzerClient.cs +++ b/CriticalPathAnalyzer/CriticalPathAnalyzer/src/client/CriticalPathAnalyzerClient.cs @@ -6,6 +6,8 @@ using EccsLogicWorldAPI.Client.Injectors; using FancyInput; using LogicAPI.Client; using LogicLog; +using LogicWorld; +using LogicWorld.GameStates; namespace CriticalPathAnalyzer.Client { public class CriticalPathAnalyzerClient : ClientMod { @@ -22,8 +24,14 @@ namespace CriticalPathAnalyzer.Client { // Inject our own game state GameStateInjector.inject(CriticalPathAnalyzerGameState.Id, typeof(CriticalPathAnalyzerGameState)); - // Inject a hook into the game code to check for our keybindings - KeybindingsInjector.Inject(); + // Register the keybinding to enter the path analyzer game state + FirstPersonInteraction.RegisterBuildingKeybinding( + CriticalPathAnalyzerTrigger.OpenPathAnalyzer, + () => { + GameStateManager.TransitionTo(CriticalPathAnalyzerGameState.Id); + return true; + } + ); // Inject packet handlers RawPacketHandlerInjector.addPacketHandler(new AnnounceModPacketHandler(Manifest.Version)); diff --git a/CriticalPathAnalyzer/CriticalPathAnalyzer/src/client/KeybindingsInjector.cs b/CriticalPathAnalyzer/CriticalPathAnalyzer/src/client/KeybindingsInjector.cs deleted file mode 100644 index 8ee40b5..0000000 --- a/CriticalPathAnalyzer/CriticalPathAnalyzer/src/client/KeybindingsInjector.cs +++ /dev/null @@ -1,31 +0,0 @@ -using CriticalPathAnalyzer.Client.Keybindings; -using EccsLogicWorldAPI.Shared.AccessHelper; -using FancyInput; -using HarmonyLib; -using LogicWorld.Building; -using LogicWorld.GameStates; - -namespace CriticalPathAnalyzer.Client { - public class KeybindingsInjector { - // Fairly generic hook into adding custom keybindings to the main building game state of LW. - // Allows to add keybindings to open new GUI elements or add new core building actions (which are not build-operations). - public static void Inject() { - var methodTarget = Methods.getPrivateStatic(typeof(StuffDeleter), "RunFirstPersonWireDeleting"); - var methodHook = Methods.getPrivateStatic(typeof(KeybindingsInjector), nameof(Hook)); - var harmony = new Harmony(nameof(CriticalPathAnalyzer)); - harmony.Patch(methodTarget, prefix: new HarmonyMethod(methodHook)); - } - - private static bool Hook(out bool deletedWire) { - if (CustomInput.DownThisFrame(CriticalPathAnalyzerTrigger.OpenPathAnalyzer)) { - GameStateManager.TransitionTo(CriticalPathAnalyzerGameState.Id); - - deletedWire = true; // True = Cancel remaining keybinding handling. - return false; // Prevent execution of the original/further functionality. - } - - deletedWire = false; // Default, might be overwritten. False = Do not cancel remaining keybinding handling. - return true; // Allow original/further functionality. - } - } -} \ No newline at end of file