1
0

UseDelayOnMeleeHitSystem.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using Content.Shared.Throwing;
  2. using Content.Shared.Timing;
  3. using Content.Shared.Weapons.Melee.Components;
  4. using Content.Shared.Weapons.Melee.Events;
  5. namespace Content.Shared.Weapons.Melee;
  6. /// <inheritdoc cref="UseDelayOnMeleeHitComponent"/>
  7. public sealed class UseDelayOnMeleeHitSystem : EntitySystem
  8. {
  9. [Dependency] private readonly UseDelaySystem _delay = default!;
  10. public override void Initialize()
  11. {
  12. base.Initialize();
  13. SubscribeLocalEvent<UseDelayOnMeleeHitComponent, MeleeHitEvent>(OnMeleeHit);
  14. SubscribeLocalEvent<UseDelayOnMeleeHitComponent, ThrowDoHitEvent>(OnThrowHitEvent);
  15. }
  16. private void OnThrowHitEvent(Entity<UseDelayOnMeleeHitComponent> ent, ref ThrowDoHitEvent args)
  17. {
  18. TryResetDelay(ent);
  19. }
  20. private void OnMeleeHit(Entity<UseDelayOnMeleeHitComponent> ent, ref MeleeHitEvent args)
  21. {
  22. TryResetDelay(ent);
  23. }
  24. private void TryResetDelay(Entity<UseDelayOnMeleeHitComponent> ent)
  25. {
  26. var uid = ent.Owner;
  27. if (!TryComp<UseDelayComponent>(uid, out var useDelay))
  28. return;
  29. _delay.TryResetDelay((uid, useDelay), checkDelayed: true);
  30. }
  31. }