Little NodeContainer ECS (#17702)

This commit is contained in:
faint
2023-06-28 14:28:38 +03:00
committed by GitHub
parent c25f3f08ed
commit 2f85b5ea3c
27 changed files with 143 additions and 88 deletions

View File

@@ -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<CableNode>(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<CableNode>(cableVis.Node);
foreach (var reachable in node.ReachableNodes)
{

View File

@@ -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<Node>("hv").NodeGroup as PowerNet;
if (!_nodeContainer.TryGetNode<Node>(ncComp, "hv", out var node))
return;
var netQ = node.NodeGroup as PowerNet;
if (netQ != null)
{
foreach (PowerConsumerComponent pcc in netQ.Consumers)