AutoLinkSystem.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Content.Server.DeviceLinking.Components;
  2. namespace Content.Server.DeviceLinking.Systems;
  3. /// <summary>
  4. /// This handles automatically linking autolinked entities at round-start.
  5. /// </summary>
  6. public sealed class AutoLinkSystem : EntitySystem
  7. {
  8. [Dependency] private readonly DeviceLinkSystem _deviceLinkSystem = default!;
  9. /// <inheritdoc/>
  10. public override void Initialize()
  11. {
  12. SubscribeLocalEvent<AutoLinkTransmitterComponent, MapInitEvent>(OnAutoLinkMapInit);
  13. }
  14. private void OnAutoLinkMapInit(EntityUid uid, AutoLinkTransmitterComponent component, MapInitEvent args)
  15. {
  16. var xform = Transform(uid);
  17. var query = EntityQueryEnumerator<AutoLinkReceiverComponent>();
  18. while (query.MoveNext(out var receiverUid, out var receiver))
  19. {
  20. if (receiver.AutoLinkChannel != component.AutoLinkChannel)
  21. continue; // Not ours.
  22. var rxXform = Transform(receiverUid);
  23. if (rxXform.GridUid != xform.GridUid)
  24. continue;
  25. _deviceLinkSystem.LinkDefaults(null, uid, receiverUid);
  26. }
  27. }
  28. }