~ruther/NosSmooth.Comms

00d1846f1e860c5e78e29db0384a1fc58e60b23c — Rutherther 2 years ago 77c8ef1
chore: update dependencies, add support for optional binding and hooks
M src/Core/NosSmooth.Comms.Abstractions/NosSmooth.Comms.Abstractions.csproj => src/Core/NosSmooth.Comms.Abstractions/NosSmooth.Comms.Abstractions.csproj +2 -2
@@ 11,8 11,8 @@

    <ItemGroup>
      <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="7.0.0" />
      <PackageReference Include="NosSmooth.Core" Version="4.0.2" />
      <PackageReference Include="NosSmooth.Packets" Version="3.5.1" />
      <PackageReference Include="NosSmooth.Core" Version="4.0.3" />
      <PackageReference Include="NosSmooth.Packets" Version="3.6.0" />
      <PackageReference Include="NosSmooth.PacketSerializer.Abstractions" Version="1.3.1" />
    </ItemGroup>


M src/Core/NosSmooth.Comms.Core/NosSmooth.Comms.Core.csproj => src/Core/NosSmooth.Comms.Core/NosSmooth.Comms.Core.csproj +1 -1
@@ 10,7 10,7 @@
    <ItemGroup>
      <PackageReference Include="MessagePack" Version="2.4.59" />
      <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="7.0.0" />
      <PackageReference Include="NosSmooth.Core" Version="4.0.2" />
      <PackageReference Include="NosSmooth.Core" Version="4.0.3" />
    </ItemGroup>

    <ItemGroup>

M src/Local/NosSmooth.Comms.Inject/MessageResponders/FocusResponder.cs => src/Local/NosSmooth.Comms.Inject/MessageResponders/FocusResponder.cs +20 -8
@@ 7,6 7,7 @@
using NosSmooth.Comms.Data.Responders;
using NosSmooth.Comms.Inject.Messages;
using NosSmooth.LocalBinding;
using NosSmooth.LocalBinding.Errors;
using NosSmooth.LocalBinding.Hooks;
using NosSmooth.LocalBinding.Structs;
using Remora.Results;


