~ruther/NosSmooth

ddaf090c4767a27150f577143263d90a6e7d1df0 — Rutherther 2 years ago 2dbb70b
fix(combat): do not cancel cancellation token after disposing it
M Extensions/NosSmooth.Extensions.Combat/Operations/CompoundOperation.cs => Extensions/NosSmooth.Extensions.Combat/Operations/CompoundOperation.cs +6 -0
@@ 22,6 22,7 @@ public class CompoundOperation : ICombatOperation
    private ICombatOperation? _currentOperation;
    private CancellationTokenSource? _ct;
    private Task<Result>? _compoundOperation;
    private bool _disposed;

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


@@ 117,6 118,11 @@ public class CompoundOperation : ICombatOperation
    /// <inheritdoc />
    public void Cancel()
    {
        if (_disposed)
        {
            return;
        }
        _disposed = true;
        _currentOperation?.Cancel();
        _ct?.Cancel();
    }

M Extensions/NosSmooth.Extensions.Combat/Operations/UseItemOperation.cs => Extensions/NosSmooth.Extensions.Combat/Operations/UseItemOperation.cs +6 -0
@@ 22,6 22,7 @@ public record UseItemOperation(InventoryItem Item) : ICombatOperation
{
    private Task<Result>? _useItemOperation;
    private CancellationTokenSource? _ct;
    private bool _disposed;

    /// <inheritdoc />
    public OperationQueueType QueueType => OperationQueueType.Item;


@@ 94,6 95,11 @@ public record UseItemOperation(InventoryItem Item) : ICombatOperation
    /// <inheritdoc />
    public void Dispose()
    {
        if (_disposed)
        {
            return;
        }
        _disposed = true;
        _ct?.Cancel();
        _useItemOperation?.Dispose();
        _ct?.Dispose();

M Extensions/NosSmooth.Extensions.Combat/Operations/WalkInRangeOperation.cs => Extensions/NosSmooth.Extensions.Combat/Operations/WalkInRangeOperation.cs +6 -0
@@ 31,6 31,7 @@ public record WalkInRangeOperation
{
    private Task<Result>? _walkInRangeOperation;
    private CancellationTokenSource? _ct;
    private bool _disposed;

    /// <inheritdoc />
    public OperationQueueType QueueType => OperationQueueType.TotalControl;


@@ 208,6 209,11 @@ public record WalkInRangeOperation
    /// <inheritdoc />
    public void Dispose()
    {
        if (_disposed)
        {
            return;
        }
        _disposed = true;
        _ct?.Cancel();
        _walkInRangeOperation?.Dispose();
        _ct?.Dispose();

M Extensions/NosSmooth.Extensions.Combat/Operations/WalkOperation.cs => Extensions/NosSmooth.Extensions.Combat/Operations/WalkOperation.cs +6 -0
@@ 21,6 21,7 @@ public record WalkOperation(WalkManager WalkManager, short X, short Y) : ICombat
{
    private Task<Result>? _walkOperation;
    private CancellationTokenSource? _ct;
    private bool _disposed;

    /// <inheritdoc />
    public OperationQueueType QueueType => OperationQueueType.TotalControl;


@@ 110,6 111,11 @@ public record WalkOperation(WalkManager WalkManager, short X, short Y) : ICombat
    /// <inheritdoc />
    public void Dispose()
    {
        if (_disposed)
        {
            return;
        }
        _disposed = true;
        _ct?.Cancel();
        _walkOperation?.Dispose();
        _ct?.Dispose();

Do not follow this link