diff --git a/Content.Shared/Timing/UseDelayComponent.cs b/Content.Shared/Timing/UseDelayComponent.cs index e6884ebee2..8960ad688c 100644 --- a/Content.Shared/Timing/UseDelayComponent.cs +++ b/Content.Shared/Timing/UseDelayComponent.cs @@ -25,9 +25,7 @@ namespace Content.Shared.Timing [DataField("remainingDelay")] public TimeSpan? RemainingDelay; - public CancellationTokenSource? CancellationTokenSource; - - public bool ActiveDelay => CancellationTokenSource is { Token: { IsCancellationRequested: false } }; + public bool ActiveDelay => DelayEndTime != null; } [Serializable, NetSerializable] diff --git a/Content.Shared/Timing/UseDelaySystem.cs b/Content.Shared/Timing/UseDelaySystem.cs index 3626370d89..f6dcdafe41 100644 --- a/Content.Shared/Timing/UseDelaySystem.cs +++ b/Content.Shared/Timing/UseDelaySystem.cs @@ -73,12 +73,12 @@ public sealed class UseDelaySystem : EntitySystem var curTime = _gameTiming.CurTime; var mQuery = EntityManager.GetEntityQuery(); + // TODO refactor this to use active components foreach (var delay in _activeDelays) { if (delay.DelayEndTime == null || curTime > delay.DelayEndTime || - Deleted(delay.Owner, mQuery) || - delay.CancellationTokenSource?.Token.IsCancellationRequested == true) + Deleted(delay.Owner, mQuery)) { toRemove.Add(delay); } @@ -86,7 +86,6 @@ public sealed class UseDelaySystem : EntitySystem foreach (var delay in toRemove) { - delay.CancellationTokenSource = null; delay.DelayEndTime = null; _activeDelays.Remove(delay); Dirty(delay); @@ -98,9 +97,8 @@ public sealed class UseDelaySystem : EntitySystem if (!Resolve(uid, ref component, false)) return; - if (component.ActiveDelay || Deleted(uid)) return; - - component.CancellationTokenSource = new CancellationTokenSource(); + if (component.ActiveDelay) + return; DebugTools.Assert(!_activeDelays.Contains(component)); _activeDelays.Add(component); @@ -123,8 +121,6 @@ public sealed class UseDelaySystem : EntitySystem public void Cancel(UseDelayComponent component) { - component.CancellationTokenSource?.Cancel(); - component.CancellationTokenSource = null; component.DelayEndTime = null; _activeDelays.Remove(component); Dirty(component); @@ -134,11 +130,4 @@ public sealed class UseDelaySystem : EntitySystem cooldown.CooldownEnd = _gameTiming.CurTime; } } - - public void Restart(UseDelayComponent component) - { - component.CancellationTokenSource?.Cancel(); - component.CancellationTokenSource = null; - BeginDelay(component.Owner, component); - } }