1
0

WieldableSystem.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using Content.Server.Movement.Components;
  2. using Content.Server.Movement.Systems;
  3. using Content.Shared.Camera;
  4. using Content.Shared.Hands;
  5. using Content.Shared.Movement.Components;
  6. using Content.Shared.Wieldable;
  7. using Content.Shared.Wieldable.Components;
  8. namespace Content.Server.Wieldable;
  9. public sealed class WieldableSystem : SharedWieldableSystem
  10. {
  11. [Dependency] private readonly ContentEyeSystem _eye = default!;
  12. public override void Initialize()
  13. {
  14. base.Initialize();
  15. SubscribeLocalEvent<CursorOffsetRequiresWieldComponent, ItemUnwieldedEvent>(OnEyeOffsetUnwielded);
  16. SubscribeLocalEvent<CursorOffsetRequiresWieldComponent, ItemWieldedEvent>(OnEyeOffsetWielded);
  17. SubscribeLocalEvent<CursorOffsetRequiresWieldComponent, HeldRelayedEvent<GetEyePvsScaleRelayedEvent>>(OnGetEyePvsScale);
  18. }
  19. private void OnEyeOffsetUnwielded(Entity<CursorOffsetRequiresWieldComponent> entity, ref ItemUnwieldedEvent args)
  20. {
  21. _eye.UpdatePvsScale(args.User);
  22. }
  23. private void OnEyeOffsetWielded(Entity<CursorOffsetRequiresWieldComponent> entity, ref ItemWieldedEvent args)
  24. {
  25. _eye.UpdatePvsScale(args.User);
  26. }
  27. private void OnGetEyePvsScale(Entity<CursorOffsetRequiresWieldComponent> entity,
  28. ref HeldRelayedEvent<GetEyePvsScaleRelayedEvent> args)
  29. {
  30. if (!TryComp(entity, out EyeCursorOffsetComponent? eyeCursorOffset) || !TryComp(entity.Owner, out WieldableComponent? wieldableComp))
  31. return;
  32. if (!wieldableComp.Wielded)
  33. return;
  34. args.Args.Scale += eyeCursorOffset.PvsIncrease;
  35. }
  36. }