SharedHeadsetSystem.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Content.Shared.Inventory;
  2. using Content.Shared.Inventory.Events;
  3. using Content.Shared.Radio.Components;
  4. namespace Content.Shared.Radio.EntitySystems;
  5. public abstract class SharedHeadsetSystem : EntitySystem
  6. {
  7. public override void Initialize()
  8. {
  9. base.Initialize();
  10. SubscribeLocalEvent<HeadsetComponent, InventoryRelayedEvent<GetDefaultRadioChannelEvent>>(OnGetDefault);
  11. SubscribeLocalEvent<HeadsetComponent, GotEquippedEvent>(OnGotEquipped);
  12. SubscribeLocalEvent<HeadsetComponent, GotUnequippedEvent>(OnGotUnequipped);
  13. }
  14. private void OnGetDefault(EntityUid uid, HeadsetComponent component, InventoryRelayedEvent<GetDefaultRadioChannelEvent> args)
  15. {
  16. if (!component.Enabled || !component.IsEquipped)
  17. {
  18. // don't provide default channels from pocket slots.
  19. return;
  20. }
  21. if (TryComp(uid, out EncryptionKeyHolderComponent? keyHolder))
  22. args.Args.Channel ??= keyHolder.DefaultChannel;
  23. }
  24. protected virtual void OnGotEquipped(EntityUid uid, HeadsetComponent component, GotEquippedEvent args)
  25. {
  26. component.IsEquipped = args.SlotFlags.HasFlag(component.RequiredSlot);
  27. }
  28. protected virtual void OnGotUnequipped(EntityUid uid, HeadsetComponent component, GotUnequippedEvent args)
  29. {
  30. component.IsEquipped = false;
  31. }
  32. }