~ruther/NosSmooth.Local

8460e28bd15b23ee3ea434d6cc46fc7f657659a3 — Rutherther 2 years ago b68acbc
feat(binding): add possibility to disable or reenable hooks
M src/Core/NosSmooth.LocalBinding/NosBindingManager.cs => src/Core/NosSmooth.LocalBinding/NosBindingManager.cs +16 -12
@@ 26,7 26,7 @@ public class NosBindingManager : IDisposable
    private readonly PetManagerBindingOptions _petManagerBindingOptions;
    private readonly CharacterBindingOptions _characterBindingOptions;
    private readonly NetworkBindingOptions _networkBindingOptions;
    private UnitManagerBindingOptions _unitManagerBindingOptions;
    private readonly UnitManagerBindingOptions _unitManagerBindingOptions;

    private NetworkBinding? _networkBinding;
    private PlayerManagerBinding? _characterBinding;


@@ 309,19 309,23 @@ public class NosBindingManager : IDisposable
    /// <summary>
    /// Disable the currently enabled NosTale hooks.
    /// </summary>
    /// <returns>A result that may or may not have succeeded.</returns>
    public Result DisableHooks()
    public void DisableHooks()
    {
        if (_networkBinding is not null)
        {
            var result = _networkBinding.DisableHooks();
            if (!result.IsSuccess)
            {
                return result;
            }
        }
        _networkBinding?.DisableHooks();
        _characterBinding?.DisableHooks();
        _unitManagerBinding?.DisableHooks();
        _petManagerBinding?.DisableHooks();
    }

        return Result.FromSuccess();
    /// <summary>
    /// Enable all NosTale hooks.
    /// </summary>
    public void EnableHooks()
    {
        _networkBinding?.EnableHooks();
        _characterBinding?.EnableHooks();
        _unitManagerBinding?.EnableHooks();
        _petManagerBinding?.EnableHooks();
    }

    /// <inheritdoc />

M src/Core/NosSmooth.LocalBinding/Objects/NetworkBinding.cs => src/Core/NosSmooth.LocalBinding/Objects/NetworkBinding.cs +12 -5
@@ 149,14 149,21 @@ public class NetworkBinding
    }

    /// <summary>
    /// Enable all networking hooks.
    /// </summary>
    public void EnableHooks()
    {
        _receiveHook.Enable();
        _sendHook.Enable();
    }

    /// <summary>
    /// Disable all the hooks that are currently enabled.
    /// </summary>
    /// <returns>A result that may or may not have succeeded.</returns>
    public Result DisableHooks()
    public void DisableHooks()
    {
        _receiveHook?.Disable();
        _sendHook?.Disable();
        return Result.FromSuccess();
        _receiveHook.Disable();
        _sendHook.Disable();
    }

    private nuint GetManagerAddress(bool third)

M src/Core/NosSmooth.LocalBinding/Objects/PetManagerBinding.cs => src/Core/NosSmooth.LocalBinding/Objects/PetManagerBinding.cs +16 -0
@@ 90,6 90,22 @@ public class PetManagerBinding
    public PetManagerList PetManagerList { get; }

    /// <summary>
    /// Disable all PetManager hooks.
    /// </summary>
    public void DisableHooks()
    {
        _petWalkHook.Disable();
    }

    /// <summary>
    /// Enable all PetManager hooks.
    /// </summary>
    public void EnableHooks()
    {
        _petWalkHook.Enable();
    }

    /// <summary>
    /// Walk the given pet to the given location.
    /// </summary>
    /// <param name="selector">Index of the pet to walk. -1 for every pet currently available.</param>

M src/Core/NosSmooth.LocalBinding/Objects/PlayerManagerBinding.cs => src/Core/NosSmooth.LocalBinding/Objects/PlayerManagerBinding.cs +15 -5
@@ 132,13 132,23 @@ public class PlayerManagerBinding
    public event Func<MapBaseObj?, bool>? FollowEntityCall;

    /// <summary>
    /// Disable all the hooks that are currently enabled.
    /// Disable all PlayerManager hooks.
    /// </summary>
    /// <returns>A result that may or may not have succeeded.</returns>
    public Result DisableHooks()
    public void DisableHooks()
    {
        _walkHook?.Disable();
        return Result.FromSuccess();
        _followHook.Disable();
        _unfollowHook.Disable();
        _walkHook.Disable();
    }

    /// <summary>
    /// Enable all PlayerManager hooks.
    /// </summary>
    public void EnableHooks()
    {
        _followHook.Enable();
        _unfollowHook.Enable();
        _walkHook.Enable();
    }

    /// <summary>

Do not follow this link