diff --git a/Content.IntegrationTests/Tests/Power/PowerTest.cs b/Content.IntegrationTests/Tests/Power/PowerTest.cs index 391ac2bae8..942676253d 100644 --- a/Content.IntegrationTests/Tests/Power/PowerTest.cs +++ b/Content.IntegrationTests/Tests/Power/PowerTest.cs @@ -2,6 +2,7 @@ using System; using System.Threading.Tasks; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; @@ -1080,6 +1081,7 @@ namespace Content.IntegrationTests.Tests.Power var server = pairTracker.Pair.Server; var mapManager = server.ResolveDependency(); var entityManager = server.ResolveDependency(); + var _nodeContainer = entityManager.System(); CableNode leftNode = default!; CableNode rightNode = default!; Node batteryInput = default!; @@ -1107,11 +1109,17 @@ namespace Content.IntegrationTests.Tests.Power var battery = entityManager.SpawnEntity("FullBatteryDummy", grid.ToCoordinates(0, 2)); var batteryNodeContainer = entityManager.GetComponent(battery); - leftNode = entityManager.GetComponent(leftEnt).GetNode("power"); - rightNode = entityManager.GetComponent(rightEnt).GetNode("power"); + if (_nodeContainer.TryGetNode(entityManager.GetComponent(leftEnt), + "power", out var leftN)) + leftNode = leftN; + if (_nodeContainer.TryGetNode(entityManager.GetComponent(rightEnt), + "power", out var rightN)) + rightNode = rightN; - batteryInput = batteryNodeContainer.GetNode("input"); - batteryOutput = batteryNodeContainer.GetNode("output"); + if (_nodeContainer.TryGetNode(batteryNodeContainer, "input", out var nInput)) + batteryInput = nInput; + if (_nodeContainer.TryGetNode(batteryNodeContainer, "output", out var nOutput)) + batteryOutput = nOutput; }); // Run ticks to allow node groups to update. diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs index 082a811295..d2326b2b56 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Binary.Components; using Content.Server.Atmos.Piping.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; using Content.Shared.Examine; @@ -13,6 +14,7 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems public sealed class GasPassiveGateSystem : EntitySystem { [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -27,8 +29,8 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems if (!EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer)) return; - if (!nodeContainer.TryGetNode(gate.InletName, out PipeNode? inlet) - || !nodeContainer.TryGetNode(gate.OutletName, out PipeNode? outlet)) + if (!_nodeContainer.TryGetNode(nodeContainer, gate.InletName, out PipeNode? inlet) + || !_nodeContainer.TryGetNode(nodeContainer, gate.OutletName, out PipeNode? outlet)) return; var n1 = inlet.Air.TotalMoles; diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs index 87c2288402..3052fb313b 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs @@ -3,6 +3,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Binary.Components; using Content.Server.Atmos.Piping.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; using Content.Shared.Atmos.Piping; @@ -25,6 +26,7 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -61,8 +63,8 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems { if (!pump.Enabled || !EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer) - || !nodeContainer.TryGetNode(pump.InletName, out PipeNode? inlet) - || !nodeContainer.TryGetNode(pump.OutletName, out PipeNode? outlet)) + || !_nodeContainer.TryGetNode(nodeContainer, pump.InletName, out PipeNode? inlet) + || !_nodeContainer.TryGetNode(nodeContainer, pump.OutletName, out PipeNode? outlet)) { _ambientSoundSystem.SetAmbience(pump.Owner, false); return; diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs index adf947a2c0..26000d50cf 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs @@ -4,6 +4,7 @@ using Content.Server.Atmos.Piping.Binary.Components; using Content.Server.Atmos.Piping.Components; using Content.Server.Construction; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; using Content.Shared.Audio; @@ -19,6 +20,7 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems [Dependency] private readonly AppearanceSystem _appearance = default!; [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -42,8 +44,8 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems return; if (!EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer) - || !nodeContainer.TryGetNode(comp.InletName, out PipeNode? inlet) - || !nodeContainer.TryGetNode(comp.OutletName, out PipeNode? _)) + || !_nodeContainer.TryGetNode(nodeContainer, comp.InletName, out PipeNode? inlet) + || !_nodeContainer.TryGetNode(nodeContainer, comp.OutletName, out PipeNode? _)) { return; } @@ -69,8 +71,8 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems private void OnUpdate(EntityUid uid, GasRecyclerComponent comp, AtmosDeviceUpdateEvent args) { if (!EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer) - || !nodeContainer.TryGetNode(comp.InletName, out PipeNode? inlet) - || !nodeContainer.TryGetNode(comp.OutletName, out PipeNode? outlet)) + || !_nodeContainer.TryGetNode(nodeContainer, comp.InletName, out PipeNode? inlet) + || !_nodeContainer.TryGetNode(nodeContainer, comp.OutletName, out PipeNode? outlet)) { _ambientSoundSystem.SetAmbience(comp.Owner, false); return; diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasValveSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasValveSystem.cs index 6f1f2acfab..ceabee689d 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasValveSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasValveSystem.cs @@ -1,5 +1,6 @@ using Content.Server.Atmos.Piping.Binary.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos.Piping; using Content.Shared.Audio; @@ -17,6 +18,7 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems { [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -55,8 +57,8 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems { component.Open = value; if (TryComp(uid, out NodeContainerComponent? nodeContainer) - && nodeContainer.TryGetNode(component.InletName, out PipeNode? inlet) - && nodeContainer.TryGetNode(component.OutletName, out PipeNode? outlet)) + && _nodeContainer.TryGetNode(nodeContainer, component.InletName, out PipeNode? inlet) + && _nodeContainer.TryGetNode(nodeContainer, component.OutletName, out PipeNode? outlet)) { if (TryComp(component.Owner,out var appearance)) { diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs index 2d648933fd..54bc0d6fde 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs @@ -3,6 +3,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Binary.Components; using Content.Server.Atmos.Piping.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos.Piping; using Content.Shared.Atmos.Piping.Binary.Components; @@ -27,6 +28,7 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems [Dependency] private readonly UserInterfaceSystem _userInterfaceSystem = default!; [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -64,8 +66,8 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems if (!pump.Enabled || !TryComp(uid, out NodeContainerComponent? nodeContainer) || !TryComp(uid, out AtmosDeviceComponent? device) - || !nodeContainer.TryGetNode(pump.InletName, out PipeNode? inlet) - || !nodeContainer.TryGetNode(pump.OutletName, out PipeNode? outlet)) + || !_nodeContainer.TryGetNode(nodeContainer, pump.InletName, out PipeNode? inlet) + || !_nodeContainer.TryGetNode(nodeContainer, pump.OutletName, out PipeNode? outlet)) { _ambientSoundSystem.SetAmbience(uid, false); return; diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs index 3cdbfa08ca..43ba410b80 100644 --- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs +++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs @@ -3,6 +3,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Trinary.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; using Content.Shared.Atmos.Piping; @@ -28,6 +29,7 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -55,9 +57,9 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems if (!filter.Enabled || !EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer) || !EntityManager.TryGetComponent(uid, out AtmosDeviceComponent? device) - || !nodeContainer.TryGetNode(filter.InletName, out PipeNode? inletNode) - || !nodeContainer.TryGetNode(filter.FilterName, out PipeNode? filterNode) - || !nodeContainer.TryGetNode(filter.OutletName, out PipeNode? outletNode) + || !_nodeContainer.TryGetNode(nodeContainer, filter.InletName, out PipeNode? inletNode) + || !_nodeContainer.TryGetNode(nodeContainer, filter.FilterName, out PipeNode? filterNode) + || !_nodeContainer.TryGetNode(nodeContainer, filter.OutletName, out PipeNode? outletNode) || outletNode.Air.Pressure >= Atmospherics.MaxOutputPressure) // No need to transfer if target is full. { _ambientSoundSystem.SetAmbience(filter.Owner, false); @@ -189,14 +191,11 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems var gasMixDict = new Dictionary(); - nodeContainer.TryGetNode(component.InletName, out PipeNode? inlet); - nodeContainer.TryGetNode(component.FilterName, out PipeNode? filterNode); - - if(inlet != null) + if(_nodeContainer.TryGetNode(nodeContainer, component.InletName, out PipeNode? inlet)) gasMixDict.Add(Loc.GetString("gas-analyzer-window-text-inlet"), inlet.Air); - if(filterNode != null) + if(_nodeContainer.TryGetNode(nodeContainer, component.FilterName, out PipeNode? filterNode)) gasMixDict.Add(Loc.GetString("gas-analyzer-window-text-filter"), filterNode.Air); - if(nodeContainer.TryGetNode(component.OutletName, out PipeNode? outlet)) + if(_nodeContainer.TryGetNode(nodeContainer, component.OutletName, out PipeNode? outlet)) gasMixDict.Add(Loc.GetString("gas-analyzer-window-text-outlet"), outlet.Air); args.GasMixtures = gasMixDict; diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs index 2da43d654b..0780ff035f 100644 --- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs +++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs @@ -3,6 +3,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Trinary.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; using Content.Shared.Atmos.Piping; @@ -24,6 +25,7 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -59,9 +61,9 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems if (!EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer)) return; - if (!nodeContainer.TryGetNode(mixer.InletOneName, out PipeNode? inletOne) - || !nodeContainer.TryGetNode(mixer.InletTwoName, out PipeNode? inletTwo) - || !nodeContainer.TryGetNode(mixer.OutletName, out PipeNode? outlet)) + if (!_nodeContainer.TryGetNode(nodeContainer, mixer.InletOneName, out PipeNode? inletOne) + || !_nodeContainer.TryGetNode(nodeContainer, mixer.InletTwoName, out PipeNode? inletTwo) + || !_nodeContainer.TryGetNode(nodeContainer, mixer.OutletName, out PipeNode? outlet)) { _ambientSoundSystem.SetAmbience(mixer.Owner, false); return; @@ -216,14 +218,11 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems var gasMixDict = new Dictionary(); - nodeContainer.TryGetNode(component.InletOneName, out PipeNode? inletOne); - nodeContainer.TryGetNode(component.InletTwoName, out PipeNode? inletTwo); - - if(inletOne != null) + if(_nodeContainer.TryGetNode(nodeContainer, component.InletOneName, out PipeNode? inletOne)) gasMixDict.Add($"{inletOne.CurrentPipeDirection} {Loc.GetString("gas-analyzer-window-text-inlet")}", inletOne.Air); - if(inletTwo != null) + if(_nodeContainer.TryGetNode(nodeContainer, component.InletTwoName, out PipeNode? inletTwo)) gasMixDict.Add($"{inletTwo.CurrentPipeDirection} {Loc.GetString("gas-analyzer-window-text-inlet")}", inletTwo.Air); - if(nodeContainer.TryGetNode(component.OutletName, out PipeNode? outlet)) + if(_nodeContainer.TryGetNode(nodeContainer, component.OutletName, out PipeNode? outlet)) gasMixDict.Add(Loc.GetString("gas-analyzer-window-text-outlet"), outlet.Air); args.GasMixtures = gasMixDict; diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs index f424719455..5822b3b1c7 100644 --- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs +++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Trinary.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos.Piping; using Content.Shared.Audio; @@ -18,6 +19,7 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -36,9 +38,9 @@ namespace Content.Server.Atmos.Piping.Trinary.EntitySystems { if (!EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer) || !EntityManager.TryGetComponent(uid, out AtmosDeviceComponent? device) - || !nodeContainer.TryGetNode(comp.InletName, out PipeNode? inletNode) - || !nodeContainer.TryGetNode(comp.ControlName, out PipeNode? controlNode) - || !nodeContainer.TryGetNode(comp.OutletName, out PipeNode? outletNode)) + || !_nodeContainer.TryGetNode(nodeContainer, comp.InletName, out PipeNode? inletNode) + || !_nodeContainer.TryGetNode(nodeContainer, comp.ControlName, out PipeNode? controlNode) + || !_nodeContainer.TryGetNode(nodeContainer, comp.OutletName, out PipeNode? outletNode)) { _ambientSoundSystem.SetAmbience(comp.Owner, false); comp.Enabled = false; diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs index 4da6cb6b7d..b5c0ae022d 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs @@ -5,6 +5,7 @@ using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; using Content.Server.Cargo.Systems; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.NodeGroups; using Content.Server.NodeContainer.Nodes; using Content.Server.Popups; @@ -29,6 +30,7 @@ public sealed class GasCanisterSystem : EntitySystem [Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly UserInterfaceSystem _ui = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -92,7 +94,7 @@ public sealed class GasCanisterSystem : EntitySystem string? tankLabel = null; var tankPressure = 0f; - if (nodeContainer.TryGetNode(canister.PortName, out PipeNode? portNode) && portNode.NodeGroup?.Nodes.Count > 1) + if (_nodeContainer.TryGetNode(nodeContainer, canister.PortName, out PipeNode? portNode) && portNode.NodeGroup?.Nodes.Count > 1) portStatus = true; if (containerManager.TryGetContainer(canister.ContainerName, out var tankContainer) @@ -165,7 +167,7 @@ public sealed class GasCanisterSystem : EntitySystem || !TryComp(uid, out var appearance)) return; - if (!nodeContainer.TryGetNode(canister.PortName, out PortablePipeNode? portNode)) + if (!_nodeContainer.TryGetNode(nodeContainer, canister.PortName, out PortablePipeNode? portNode)) return; if (portNode.NodeGroup is PipeNet {NodeCount: > 1} net) diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs index 6abdbd2b59..e7c0448ca0 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos.Piping; using Content.Shared.Interaction; @@ -17,6 +18,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -57,7 +59,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems if (!TryComp(uid, out AtmosDeviceComponent? device)) return; - if (!nodeContainer.TryGetNode(injector.InletName, out PipeNode? inlet)) + if (!_nodeContainer.TryGetNode(nodeContainer, injector.InletName, out PipeNode? inlet)) return; var environment = _atmosphereSystem.GetContainingMixture(uid, true, true); diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPassiveVentSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPassiveVentSystem.cs index 6bd5fd7dad..0a21450f2e 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPassiveVentSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPassiveVentSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; using JetBrains.Annotations; @@ -12,6 +13,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems public sealed class GasPassiveVentSystem : EntitySystem { [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -30,7 +32,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems if (!EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer)) return; - if (!nodeContainer.TryGetNode(vent.InletName, out PipeNode? inlet)) + if (!_nodeContainer.TryGetNode(nodeContainer, vent.InletName, out PipeNode? inlet)) return; var environmentPressure = environment.Pressure; diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPortableSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPortableSystem.cs index 968344acc0..b1caa6c197 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPortableSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPortableSystem.cs @@ -2,6 +2,7 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Atmos.Piping.Binary.Components; using Content.Server.Atmos.Piping.Unary.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos.Piping.Unary.Components; using Content.Shared.Construction.Components; @@ -16,6 +17,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems { [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -41,7 +43,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems if (!EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer)) return; - if (!nodeContainer.TryGetNode(portable.PortName, out PipeNode? portableNode)) + if (!_nodeContainer.TryGetNode(nodeContainer, portable.PortName, out PipeNode? portableNode)) return; portableNode.ConnectionsEnabled = args.Anchored; diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs index 98c68a8bc3..872ea12c1b 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs @@ -3,6 +3,7 @@ using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; using Content.Server.Construction; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; using Content.Shared.Atmos.Piping.Unary.Components; @@ -20,6 +21,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems [Dependency] private readonly UserInterfaceSystem _userInterfaceSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly PowerReceiverSystem _power = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -40,7 +42,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems if (!(thermoMachine.Enabled && _power.IsPowered(uid)) || !TryComp(uid, out NodeContainerComponent? nodeContainer) - || !nodeContainer.TryGetNode(thermoMachine.InletName, out PipeNode? inlet)) + || !_nodeContainer.TryGetNode(nodeContainer, thermoMachine.InletName, out PipeNode? inlet)) { return; } diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs index 97d6b5a921..af4c7c36b7 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs @@ -8,6 +8,7 @@ using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Shared.Atmos; @@ -31,6 +32,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -66,7 +68,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems if (!vent.Enabled || !TryComp(uid, out AtmosDeviceComponent? device) || !TryComp(uid, out NodeContainerComponent? nodeContainer) - || !nodeContainer.TryGetNode(nodeName, out PipeNode? pipe)) + || !_nodeContainer.TryGetNode(nodeContainer, nodeName, out PipeNode? pipe)) { return; } @@ -303,7 +305,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems VentPumpDirection.Siphoning => component.Outlet, _ => throw new ArgumentOutOfRangeException() }; - if(nodeContainer.TryGetNode(nodeName, out PipeNode? pipe)) + if (_nodeContainer.TryGetNode(nodeContainer, nodeName, out PipeNode? pipe)) gasMixDict.Add(nodeName, pipe.Air); args.GasMixtures = gasMixDict; diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs index b33bfd9aee..e91a0f986e 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs @@ -7,6 +7,7 @@ using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Shared.Atmos; @@ -29,6 +30,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; [Dependency] private readonly TransformSystem _transformSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -56,7 +58,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems if (!scrubber.Enabled || !EntityManager.TryGetComponent(uid, out NodeContainerComponent? nodeContainer) - || !nodeContainer.TryGetNode(scrubber.OutletName, out PipeNode? outlet)) + || !_nodeContainer.TryGetNode(nodeContainer, scrubber.OutletName, out PipeNode? outlet)) return; var xform = Transform(uid); diff --git a/Content.Server/Atmos/Portable/PortableScrubberSystem.cs b/Content.Server/Atmos/Portable/PortableScrubberSystem.cs index 005bf8f44e..9568e4d9c7 100644 --- a/Content.Server/Atmos/Portable/PortableScrubberSystem.cs +++ b/Content.Server/Atmos/Portable/PortableScrubberSystem.cs @@ -14,6 +14,7 @@ using Content.Server.NodeContainer.NodeGroups; using Content.Server.Audio; using Content.Server.Administration.Logs; using Content.Server.Construction; +using Content.Server.NodeContainer.EntitySystems; using Content.Shared.Database; namespace Content.Server.Atmos.Portable @@ -29,6 +30,7 @@ namespace Content.Server.Atmos.Portable [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly AmbientSoundSystem _ambientSound = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -60,7 +62,7 @@ namespace Content.Server.Atmos.Portable // If we are on top of a connector port, empty into it. if (TryComp(uid, out var nodeContainer) - && nodeContainer.TryGetNode(component.PortName, out PortablePipeNode? portableNode) + && _nodeContainer.TryGetNode(nodeContainer, component.PortName, out PortablePipeNode? portableNode) && portableNode.ConnectionsEnabled) { _atmosphereSystem.React(component.Air, portableNode); @@ -104,7 +106,7 @@ namespace Content.Server.Atmos.Portable if (!TryComp(uid, out NodeContainerComponent? nodeContainer)) return; - if (!nodeContainer.TryGetNode(component.PortName, out PipeNode? portableNode)) + if (!_nodeContainer.TryGetNode(nodeContainer, component.PortName, out PipeNode? portableNode)) return; portableNode.ConnectionsEnabled = (args.Anchored && _gasPortableSystem.FindGasPortIn(Transform(uid).GridUid, Transform(uid).Coordinates, out _)); @@ -166,7 +168,7 @@ namespace Content.Server.Atmos.Portable // If it's connected to a port, include the port side if (TryComp(uid, out NodeContainerComponent? nodeContainer)) { - if(nodeContainer.TryGetNode(component.PortName, out PipeNode? port)) + if (_nodeContainer.TryGetNode(nodeContainer, component.PortName, out PipeNode? port)) gasMixDict.Add(component.PortName, port.Air); } args.GasMixtures = gasMixDict; diff --git a/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs index 9534dd25f1..aa4623e415 100644 --- a/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs @@ -1,5 +1,6 @@ using Content.Server.DeviceNetwork.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using JetBrains.Annotations; using Content.Server.Power.EntitySystems; using Content.Server.Power.Nodes; @@ -9,6 +10,8 @@ namespace Content.Server.DeviceNetwork.Systems [UsedImplicitly] public sealed class ApcNetworkSystem : EntitySystem { + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; + public override void Initialize() { base.Initialize(); @@ -36,11 +39,11 @@ namespace Content.Server.DeviceNetwork.Systems { if (!EntityManager.TryGetComponent(args.Provider.Owner, out NodeContainerComponent? nodeContainer)) return; - if (nodeContainer.TryGetNode("power", out CableNode? node)) + if (_nodeContainer.TryGetNode(nodeContainer, "power", out CableNode? node)) { component.ConnectedNode = node; } - else if (nodeContainer.TryGetNode("output", out CableDeviceNode? deviceNode)) + else if (_nodeContainer.TryGetNode(nodeContainer, "output", out CableDeviceNode? deviceNode)) { component.ConnectedNode = deviceNode; } diff --git a/Content.Server/Electrocution/ElectrocutionNode.cs b/Content.Server/Electrocution/ElectrocutionNode.cs index 089f9f5ad3..3fdfebaf47 100644 --- a/Content.Server/Electrocution/ElectrocutionNode.cs +++ b/Content.Server/Electrocution/ElectrocutionNode.cs @@ -1,4 +1,5 @@ using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Robust.Shared.Map.Components; @@ -18,10 +19,12 @@ namespace Content.Server.Electrocution MapGridComponent? grid, IEntityManager entMan) { + var _nodeContainer = entMan.System(); + if (!nodeQuery.TryGetComponent(CableEntity, out var nodeContainer)) yield break; - if (nodeContainer.TryGetNode(NodeName, out Node? node)) + if (_nodeContainer.TryGetNode(nodeContainer, NodeName, out Node? node)) yield return node; } } diff --git a/Content.Server/Electrocution/ElectrocutionSystem.cs b/Content.Server/Electrocution/ElectrocutionSystem.cs index b73228a139..42c0cb2500 100644 --- a/Content.Server/Electrocution/ElectrocutionSystem.cs +++ b/Content.Server/Electrocution/ElectrocutionSystem.cs @@ -48,6 +48,7 @@ public sealed class ElectrocutionSystem : SharedElectrocutionSystem [Dependency] private readonly TagSystem _tag = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; private const string StatusEffectKey = "Electrocution"; private const string DamageType = "Shock"; @@ -265,7 +266,7 @@ public sealed class ElectrocutionSystem : SharedElectrocutionSystem Node? TryNode(string? id) { if (id != null && - nodeContainer.TryGetNode(id, out var tryNode) && + _nodeContainer.TryGetNode(nodeContainer, id, out var tryNode) && tryNode.NodeGroup is IBasePowerNet { NetworkNode: { LastCombinedSupply: > 0 } }) { return tryNode; @@ -320,7 +321,12 @@ public sealed class ElectrocutionSystem : SharedElectrocutionSystem return true; var electrocutionEntity = Spawn($"VirtualElectrocutionLoad{node.NodeGroupID}", sourceTransform.Coordinates); - var electrocutionNode = Comp(electrocutionEntity).GetNode("electrocution"); + + var nodeContainer = Comp(electrocutionEntity); + + if (!_nodeContainer.TryGetNode(nodeContainer, "electrocution", out var electrocutionNode)) + return false; + var electrocutionComponent = Comp(electrocutionEntity); // This shows up in the power monitor. diff --git a/Content.Server/Medical/CryoPodSystem.cs b/Content.Server/Medical/CryoPodSystem.cs index 74cfaf18df..695da624e3 100644 --- a/Content.Server/Medical/CryoPodSystem.cs +++ b/Content.Server/Medical/CryoPodSystem.cs @@ -10,6 +10,7 @@ using Content.Server.Chemistry.EntitySystems; using Content.Server.Climbing; using Content.Server.Medical.Components; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.NodeGroups; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; @@ -49,6 +50,7 @@ public sealed partial class CryoPodSystem: SharedCryoPodSystem [Dependency] private readonly MetaDataSystem _metaDataSystem = default!; [Dependency] private readonly ReactiveSystem _reactiveSystem = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -231,7 +233,7 @@ public sealed partial class CryoPodSystem: SharedCryoPodSystem if (!TryComp(uid, out NodeContainerComponent? nodeContainer)) return; - if (!nodeContainer.TryGetNode(cryoPod.PortName, out PortablePipeNode? portNode)) + if (!_nodeContainer.TryGetNode(nodeContainer, cryoPod.PortName, out PortablePipeNode? portNode)) return; if (!TryComp(uid, out CryoPodAirComponent? cryoPodAir)) @@ -254,7 +256,7 @@ public sealed partial class CryoPodSystem: SharedCryoPodSystem // If it's connected to a port, include the port side if (TryComp(uid, out NodeContainerComponent? nodeContainer)) { - if(nodeContainer.TryGetNode(component.PortName, out PipeNode? port)) + if (_nodeContainer.TryGetNode(nodeContainer, component.PortName, out PipeNode? port)) gasMixDict.Add(component.PortName, port.Air); } args.GasMixtures = gasMixDict; diff --git a/Content.Server/NodeContainer/EntitySystems/NodeContainerSystem.cs b/Content.Server/NodeContainer/EntitySystems/NodeContainerSystem.cs index c3d3231c92..d207f99422 100644 --- a/Content.Server/NodeContainer/EntitySystems/NodeContainerSystem.cs +++ b/Content.Server/NodeContainer/EntitySystems/NodeContainerSystem.cs @@ -2,6 +2,7 @@ using Content.Server.NodeContainer.Nodes; using Content.Server.NodeContainer.NodeGroups; using Content.Shared.Examine; using JetBrains.Annotations; +using System.Diagnostics.CodeAnalysis; namespace Content.Server.NodeContainer.EntitySystems { @@ -27,6 +28,24 @@ namespace Content.Server.NodeContainer.EntitySystems SubscribeLocalEvent(OnExamine); } + public bool TryGetNode(NodeContainerComponent component, string? identifier, [NotNullWhen(true)] out T? node) where T : Node + { + if (identifier == null) + { + node = null; + return false; + } + + if (component.Nodes.TryGetValue(identifier, out var n) && n is T t) + { + node = t; + return true; + } + + node = null; + return false; + } + private void OnInitEvent(EntityUid uid, NodeContainerComponent component, ComponentInit args) { foreach (var (key, node) in component.Nodes) diff --git a/Content.Server/NodeContainer/NodeContainerComponent.cs b/Content.Server/NodeContainer/NodeContainerComponent.cs index 9dd968c2c8..39a4f48771 100644 --- a/Content.Server/NodeContainer/NodeContainerComponent.cs +++ b/Content.Server/NodeContainer/NodeContainerComponent.cs @@ -13,28 +13,5 @@ namespace Content.Server.NodeContainer [DataField("nodes", readOnly: true)] public Dictionary Nodes { get; } = new(); [DataField("examinable")] public bool Examinable = false; - - public T GetNode(string identifier) where T : Node - { - return (T) Nodes[identifier]; - } - - public bool TryGetNode(string? identifier, [NotNullWhen(true)] out T? node) where T : Node - { - if (identifier == null) - { - node = null; - return false; - } - - if (Nodes.TryGetValue(identifier, out var n) && n is T t) - { - node = t; - return true; - } - - node = null; - return false; - } } } diff --git a/Content.Server/Power/EntitySystems/CableVisSystem.cs b/Content.Server/Power/EntitySystems/CableVisSystem.cs index 6fc492320a..fcf0ae3d58 100644 --- a/Content.Server/Power/EntitySystems/CableVisSystem.cs +++ b/Content.Server/Power/EntitySystems/CableVisSystem.cs @@ -14,6 +14,7 @@ namespace Content.Server.Power.EntitySystems { [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Initialize() { @@ -24,10 +25,10 @@ namespace Content.Server.Power.EntitySystems private void UpdateAppearance(EntityUid uid, CableVisComponent cableVis, ref NodeGroupsRebuilt args) { - if (cableVis.Node == null) + if (!TryComp(uid, out NodeContainerComponent? nodeContainer) || !TryComp(uid, out AppearanceComponent? appearance)) return; - if (!TryComp(uid, out NodeContainerComponent? nodeContainer) || !TryComp(uid, out AppearanceComponent? appearance)) + if (!_nodeContainer.TryGetNode(nodeContainer, cableVis.Node, out var node)) return; var transform = Transform(uid); @@ -36,7 +37,6 @@ namespace Content.Server.Power.EntitySystems var mask = WireVisDirFlags.None; var tile = grid.TileIndicesFor(transform.Coordinates); - var node = nodeContainer.GetNode(cableVis.Node); foreach (var reachable in node.ReachableNodes) { diff --git a/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs b/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs index 32824d47dc..543e4eef03 100644 --- a/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Power; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Server.Power.NodeGroups; @@ -14,8 +15,8 @@ internal sealed class PowerMonitoringConsoleSystem : EntitySystem private float _updateTimer = 0.0f; private const float UpdateTime = 1.0f; - [Dependency] - private UserInterfaceSystem _userInterfaceSystem = default!; + [Dependency] private UserInterfaceSystem _userInterfaceSystem = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; public override void Update(float frameTime) { @@ -48,7 +49,10 @@ internal sealed class PowerMonitoringConsoleSystem : EntitySystem return new PowerMonitoringConsoleEntry(md.EntityName, prototype, rate, isBattery); } // Right, so, here's what needs to be considered here. - var netQ = ncComp.GetNode("hv").NodeGroup as PowerNet; + if (!_nodeContainer.TryGetNode(ncComp, "hv", out var node)) + return; + + var netQ = node.NodeGroup as PowerNet; if (netQ != null) { foreach (PowerConsumerComponent pcc in netQ.Consumers) diff --git a/Content.Server/Spreader/SpreaderNode.cs b/Content.Server/Spreader/SpreaderNode.cs index 3cf753f6d5..fa0c127889 100644 --- a/Content.Server/Spreader/SpreaderNode.cs +++ b/Content.Server/Spreader/SpreaderNode.cs @@ -1,4 +1,5 @@ using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Robust.Shared.Map.Components; @@ -10,6 +11,8 @@ namespace Content.Server.Spreader; /// 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) @@ -19,10 +22,12 @@ public sealed class SpreaderNode : Node 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(Name, out var neighborNode)) + !_nodeContainer.TryGetNode(nodeContainer, Name, out var neighborNode)) { continue; } diff --git a/Content.Server/Spreader/SpreaderSystem.cs b/Content.Server/Spreader/SpreaderSystem.cs index 9bdf71dfd7..814275adb9 100644 --- a/Content.Server/Spreader/SpreaderSystem.cs +++ b/Content.Server/Spreader/SpreaderSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; using Content.Server.NodeContainer; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.NodeGroups; using Content.Server.Shuttles.Components; using Content.Shared.Atmos; @@ -24,6 +25,7 @@ public sealed class SpreaderSystem : EntitySystem [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly IRobustRandom _robustRandom = default!; + [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; private static readonly TimeSpan SpreadCooldown = TimeSpan.FromSeconds(1); @@ -138,13 +140,13 @@ public sealed class SpreaderSystem : EntitySystem foreach (var sGroup in _spreaderGroups) { // Cleanup - if (!nodeQuery.TryGetComponent(uid, out var nodeComponent)) + if (!nodeQuery.TryGetComponent(uid, out var nodeContainer)) { RemCompDeferred(uid); continue; } - if (!nodeComponent.TryGetNode(sGroup, out var node)) + if (!_nodeContainer.TryGetNode(nodeContainer, sGroup, out var node)) continue; // Not allowed this tick?