A src/Core/NosSmooth.LocalBinding/Extensions/HookExtensions.cs => src/Core/NosSmooth.LocalBinding/Extensions/HookExtensions.cs +32 -0
@@ 0,0 1,32 @@
+//
+// HookExtensions.cs
+//
+// Copyright (c) František Boháček. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using Reloaded.Hooks.Definitions;
+
+namespace NosSmooth.LocalBinding.Extensions;
+
+/// <summary>
+/// Extensions methods for <see cref="HookExtensions"/>.
+/// </summary>
+public static class HookExtensions
+{
+ /// <summary>
+ /// Enables the hook if it is active.
+ /// Activate it if it wasn't activated.
+ /// </summary>
+ /// <param name="hook">The hook to enable or activate.</param>
+ public static void EnableOrActivate(this IHook hook)
+ {
+ if (!hook.IsHookActivated)
+ {
+ hook.Activate();
+ }
+ else
+ {
+ hook.Enable();
+ }
+ }
+}<
\ No newline at end of file
M src/Core/NosSmooth.LocalBinding/NosBindingManager.cs => src/Core/NosSmooth.LocalBinding/NosBindingManager.cs +2 -3
@@ 363,10 363,9 @@ public class NosBindingManager : IDisposable
callbackFunction,
walkFunctionAddress.Offset + (int)_browserManager.Process.MainModule!.BaseAddress + options.Offset
);
- hook.Activate();
- if (!options.Hook)
+ if (options.Hook)
{
- hook.Disable();
+ hook.Activate();
}
return Result<IHook<TFunction>>.FromSuccess(hook);
M src/Core/NosSmooth.LocalBinding/Objects/NetworkBinding.cs => src/Core/NosSmooth.LocalBinding/Objects/NetworkBinding.cs +3 -2
@@ 7,6 7,7 @@
using System.Diagnostics;
using System.Runtime.InteropServices;
using NosSmooth.LocalBinding.Errors;
+using NosSmooth.LocalBinding.Extensions;
using NosSmooth.LocalBinding.Options;
using Reloaded.Hooks.Definitions;
using Reloaded.Hooks.Definitions.X86;
@@ 153,8 154,8 @@ public class NetworkBinding
/// </summary>
public void EnableHooks()
{
- _receiveHook.Enable();
- _sendHook.Enable();
+ _receiveHook.EnableOrActivate();
+ _sendHook.EnableOrActivate();
}
/// <summary>
M src/Core/NosSmooth.LocalBinding/Objects/PetManagerBinding.cs => src/Core/NosSmooth.LocalBinding/Objects/PetManagerBinding.cs +2 -1
@@ 4,6 4,7 @@
// Copyright (c) František Boháček. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+using NosSmooth.LocalBinding.Extensions;
using NosSmooth.LocalBinding.Options;
using NosSmooth.LocalBinding.Structs;
using Reloaded.Hooks.Definitions;
@@ 102,7 103,7 @@ public class PetManagerBinding
/// </summary>
public void EnableHooks()
{
- _petWalkHook.Enable();
+ _petWalkHook.EnableOrActivate();
}
/// <summary>
M src/Core/NosSmooth.LocalBinding/Objects/PlayerManagerBinding.cs => src/Core/NosSmooth.LocalBinding/Objects/PlayerManagerBinding.cs +4 -3
@@ 6,6 6,7 @@
using System.Diagnostics;
using NosSmooth.LocalBinding.Errors;
+using NosSmooth.LocalBinding.Extensions;
using NosSmooth.LocalBinding.Options;
using NosSmooth.LocalBinding.Structs;
using Reloaded.Hooks.Definitions;
@@ 146,9 147,9 @@ public class PlayerManagerBinding
/// </summary>
public void EnableHooks()
{
- _followHook.Enable();
- _unfollowHook.Enable();
- _walkHook.Enable();
+ _followHook.EnableOrActivate();
+ _unfollowHook.EnableOrActivate();
+ _walkHook.EnableOrActivate();
}
/// <summary>
M src/Core/NosSmooth.LocalBinding/Objects/UnitManagerBinding.cs => src/Core/NosSmooth.LocalBinding/Objects/UnitManagerBinding.cs +1 -2
@@ 10,7 10,6 @@ using NosSmooth.LocalBinding.Extensions;
using NosSmooth.LocalBinding.Options;
using NosSmooth.LocalBinding.Structs;
using Reloaded.Hooks.Definitions;
-using Reloaded.Hooks.Definitions.Enums;
using Reloaded.Hooks.Definitions.X86;
using Remora.Results;
@@ 122,7 121,7 @@ public class UnitManagerBinding
/// </summary>
public void EnableHooks()
{
- _focusHook.Enable();
+ _focusHook.EnableOrActivate();
}
/// <summary>