Fix DoAfters staying (#2222)

return moment

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
This commit is contained in:
metalgearsloth
2020-10-11 07:43:07 +11:00
committed by GitHub
parent ffbc4f355e
commit 8ccb931536
3 changed files with 31 additions and 6 deletions

View File

@@ -79,10 +79,37 @@ namespace Content.Client.GameObjects.Components
if (!(curState is DoAfterComponentState state))
return;
_doAfters.Clear();
var toRemove = new List<ClientDoAfter>();
foreach (var (id, doAfter) in _doAfters)
{
var found = false;
foreach (var clientdoAfter in state.DoAfters)
{
if (clientdoAfter.ID == id)
{
found = true;
break;
}
}
if (!found)
{
toRemove.Add(doAfter);
}
}
foreach (var doAfter in toRemove)
{
Remove(doAfter);
}
foreach (var doAfter in state.DoAfters)
{
if (_doAfters.ContainsKey(doAfter.ID))
continue;
_doAfters.Add(doAfter.ID, doAfter);
}

View File

@@ -76,7 +76,7 @@ namespace Content.Client.GameObjects.EntitySystems.DoAfter
if (comp.Gui != null)
comp.Gui.FirstDraw = true;
return;
continue;
}
var range = (comp.Owner.Transform.WorldPosition - _attachedEntity.Transform.WorldPosition).Length + 0.01f;

View File

@@ -110,7 +110,6 @@ namespace Content.Server.GameObjects.Components.ActionBlocking
// Non-exposed data fields
private bool _isBroken = false;
private float _interactRange;
private DoAfterSystem _doAfterSystem;
private AudioSystem _audioSystem;
public override void Initialize()
@@ -118,7 +117,6 @@ namespace Content.Server.GameObjects.Components.ActionBlocking
base.Initialize();
_audioSystem = EntitySystem.Get<AudioSystem>();
_doAfterSystem = EntitySystem.Get<DoAfterSystem>();
_interactRange = SharedInteractionSystem.InteractionRange / 2;
}
@@ -213,7 +211,7 @@ namespace Content.Server.GameObjects.Components.ActionBlocking
NeedHand = true
};
var result = await _doAfterSystem.DoAfter(doAfterEventArgs);
var result = await EntitySystem.Get<DoAfterSystem>().DoAfter(doAfterEventArgs);
if (result != DoAfterStatus.Cancelled)
{