~ruther/NosSmooth

1aa731e6629825c24dbaa1a971bba450f08f6bd9 — František Boháček 3 years ago 99579cb
feat(localbinding): rename Character to PlayerManager
M Local/NosSmooth.LocalBinding/Extensions/ServiceCollectionExtensions.cs => Local/NosSmooth.LocalBinding/Extensions/ServiceCollectionExtensions.cs +2 -2
@@ 18,7 18,7 @@ public static class ServiceCollectionExtensions
    /// Adds bindings to Nostale objects along with <see cref="NosBindingManager"/> to initialize those.
    /// </summary>
    /// <remarks>
    /// Adds <see cref="CharacterBinding"/> and <see cref="NetworkBinding"/>.
    /// Adds <see cref="PlayerManagerBinding"/> and <see cref="NetworkBinding"/>.
    /// You have to initialize these using <see cref="NosBindingManager"/>
    /// prior to requesting them from the provider, otherwise an exception
    /// will be thrown.


@@ 29,7 29,7 @@ public static class ServiceCollectionExtensions
    {
        return serviceCollection
            .AddSingleton<NosBindingManager>()
            .AddSingleton(p => p.GetRequiredService<NosBindingManager>().Character)
            .AddSingleton(p => p.GetRequiredService<NosBindingManager>().PlayerManager)
            .AddSingleton(p => p.GetRequiredService<NosBindingManager>().SceneManager)
            .AddSingleton(p => p.GetRequiredService<NosBindingManager>().Network);
    }

M Local/NosSmooth.LocalBinding/NosBindingManager.cs => Local/NosSmooth.LocalBinding/NosBindingManager.cs +3 -3
@@ 26,7 26,7 @@ public class NosBindingManager : IDisposable
    private SceneManagerBindingOptions _sceneManagerBindingOptions;

    private NetworkBinding? _networkBinding;
    private CharacterBinding? _characterBinding;
    private PlayerManagerBinding? _characterBinding;
    private SceneManagerBinding? _sceneManagerBinding;

    /// <summary>


