~ruther/NosSmooth

ae8291c08efb23c06d599143c666b2d632d9c3d1 — František Boháček 3 years ago 0b990c8
feat(localclient): cancel walk command handling if nostale returns false on walk
M Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCancelReason.cs => Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCancelReason.cs +8 -0
@@ 32,4 32,12 @@ public enum WalkCancelReason
    /// The client was not walking for too long.
    /// </summary>
    NotWalkingTooLong,

    /// <summary>
    /// The nostale walk function has returned false.
    /// </summary>
    /// <remarks>
    /// The player may be stunned or immobile.
    /// </remarks>
    NosTaleReturnedFalse
}
\ No newline at end of file

M Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCommandHandler.cs => Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCommandHandler.cs +6 -1
@@ 58,9 58,14 @@ public class WalkCommandHandler : ICommandHandler<WalkCommand>
                    // ignored, just for cancellation
                }

                return walkResult;
                return Result.FromError(walkResult);
            }

            if (walkResult.Entity == false)
            {
                await _walkStatus.CancelWalkingAsync(WalkCancelReason.NosTaleReturnedFalse);
                return new WalkNotFinishedError(_walkStatus.CurrentX, _walkStatus.CurrentY, WalkCancelReason.NosTaleReturnedFalse);
            }
            try
            {
                await Task.Delay(_options.CheckDelay, ct);