using System.Collections.Generic; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Map; using Robust.Shared.Serialization.Manager.Attributes; namespace Content.Server.NodeContainer.Nodes { /// /// A that can reach other s that are directly adjacent to it. /// [DataDefinition] public class AdjacentNode : Node { public override IEnumerable GetReachableNodes() { if (!IoCManager.Resolve().GetComponent(Owner.Uid).Anchored) yield break; var entMan = IoCManager.Resolve(); var grid = IoCManager.Resolve().GetGrid(IoCManager.Resolve().GetComponent(Owner.Uid).GridID); var gridIndex = grid.TileIndicesFor(IoCManager.Resolve().GetComponent(Owner.Uid).Coordinates); foreach (var (_, node) in NodeHelpers.GetCardinalNeighborNodes(entMan, grid, gridIndex)) { if (node != this) yield return node; } } } }