@@ 87,7 87,7 @@ public class NosBindingManager : IDisposable
    /// Gets the character binding.
    /// </summary>
    /// <exception cref="InvalidOperationException">Thrown if the manager is not initialized yet.</exception>
    public CharacterBinding Character
    public PlayerManagerBinding PlayerManager
    {
        get
        {


@@ 132,7 132,7 @@ public class NosBindingManager : IDisposable
        }
        _networkBinding = network.Entity;

        var character = CharacterBinding.Create(this, _characterBindingOptions);
        var character = PlayerManagerBinding.Create(this, _characterBindingOptions);
        if (!character.IsSuccess)
        {
            return Result.FromError(character);

R Local/NosSmooth.LocalBinding/Objects/CharacterBinding.cs => Local/NosSmooth.LocalBinding/Objects/PlayerManagerBinding.cs +5 -5
@@ 1,5 1,5 @@
//
//  CharacterBinding.cs
//  PlayerManagerBinding.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.


@@ 17,7 17,7 @@ namespace NosSmooth.LocalBinding.Objects;
/// <summary>
/// The nostale binding of a character.
/// </summary>
public class CharacterBinding
public class PlayerManagerBinding
{
        [Function
    (


@@ 55,7 55,7 @@ public class CharacterBinding
    /// <param name="bindingManager">The binding manager.</param>
    /// <param name="options">The options for the binding.</param>
    /// <returns>A network binding or an error.</returns>
    public static Result<CharacterBinding> Create(NosBindingManager bindingManager, CharacterBindingOptions options)
    public static Result<PlayerManagerBinding> Create(NosBindingManager bindingManager, CharacterBindingOptions options)
    {
        var process = Process.GetCurrentProcess();
        var characterObjectAddress = bindingManager.Scanner.CompiledFindPattern(options.CharacterObjectPattern);


@@ 94,7 94,7 @@ public class CharacterBinding
            (unfollowEntityAddress.Offset + (int)process.MainModule!.BaseAddress);
        var unfollowEntityWrapper = unfollowEntityFunction.GetWrapper();

        var binding = new CharacterBinding
        var binding = new PlayerManagerBinding
        (
            bindingManager,
            (IntPtr)(characterObjectAddress.Offset + (int)process.MainModule!.BaseAddress + 0x06),


@@ 139,7 139,7 @@ public class CharacterBinding
    private UnfollowEntityDelegate _originalUnfollowEntity;
    private WalkDelegate _originalWalk;

    private CharacterBinding
    private PlayerManagerBinding
    (
        NosBindingManager bindingManager,
        IntPtr characterAddress,

M Local/NosSmooth.LocalBinding/Options/CharacterBindingOptions.cs => Local/NosSmooth.LocalBinding/Options/CharacterBindingOptions.cs +1 -1
@@ 9,7 9,7 @@ using NosSmooth.LocalBinding.Objects;
namespace NosSmooth.LocalBinding.Options;

/// <summary>
/// Options for <see cref="CharacterBinding"/>.
/// Options for <see cref="PlayerManagerBinding"/>.
/// </summary>
public class CharacterBindingOptions
{

M Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCommandHandler.cs => Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCommandHandler.cs +5 -5
@@ 17,20 17,20 @@ namespace NosSmooth.LocalClient.CommandHandlers.Walk;
/// </summary>
public class WalkCommandHandler : ICommandHandler<WalkCommand>
{
    private readonly CharacterBinding _characterBinding;
    private readonly PlayerManagerBinding _playerManagerBinding;
    private readonly WalkStatus _walkStatus;
    private readonly WalkCommandHandlerOptions _options;

    /// <summary>
    /// Initializes a new instance of the <see cref="WalkCommandHandler"/> class.
    /// </summary>
    /// <param name="characterBinding">The character object binding.</param>
    /// <param name="playerManagerBinding">The character object binding.</param>
    /// <param name="walkStatus">The walk status.</param>
    /// <param name="options">The options.</param>
    public WalkCommandHandler(CharacterBinding characterBinding, WalkStatus walkStatus, IOptions<WalkCommandHandlerOptions> options)
    public WalkCommandHandler(PlayerManagerBinding playerManagerBinding, WalkStatus walkStatus, IOptions<WalkCommandHandlerOptions> options)
    {
        _options = options.Value;
        _characterBinding = characterBinding;
        _playerManagerBinding = playerManagerBinding;
        _walkStatus = walkStatus;
    }



@@ 46,7 46,7 @@ public class WalkCommandHandler : ICommandHandler<WalkCommand>
        await _walkStatus.SetWalking(linked, command.TargetX, command.TargetY, command.CancelOnUserMove);
        while (!ct.IsCancellationRequested)
        {
            var walkResult = _characterBinding.Walk(command.TargetX, command.TargetY);
            var walkResult = _playerManagerBinding.Walk(command.TargetX, command.TargetY);
            if (!walkResult.IsSuccess)
            {
                try

M Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkStatus.cs => Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkStatus.cs +5 -5
@@ 13,7 13,7 @@ namespace NosSmooth.LocalClient.CommandHandlers.Walk;
/// </summary>
public class WalkStatus
{
    private readonly CharacterBinding _characterBinding;
    private readonly PlayerManagerBinding _playerManagerBinding;
    private readonly SemaphoreSlim _semaphore;
    private CancellationTokenSource? _walkingCancellation;
    private bool _userCanCancel;


@@ 22,10 22,10 @@ public class WalkStatus
    /// <summary>
    /// Initializes a new instance of the <see cref="WalkStatus"/> class.
    /// </summary>
    /// <param name="characterBinding">The character binding.</param>
    public WalkStatus(CharacterBinding characterBinding)
    /// <param name="playerManagerBinding">The character binding.</param>
    public WalkStatus(PlayerManagerBinding playerManagerBinding)
    {
        _characterBinding = characterBinding;
        _playerManagerBinding = playerManagerBinding;
        _semaphore = new SemaphoreSlim(1, 1);
    }



@@ 110,7 110,7 @@ public class WalkStatus

        if (!_walkHooked)
        {
            _characterBinding.WalkCall += OnCharacterWalked;
            _playerManagerBinding.WalkCall += OnCharacterWalked;
            _walkHooked = true;
        }


M Samples/WalkCommands/Commands/CombatCommands.cs => Samples/WalkCommands/Commands/CombatCommands.cs +6 -6
@@ 19,19 19,19 @@ namespace WalkCommands.Commands;
public class CombatCommands : CommandGroup
{
    private readonly SceneManagerBinding _sceneManagerBinding;
    private readonly CharacterBinding _characterBinding;
    private readonly PlayerManagerBinding _playerManagerBinding;
    private readonly FeedbackService _feedbackService;

    /// <summary>
    /// Initializes a new instance of the <see cref="CombatCommands"/> class.
    /// </summary>
    /// <param name="sceneManagerBinding">The scene manager binding.</param>
    /// <param name="characterBinding">The character binding.</param>
    /// <param name="playerManagerBinding">The character binding.</param>
    /// <param name="feedbackService">The feedback service.</param>
    public CombatCommands(SceneManagerBinding sceneManagerBinding, CharacterBinding characterBinding, FeedbackService feedbackService)
    public CombatCommands(SceneManagerBinding sceneManagerBinding, PlayerManagerBinding playerManagerBinding, FeedbackService feedbackService)
    {
        _sceneManagerBinding = sceneManagerBinding;
        _characterBinding = characterBinding;
        _playerManagerBinding = playerManagerBinding;
        _feedbackService = feedbackService;
    }



@@ 60,7 60,7 @@ public class CombatCommands : CommandGroup
            return Task.FromResult(Result.FromError(entity));
        }

        return Task.FromResult(_characterBinding.FollowEntity(entity.Entity));
        return Task.FromResult(_playerManagerBinding.FollowEntity(entity.Entity));
    }

    /// <summary>


@@ 70,6 70,6 @@ public class CombatCommands : CommandGroup
    [Command("unfollow")]
    public Task<Result> HandleUnfollowAsync()
    {
        return Task.FromResult(_characterBinding.UnfollowEntity());
        return Task.FromResult(_playerManagerBinding.UnfollowEntity());
    }
}
\ No newline at end of file

Do not follow this link