#nullable enable using System.Collections.Generic; using System.Linq; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; namespace Content.Server.NodeContainer.NodeGroups { public abstract class BaseNetConnectorNodeGroup : BaseNodeGroup where TNetConnector : BaseNetConnectorComponent { private readonly Dictionary> _netConnectorComponents = new(); protected override void OnAddNode(Node node) { var newNetConnectorComponents = node.Owner .GetAllComponents() .Where(powerComp => (NodeGroupID) powerComp.Voltage == node.NodeGroupID) .ToList(); _netConnectorComponents[node] = newNetConnectorComponents; foreach (var netConnectorComponent in newNetConnectorComponents) { SetNetConnectorNet(netConnectorComponent); } } protected abstract void SetNetConnectorNet(TNetConnector netConnectorComponent); protected override void OnRemoveNode(Node node) { foreach (var netConnectorComponent in _netConnectorComponents[node]) { netConnectorComponent.ClearNet(); } _netConnectorComponents.Remove(node); } } }