using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Robust.Shared.Map.Components; namespace Content.Server.Spreader; /// /// Handles the node for . /// Functions as a generic tile-based entity spreader for systems such as puddles or smoke. /// public sealed class SpreaderNode : Node { // [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; /// public override IEnumerable GetReachableNodes(TransformComponent xform, EntityQuery nodeQuery, EntityQuery xformQuery, MapGridComponent? grid, IEntityManager entMan) { if (grid == null) yield break; entMan.System().GetNeighbors(xform.Owner, Name, out _, out _, out var neighbors); var _nodeContainer = entMan.System(); foreach (var neighbor in neighbors) { if (!nodeQuery.TryGetComponent(neighbor, out var nodeContainer) || !_nodeContainer.TryGetNode(nodeContainer, Name, out var neighborNode)) { continue; } yield return neighborNode; } } }