M src/Core/NosSmooth.LocalBinding/NosSmooth.LocalBinding.csproj => src/Core/NosSmooth.LocalBinding/NosSmooth.LocalBinding.csproj +1 -1
@@ 12,7 12,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="7.0.0" />
- <PackageReference Include="Microsoft.Extensions.Options" Version="7.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Options" Version="7.0.1" />
<PackageReference Include="Reloaded.Hooks" Version="4.2.1" />
<PackageReference Include="Reloaded.Memory.Sigscan" Version="3.1.6" />
<PackageReference Include="Remora.Results" Version="7.2.3" />
R src/Core/NosSmooth.LocalClient/CommandHandlers/Walk/PetWalkCommandHandler.cs => src/Core/NosSmooth.LocalClient/CommandHandlers/Walk/MateWalkCommandHandler.cs +11 -11
@@ 1,5 1,5 @@
//
-// PetWalkCommandHandler.cs
+// MateWalkCommandHandler.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.
@@ 20,7 20,7 @@ namespace NosSmooth.LocalClient.CommandHandlers.Walk;
/// <summary>
/// Handles <see cref="PetWalkCommand"/>.
/// </summary>
-public class PetWalkCommandHandler : ICommandHandler<PetWalkCommand>
+public class MateWalkCommandHandler : ICommandHandler<MateWalkCommand>
{
/// <summary>
/// Group that is used for <see cref="TakeControlCommand"/>.
@@ 35,7 35,7 @@ public class PetWalkCommandHandler : ICommandHandler<PetWalkCommand>
private readonly WalkCommandHandlerOptions _options;
/// <summary>
- /// Initializes a new instance of the <see cref="PetWalkCommandHandler"/> class.
+ /// Initializes a new instance of the <see cref="MateWalkCommandHandler"/> class.
/// </summary>
/// <param name="petWalkHook">The pet walk hook.</param>
/// <param name="petManagerList">The pet manager list.</param>
@@ 43,7 43,7 @@ public class PetWalkCommandHandler : ICommandHandler<PetWalkCommand>
/// <param name="userActionDetector">The user action detector.</param>
/// <param name="nostaleClient">The nostale client.</param>
/// <param name="options">The options.</param>
- public PetWalkCommandHandler
+ public MateWalkCommandHandler
(
IPetWalkHook petWalkHook,
PetManagerList petManagerList,
@@ 62,13 62,13 @@ public class PetWalkCommandHandler : ICommandHandler<PetWalkCommand>
}
/// <inheritdoc/>
- public async Task<Result> HandleCommand(PetWalkCommand command, CancellationToken ct = default)
+ public async Task<Result> HandleCommand(MateWalkCommand command, CancellationToken ct = default)
{
- if (_petManagerList.Length < command.PetSelector + 1)
+ PetManager? selectedPet = _petManagerList.FirstOrDefault(x => x.Pet.Id == command.MateId);
+ if (selectedPet is null)
{
- return new NotFoundError("Could not find the pet using the given selector.");
+ return new NotFoundError($"Mate with id {command.MateId} was not found in the pet manager list.");
}
- var petManager = _petManagerList[command.PetSelector];
var handler = new ControlCommandWalkHandler
(
@@ 78,11 78,11 @@ public class PetWalkCommandHandler : ICommandHandler<PetWalkCommand>
(
() => _userActionDetector.NotUserAction<Result<bool>>
(
- () => _petWalkHook.WrapperFunction.Get()(petManager, (ushort)x, (ushort)y)
+ () => _petWalkHook.WrapperFunction.Get()(selectedPet, (ushort)x, (ushort)y)
),
ct
),
- petManager,
+ selectedPet,
_options
);
@@ 92,7 92,7 @@ public class PetWalkCommandHandler : ICommandHandler<PetWalkCommand>
command.TargetY,
command.ReturnDistanceTolerance,
command,
- PetWalkControlGroup + "_" + command.PetSelector,
+ PetWalkControlGroup + "_" + command.MateId,
ct
);
}
M src/Core/NosSmooth.LocalClient/Extensions/ServiceCollectionExtensions.cs => src/Core/NosSmooth.LocalClient/Extensions/ServiceCollectionExtensions.cs +1 -1
@@ 33,7 33,7 @@ public static class ServiceCollectionExtensions
.AddTakeControlCommand()
.AddCommandHandler<AttackCommandHandler>()
.AddCommandHandler<PlayerWalkCommandHandler>()
- .AddCommandHandler<PetWalkCommandHandler>();
+ .AddCommandHandler<MateWalkCommandHandler>();
serviceCollection.TryAddSingleton<NostaleLocalClient>();
serviceCollection.TryAddSingleton<INostaleClient>(p => p.GetRequiredService<NostaleLocalClient>());
M src/Core/NosSmooth.LocalClient/NosSmooth.LocalClient.csproj => src/Core/NosSmooth.LocalClient/NosSmooth.LocalClient.csproj +4 -3
@@ 5,8 5,8 @@
<Nullable>enable</Nullable>
<LangVersion>10</LangVersion>
<TargetFramework>net7.0</TargetFramework>
- <VersionPrefix>2.0.1</VersionPrefix>
- <PackageReleaseNotes>Add support for optional hooks and bindings.</PackageReleaseNotes>
+ <VersionPrefix>2.1.0</VersionPrefix>
+ <PackageReleaseNotes>Add support for new MateWalkCommand.</PackageReleaseNotes>
</PropertyGroup>
<ItemGroup>
@@ 14,8 14,9 @@
</ItemGroup>
<ItemGroup>
- <PackageReference Include="NosSmooth.Core" Version="4.0.2" />
+ <PackageReference Include="NosSmooth.Core" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
+ <PackageReference Include="NosSmooth.PacketSerializer.Abstractions" Version="1.3.2" />
<PackageReference Include="Reloaded.Hooks" Version="4.2.1" />
<PackageReference Include="Reloaded.Memory.Sigscan" Version="3.1.6" />
</ItemGroup>
M src/Extensions/NosSmooth.ChatCommands/NosSmooth.ChatCommands.csproj => src/Extensions/NosSmooth.ChatCommands/NosSmooth.ChatCommands.csproj +1 -1
@@ 10,7 10,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" />
- <PackageReference Include="NosSmooth.Packets" Version="3.5.1" />
+ <PackageReference Include="NosSmooth.Packets" Version="3.6.0" />
<PackageReference Include="Remora.Commands" Version="10.0.3" />
</ItemGroup>
M src/Extensions/NosSmooth.Extensions.SharedBinding/NosSmooth.Extensions.SharedBinding.csproj => src/Extensions/NosSmooth.Extensions.SharedBinding/NosSmooth.Extensions.SharedBinding.csproj +6 -5
@@ 4,14 4,15 @@
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
- <VersionPrefix>1.0.1</VersionPrefix>
- <PackageReleaseNotes>Add support for optional hooks and bindings.</PackageReleaseNotes>
+ <VersionPrefix>1.0.2</VersionPrefix>
+ <PackageReleaseNotes>Update dependencies.</PackageReleaseNotes>
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="NosSmooth.Core" Version="4.0.2" />
- <PackageReference Include="NosSmooth.Data.NOSFiles" Version="2.2.2" />
- <PackageReference Include="NosSmooth.PacketSerializer" Version="2.2.6" />
+ <PackageReference Include="NosSmooth.Core" Version="5.0.0" />
+ <PackageReference Include="NosSmooth.Data.NOSFiles" Version="2.3.0" />
+ <PackageReference Include="NosSmooth.PacketSerializer" Version="2.2.7" />
+ <PackageReference Include="NosSmooth.PacketSerializer.Abstractions" Version="1.3.2" />
</ItemGroup>
<ItemGroup>
M src/Inject/NosSmooth.Injector/NosSmooth.Injector.csproj => src/Inject/NosSmooth.Injector/NosSmooth.Injector.csproj +1 -1
@@ 10,7 10,7 @@
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="Microsoft.Extensions.Options" Version="7.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Options" Version="7.0.1" />
<PackageReference Include="Remora.Results" Version="7.2.3" />
<PackageReference Include="Reloaded.Injector" Version="1.2.5">
M src/Samples/External/ExternalBrowser/ExternalBrowser.csproj => src/Samples/External/ExternalBrowser/ExternalBrowser.csproj +2 -1
@@ 12,7 12,8 @@
</ItemGroup>
<ItemGroup>
- <PackageReference Include="NosSmooth.Core" Version="4.0.2" />
+ <PackageReference Include="NosSmooth.Core" Version="5.0.0" />
+ <PackageReference Include="NosSmooth.PacketSerializer.Abstractions" Version="1.3.2" />
</ItemGroup>
</Project>
M src/Samples/HighLevel/SimplePiiBot/SimplePiiBot.csproj => src/Samples/HighLevel/SimplePiiBot/SimplePiiBot.csproj +2 -2
@@ 10,9 10,9 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="7.0.0" />
- <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.Extensions.Combat" Version="1.3.0" />
+ <PackageReference Include="NosSmooth.Extensions.Combat" Version="1.3.1" />
<PackageReference Include="Remora.Commands" Version="10.0.3" />
<PackageReference Include="Remora.Results" Version="7.2.3" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection">
M src/Samples/LowLevel/InterceptNameChanger/InterceptNameChanger.csproj => src/Samples/LowLevel/InterceptNameChanger/InterceptNameChanger.csproj +2 -2
@@ 18,8 18,8 @@
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" 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="5.0.0" />
+ <PackageReference Include="NosSmooth.Packets" Version="3.6.0" />
<PackageReference Include="Remora.Results" Version="7.2.3" />
</ItemGroup>
<ItemGroup>
M src/Samples/LowLevel/SimpleChat/SimpleChat.csproj => src/Samples/LowLevel/SimpleChat/SimpleChat.csproj +1 -1
@@ 18,7 18,7 @@
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
- <PackageReference Include="NosSmooth.Core" Version="4.0.2" />
+ <PackageReference Include="NosSmooth.Core" Version="5.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Core\NosSmooth.LocalClient\NosSmooth.LocalClient.csproj" />
M src/Samples/LowLevel/WalkCommands/Commands/WalkCommands.cs => src/Samples/LowLevel/WalkCommands/Commands/WalkCommands.cs +39 -10
@@ 10,6 10,8 @@ using NosSmooth.Core.Commands;
using NosSmooth.Core.Commands.Walking;
using NosSmooth.Core.Extensions;
using NosSmooth.Extensions.Pathfinding;
+using NosSmooth.LocalBinding;
+using NosSmooth.LocalBinding.Structs;
using NosSmooth.Packets.Enums;
using NosSmooth.Packets.Enums.Chat;
using NosSmooth.Packets.Enums.Entities;
@@ 26,6 28,7 @@ namespace WalkCommands.Commands;
public class WalkCommands : CommandGroup
{
private readonly ManagedNostaleClient _client;
+ private readonly PetManagerList _petManagerList;
private readonly WalkManager _walkManager;
private readonly FeedbackService _feedbackService;
@@ 33,11 36,13 @@ public class WalkCommands : CommandGroup
/// Initializes a new instance of the <see cref="WalkCommands"/> class.
/// </summary>
/// <param name="client">The nostale client.</param>
+ /// <param name="petManagerList">The pet manager list.</param>
/// <param name="walkManager">The walk manager.</param>
/// <param name="feedbackService">The feedback service.</param>
- public WalkCommands(ManagedNostaleClient client, WalkManager walkManager, FeedbackService feedbackService)
+ public WalkCommands(ManagedNostaleClient client, PetManagerList petManagerList, WalkManager walkManager, FeedbackService feedbackService)
{
_client = client;
+ _petManagerList = petManagerList;
_walkManager = walkManager;
_feedbackService = feedbackService;
}
@@ 71,12 76,16 @@ public class WalkCommands : CommandGroup
return receiveResult;
}
+ var pets = petSelectors
+ .Select(i => _petManagerList[i].Entity.Id)
+ .Select(id => (id, x, y));
+
var command = new WalkCommand
(
x,
y,
- petSelectors.Select(i => (i, x, y)).ToArray(),
2,
+ pets.ToArray(),
AllowUserCancel: isCancellable
);
var walkResult = await _client.SendCommandAsync(command, CancellationToken);
@@ 127,25 136,45 @@ public class WalkCommands : CommandGroup
{
return receiveResult;
}
+
+ var pets = petSelectors
+ .Select(i => _petManagerList[i].Entity.Id)
+ .Select(id => (id, x, y));
+
+ var tasks = new List<Task<Result>>();
- var walkResult = await _walkManager.GoToAsync
+ tasks.Add(_walkManager.PlayerGoToAsync
(
x,
y,
isCancellable,
- CancellationToken,
- petSelectors.Select(i => (i, x, y)).ToArray()
- );
- if (!walkResult.IsSuccess)
+ CancellationToken
+ ));
+
+ foreach (var pet in pets)
+ {
+ tasks.Add(_walkManager.MateWalkToAsync(pet.id, pet.x, pet.y, isCancellable, CancellationToken));
+ }
+
+ var results = await Task.WhenAll(tasks);
+ var errorfulResults = results.Where(x => !x.IsSuccess).OfType<IResult>().ToArray();
+ if (errorfulResults.Length > 0)
{
- await _feedbackService.SendErrorMessageAsync
- ($"Could not finish walking. {walkResult.ToFullString()}", CancellationToken);
await _client.ReceivePacketAsync
(
new SayPacket(EntityType.Map, 1, SayColor.Red, "Could not finish walking."),
CancellationToken
);
- return walkResult;
+
+ var result = errorfulResults.Length switch
+ {
+ 1 => (Result)errorfulResults[0],
+ _ => new AggregateError(errorfulResults)
+ };
+ await _feedbackService.SendErrorMessageAsync
+ ($"Could not finish walking. {result.ToFullString()}", CancellationToken);
+
+ return result;
}
return await _client.ReceivePacketAsync
M src/Samples/LowLevel/WalkCommands/WalkCommands.csproj => src/Samples/LowLevel/WalkCommands/WalkCommands.csproj +13 -5
@@ 31,25 31,33 @@
<Version>7.0.0</Version>
</PackageReference>
<PackageReference Include="NosSmooth.Core">
- <Version>4.0.2</Version>
+ <Version>5.0.0</Version>
</PackageReference>
<PackageReference Include="NosSmooth.Data.Abstractions">
- <Version>2.2.1</Version>
+ <Version>2.3.0</Version>
</PackageReference>
<PackageReference Include="NosSmooth.Extensions.Pathfinding">
- <Version>1.2.0</Version>
+ <Version>2.0.0</Version>
</PackageReference>
<PackageReference Include="NosSmooth.Packets">
- <Version>3.5.1</Version>
+ <Version>3.6.0</Version>
</PackageReference>
<PackageReference Include="Remora.Results">
<Version>7.2.3</Version>
</PackageReference>
- <PackageReference Include="NosSmooth.Data.NOSFiles" Version="2.2.2" />
+ <PackageReference Include="NosSmooth.Data.NOSFiles" Version="2.3.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Core\NosSmooth.LocalClient\NosSmooth.LocalClient.csproj" />
<ProjectReference Include="..\..\..\Extensions\NosSmooth.ChatCommands\NosSmooth.ChatCommands.csproj" />
<ProjectReference Include="..\..\..\Extensions\NosSmooth.Extensions.SharedBinding\NosSmooth.Extensions.SharedBinding.csproj" />
</ItemGroup>
+ <ItemGroup>
+ <Reference Include="NosSmooth.Core">
+ <HintPath>..\..\..\..\..\NosSmooth\Core\NosSmooth.Core\bin\Debug\net7.0\NosSmooth.Core.dll</HintPath>
+ </Reference>
+ <Reference Include="NosSmooth.Packets">
+ <HintPath>..\..\..\..\..\NosSmooth\Packets\NosSmooth.Packets\bin\Debug\net7.0\NosSmooth.Packets.dll</HintPath>
+ </Reference>
+ </ItemGroup>
</Project>=
\ No newline at end of file