// // PlayerWalkCommandHandler.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 Microsoft.Extensions.Options; using NosSmooth.Core.Client; using NosSmooth.Core.Commands; using NosSmooth.Core.Commands.Control; using NosSmooth.Core.Commands.Walking; using NosSmooth.Core.Extensions; using NosSmooth.LocalBinding.Objects; using NosSmooth.LocalClient.CommandHandlers.Walk.Errors; using Remora.Results; namespace NosSmooth.LocalClient.CommandHandlers.Walk; /// /// Handles . /// public class PlayerWalkCommandHandler : ICommandHandler { /// /// Group that is used for . /// public const string PlayerWalkControlGroup = "PlayerWalk"; private readonly PlayerManagerBinding _playerManagerBinding; private readonly INostaleClient _nostaleClient; private readonly WalkCommandHandlerOptions _options; /// /// Initializes a new instance of the class. /// /// The character object binding. /// The nostale client. /// The options. public PlayerWalkCommandHandler ( PlayerManagerBinding playerManagerBinding, INostaleClient nostaleClient, IOptions options ) { _options = options.Value; _playerManagerBinding = playerManagerBinding; _nostaleClient = nostaleClient; } /// public async Task HandleCommand(PlayerWalkCommand command, CancellationToken ct = default) { var handler = new ControlCommandWalkHandler ( _nostaleClient, (x, y) => _playerManagerBinding.Walk(x, y), _playerManagerBinding.PlayerManager, _options ); return await handler.HandleCommand ( command.TargetX, command.TargetY, command, PlayerWalkControlGroup, ct ); } }