using Content.Shared.Throwing;
using Content.Shared.Timing;
using Content.Shared.Weapons.Melee.Components;
using Content.Shared.Weapons.Melee.Events;
namespace Content.Shared.Weapons.Melee;
///
public sealed class UseDelayOnMeleeHitSystem : EntitySystem
{
[Dependency] private readonly UseDelaySystem _delay = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent(OnMeleeHit);
SubscribeLocalEvent(OnThrowHitEvent);
}
private void OnThrowHitEvent(Entity ent, ref ThrowDoHitEvent args)
{
TryResetDelay(ent);
}
private void OnMeleeHit(Entity ent, ref MeleeHitEvent args)
{
TryResetDelay(ent);
}
private void TryResetDelay(Entity ent)
{
var uid = ent.Owner;
if (!TryComp(uid, out var useDelay))
return;
_delay.TryResetDelay((uid, useDelay), checkDelayed: true);
}
}