using System.Collections.Generic; using Content.Server.NodeContainer.Nodes; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Map; using Robust.Shared.Serialization.Manager.Attributes; namespace Content.Server.Power.Nodes { /// /// Type of node that connects to a below it. /// [DataDefinition] public class CableDeviceNode : Node { public override IEnumerable GetReachableNodes() { var entMan = IoCManager.Resolve(); // If we're in an invalid grid, such as grid 0, we cannot connect to anything. if(!IoCManager.Resolve().TryGetGrid(IoCManager.Resolve().GetComponent(Owner).GridID, out var grid)) yield break; var gridIndex = grid.TileIndicesFor(IoCManager.Resolve().GetComponent(Owner).Coordinates); foreach (var node in NodeHelpers.GetNodesInTile(entMan, grid, gridIndex)) { if (node is CableNode) yield return node; } } } }