using Content.Server.GameObjects.Components.Power; using Content.Server.GameObjects.Components.NodeContainer.Nodes; using System.Collections.Generic; using System.Linq; namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups { public abstract class BaseNetConnectorNodeGroup : BaseNodeGroup where TNetConnector : BaseNetConnectorComponent { private readonly Dictionary> _netConnectorComponents = new Dictionary>(); protected override void OnAddNode(Node node) { var newNetConnectorComponents = node.Owner .GetAllComponents() .Where(powerComp => (NodeGroupID) powerComp.Voltage == node.NodeGroupID) .ToList(); _netConnectorComponents.Add(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); } } }