CableTerminalNode.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Content.Server.NodeContainer;
  2. using Content.Server.NodeContainer.Nodes;
  3. using Robust.Shared.Map;
  4. using Robust.Shared.Map.Components;
  5. namespace Content.Server.Power.Nodes
  6. {
  7. [DataDefinition]
  8. public sealed partial class CableTerminalNode : CableDeviceNode
  9. {
  10. public override IEnumerable<Node> GetReachableNodes(TransformComponent xform,
  11. EntityQuery<NodeContainerComponent> nodeQuery,
  12. EntityQuery<TransformComponent> xformQuery,
  13. MapGridComponent? grid,
  14. IEntityManager entMan)
  15. {
  16. if (!xform.Anchored || grid == null)
  17. yield break;
  18. var gridIndex = grid.TileIndicesFor(xform.Coordinates);
  19. var dir = xform.LocalRotation.GetDir();
  20. var targetIdx = gridIndex.Offset(dir);
  21. foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, grid, targetIdx))
  22. {
  23. if (node is CableTerminalPortNode)
  24. yield return node;
  25. }
  26. foreach (var node in base.GetReachableNodes(xform, nodeQuery, xformQuery, grid, entMan))
  27. {
  28. yield return node;
  29. }
  30. }
  31. }
  32. }