2021-01-28 20:21:08 -06:00
|
|
|
#nullable enable
|
|
|
|
|
using System.Collections.Generic;
|
2020-06-28 09:23:26 -06:00
|
|
|
using System.Linq;
|
2021-06-09 22:19:39 +02:00
|
|
|
using Content.Server.NodeContainer.Nodes;
|
|
|
|
|
using Content.Server.Power.Components;
|
2020-06-28 09:23:26 -06:00
|
|
|
|
2021-06-09 22:19:39 +02:00
|
|
|
namespace Content.Server.NodeContainer.NodeGroups
|
2020-06-28 09:23:26 -06:00
|
|
|
{
|
|
|
|
|
public abstract class BaseNetConnectorNodeGroup<TNetConnector, TNetType> : BaseNodeGroup where TNetConnector : BaseNetConnectorComponent<TNetType>
|
|
|
|
|
{
|
2020-11-27 11:00:49 +01:00
|
|
|
private readonly Dictionary<Node, List<TNetConnector>> _netConnectorComponents = new();
|
2020-06-28 09:23:26 -06:00
|
|
|
|
|
|
|
|
protected override void OnAddNode(Node node)
|
|
|
|
|
{
|
|
|
|
|
var newNetConnectorComponents = node.Owner
|
|
|
|
|
.GetAllComponents<TNetConnector>()
|
|
|
|
|
.Where(powerComp => (NodeGroupID) powerComp.Voltage == node.NodeGroupID)
|
|
|
|
|
.ToList();
|
2021-06-01 11:48:24 +02:00
|
|
|
_netConnectorComponents[node] = newNetConnectorComponents;
|
2020-06-28 09:23:26 -06:00
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|