Another round of DoAfter fixes (#14295)
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using System.Threading;
|
||||
using Content.Server.DoAfter;
|
||||
using Content.Server.Popups;
|
||||
using Content.Server.Storage.Components;
|
||||
@@ -44,7 +45,9 @@ public sealed class ResistLockerSystem : EntitySystem
|
||||
if (!Resolve(target, ref storageComponent, ref resistLockerComponent))
|
||||
return;
|
||||
|
||||
var doAfterEventArgs = new DoAfterEventArgs(user, resistLockerComponent.ResistTime, target:target)
|
||||
resistLockerComponent.CancelToken = new CancellationTokenSource();
|
||||
|
||||
var doAfterEventArgs = new DoAfterEventArgs(user, resistLockerComponent.ResistTime, cancelToken:resistLockerComponent.CancelToken.Token, target:target)
|
||||
{
|
||||
BreakOnTargetMove = false,
|
||||
BreakOnUserMove = true,
|
||||
@@ -55,13 +58,13 @@ public sealed class ResistLockerSystem : EntitySystem
|
||||
|
||||
resistLockerComponent.IsResisting = true;
|
||||
_popupSystem.PopupEntity(Loc.GetString("resist-locker-component-start-resisting"), user, user, PopupType.Large);
|
||||
resistLockerComponent.DoAfter = _doAfterSystem.DoAfter(doAfterEventArgs);
|
||||
_doAfterSystem.DoAfter(doAfterEventArgs);
|
||||
}
|
||||
|
||||
private void OnRemoved(EntityUid uid, ResistLockerComponent component, EntRemovedFromContainerMessage args)
|
||||
{
|
||||
if (component.DoAfter != null)
|
||||
_doAfterSystem.Cancel(uid, component.DoAfter);
|
||||
component.CancelToken?.Cancel();
|
||||
component.CancelToken = null;
|
||||
}
|
||||
|
||||
private void OnDoAfter(EntityUid uid, ResistLockerComponent component, DoAfterEvent args)
|
||||
@@ -69,6 +72,7 @@ public sealed class ResistLockerSystem : EntitySystem
|
||||
if (args.Cancelled)
|
||||
{
|
||||
component.IsResisting = false;
|
||||
component.CancelToken = null;
|
||||
_popupSystem.PopupEntity(Loc.GetString("resist-locker-component-resist-interrupted"), args.Args.User, args.Args.User, PopupType.Medium);
|
||||
return;
|
||||
}
|
||||
@@ -89,6 +93,7 @@ public sealed class ResistLockerSystem : EntitySystem
|
||||
_entityStorage.TryOpenStorage(args.Args.User, uid);
|
||||
}
|
||||
|
||||
component.CancelToken = null;
|
||||
args.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user