@@ 20,7 21,7 @@ public class FocusResponder : IMessageResponder<FocusMessage>
{
    private readonly NosBrowserManager _browserManager;
    private readonly NosThreadSynchronizer _synchronizer;
    private readonly IEntityFocusHook _focusHook;
    private readonly Optional<IEntityFocusHook> _focusHook;

    /// <summary>
    /// Initializes a new instance of the <see cref="FocusResponder"/> class.


@@ 29,7 30,7 @@ public class FocusResponder : IMessageResponder<FocusMessage>
    /// <param name="synchronizer">The synchronizer.</param>
    /// <param name="focusHook">The focus hook.</param>
    public FocusResponder
        (NosBrowserManager browserManager, NosThreadSynchronizer synchronizer, IEntityFocusHook focusHook)
        (NosBrowserManager browserManager, NosThreadSynchronizer synchronizer, Optional<IEntityFocusHook> focusHook)
    {
        _browserManager = browserManager;
        _synchronizer = synchronizer;


@@ 40,9 41,14 @@ public class FocusResponder : IMessageResponder<FocusMessage>
    public async Task<Result> Respond(FocusMessage message, CancellationToken ct = default)
    {
        MapBaseObj? entity = null;
        if (!_browserManager.SceneManager.TryGet(out var sceneManager))
        {
            return new OptionalNotPresentError(nameof(SceneManager));
        }

        if (message.EntityId is not null)
        {
            var entityResult = _browserManager.SceneManager.FindEntity(message.EntityId.Value);
            var entityResult = sceneManager.FindEntity(message.EntityId.Value);

            if (!entityResult.IsDefined(out entity))
            {


@@ 52,11 58,17 @@ public class FocusResponder : IMessageResponder<FocusMessage>

        return await _synchronizer.SynchronizeAsync
        (
            () =>
            {
                _focusHook.WrapperFunction(entity);
                return Result.FromSuccess();
            },
            () => _focusHook.MapResult
            (
                hook => hook.WrapperFunction.MapResult
                (
                    wrapper =>
                    {
                        wrapper(entity);
                        return Result.FromSuccess();
                    }
                )
            ),
            ct
        );
    }

M src/Local/NosSmooth.Comms.Inject/MessageResponders/FollowResponder.cs => src/Local/NosSmooth.Comms.Inject/MessageResponders/FollowResponder.cs +30 -7
@@ 7,6 7,7 @@
using NosSmooth.Comms.Data.Responders;
using NosSmooth.Comms.Inject.Messages;
using NosSmooth.LocalBinding;
using NosSmooth.LocalBinding.Errors;
using NosSmooth.LocalBinding.Hooks;
using NosSmooth.LocalBinding.Structs;
using Remora.Results;


@@ 40,9 41,14 @@ public class FollowResponder : IMessageResponder<FollowMessage>
    public async Task<Result> Respond(FollowMessage message, CancellationToken ct = default)
    {
        MapBaseObj? entity = null;
        if (!_browserManager.SceneManager.TryGet(out var sceneManager))
        {
            return new OptionalNotPresentError(nameof(SceneManager));
        }

        if (message.EntityId is not null)
        {
            var entityResult = _browserManager.SceneManager.FindEntity(message.EntityId.Value);
            var entityResult = sceneManager.FindEntity(message.EntityId.Value);

            if (!entityResult.IsDefined(out entity))
            {


@@ 56,13 62,30 @@ public class FollowResponder : IMessageResponder<FollowMessage>
            {
                if (entity is null)
                {
                    _hookManager.EntityUnfollow.WrapperFunction();
                    return _hookManager.EntityUnfollow.MapResult
                    (
                        unfollow => unfollow.WrapperFunction.MapResult
                        (
                            wrapper =>
                            {
                                wrapper();
                                return Result.FromSuccess();
                            }
                        )
                    );
                }
                else
                {
                    _hookManager.EntityFollow.WrapperFunction(entity);
                }
                return Result.FromSuccess();

                return _hookManager.EntityFollow.MapResult
                (
                    unfollow => unfollow.WrapperFunction.MapResult
                    (
                        wrapper =>
                        {
                            wrapper(entity);
                            return Result.FromSuccess();
                        }
                    )
                );
            },
            ct
        );

M src/Local/NosSmooth.Comms.Inject/MessageResponders/HandshakeResponder.cs => src/Local/NosSmooth.Comms.Inject/MessageResponders/HandshakeResponder.cs +5 -3
@@ 57,10 57,12 @@ public class HandshakeResponder : IMessageResponder<HandshakeRequest>
        string? playerName = null;
        long? playerId = null;

        if (_browserManager.IsInGame)
        if (_browserManager.PlayerManager.TryGet(out var playerManager) &&
            _browserManager.IsInGame.TryGet(out var isInGame) &&
            isInGame)
        {
            playerName = _browserManager.PlayerManager.Player.Name;
            playerId = _browserManager.PlayerManager.PlayerId;
            playerName = playerManager.Player.Name;
            playerId = playerManager.PlayerId;
        }

        var result = await _connectionHandler.SendMessageAsync

M src/Local/NosSmooth.Comms.Inject/NosSmooth.Comms.Inject.csproj => src/Local/NosSmooth.Comms.Inject/NosSmooth.Comms.Inject.csproj +5 -5
@@ 14,12 14,12 @@
        <PrivateAssets>all</PrivateAssets>
        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      </PackageReference>
      <PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.0" />
      <PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
      <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="7.0.0" />
      <PackageReference Include="NosSmooth.Core" Version="4.0.2" />
      <PackageReference Include="NosSmooth.Extensions.SharedBinding" Version="0.1.0" />
      <PackageReference Include="NosSmooth.LocalBinding" Version="1.0.1" />
      <PackageReference Include="NosSmooth.LocalClient" Version="1.1.1" />
      <PackageReference Include="NosSmooth.Core" Version="4.0.3" />
      <PackageReference Include="NosSmooth.Extensions.SharedBinding" Version="1.0.0" />
      <PackageReference Include="NosSmooth.LocalBinding" Version="2.0.0" />
      <PackageReference Include="NosSmooth.LocalClient" Version="2.0.0" />
    </ItemGroup>

    <ItemGroup>

M src/Local/NosSmooth.Comms.Local/NosSmooth.Comms.Local.csproj => src/Local/NosSmooth.Comms.Local/NosSmooth.Comms.Local.csproj +2 -2
@@ 17,12 17,12 @@
    </ItemGroup>

    <ItemGroup>
        <PackageReference Include="NosSmooth.Injector" Version="1.1.0">
        <PackageReference Include="NosSmooth.Injector" Version="1.1.1">
            <IncludeAssets>All</IncludeAssets>
            <PrivateAssets>None</PrivateAssets>
        </PackageReference>

        <PackageReference Include="NosSmooth.LocalBinding" Version="1.0.1" />
        <PackageReference Include="NosSmooth.LocalBinding" Version="2.0.0" />
    </ItemGroup>

</Project>

M src/Samples/ConsolePacketLogger/Program.cs => src/Samples/ConsolePacketLogger/Program.cs +2 -2
@@ 50,8 50,8 @@ public static class Program
                .Title("Choose NosTale process to log packets from.")
                .UseConverter
                (
                    x => x.IsInGame
                        ? $"{x.PlayerManager.Player.Name} ({x.Process.ProcessName} - {x.Process.Id})"
                    x => x.IsInGame.Get()
                        ? $"{x.PlayerManager.Get().Player.Name} ({x.Process.ProcessName} - {x.Process.Id})"
                        : $"Not in game ({x.Process.ProcessName} - {x.Process.Id})"
                )
                .AddChoices(nostaleProcesses)

Do not follow this link