Refactored PowerNet (#13287)

Closes https://github.com/space-wizards/space-station-14/issues/12353
This commit is contained in:
778b
2023-01-04 22:43:05 +04:00
committed by GitHub
parent 16525082d2
commit ba0510b62e

View File

@@ -29,6 +29,7 @@ namespace Content.Server.Power.NodeGroups
public sealed class PowerNet : BaseNetConnectorNodeGroup<IPowerNet>, IPowerNet public sealed class PowerNet : BaseNetConnectorNodeGroup<IPowerNet>, IPowerNet
{ {
private PowerNetSystem? _powerNetSystem; private PowerNetSystem? _powerNetSystem;
private IEntityManager? _entMan;
[ViewVariables] public readonly List<PowerSupplierComponent> Suppliers = new(); [ViewVariables] public readonly List<PowerSupplierComponent> Suppliers = new();
[ViewVariables] public readonly List<PowerConsumerComponent> Consumers = new(); [ViewVariables] public readonly List<PowerConsumerComponent> Consumers = new();
@@ -42,6 +43,8 @@ namespace Content.Server.Power.NodeGroups
{ {
base.Initialize(sourceNode, entMan); base.Initialize(sourceNode, entMan);
_entMan = entMan;
_powerNetSystem = entMan.EntitySysManager.GetEntitySystem<PowerNetSystem>(); _powerNetSystem = entMan.EntitySysManager.GetEntitySystem<PowerNetSystem>();
_powerNetSystem.InitPowerNet(this); _powerNetSystem.InitPowerNet(this);
} }
@@ -92,7 +95,10 @@ namespace Content.Server.Power.NodeGroups
public void AddDischarger(BatteryDischargerComponent discharger) public void AddDischarger(BatteryDischargerComponent discharger)
{ {
var battery = IoCManager.Resolve<IEntityManager>().GetComponent<PowerNetworkBatteryComponent>(discharger.Owner); if (_entMan == null)
return;
var battery = _entMan.GetComponent<PowerNetworkBatteryComponent>(discharger.Owner);
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkDischarging == default); DebugTools.Assert(battery.NetworkBattery.LinkedNetworkDischarging == default);
battery.NetworkBattery.LinkedNetworkDischarging = default; battery.NetworkBattery.LinkedNetworkDischarging = default;
Dischargers.Add(discharger); Dischargers.Add(discharger);
@@ -101,8 +107,11 @@ namespace Content.Server.Power.NodeGroups
public void RemoveDischarger(BatteryDischargerComponent discharger) public void RemoveDischarger(BatteryDischargerComponent discharger)
{ {
if (_entMan == null)
return;
// Can be missing if the entity is being deleted, not a big deal. // Can be missing if the entity is being deleted, not a big deal.
if (IoCManager.Resolve<IEntityManager>().TryGetComponent(discharger.Owner, out PowerNetworkBatteryComponent? battery)) if (_entMan.TryGetComponent(discharger.Owner, out PowerNetworkBatteryComponent? battery))
{ {
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkDischarging == NetworkNode.Id); DebugTools.Assert(battery.NetworkBattery.LinkedNetworkDischarging == NetworkNode.Id);
battery.NetworkBattery.LinkedNetworkDischarging = default; battery.NetworkBattery.LinkedNetworkDischarging = default;
@@ -114,7 +123,10 @@ namespace Content.Server.Power.NodeGroups
public void AddCharger(BatteryChargerComponent charger) public void AddCharger(BatteryChargerComponent charger)
{ {
var battery = IoCManager.Resolve<IEntityManager>().GetComponent<PowerNetworkBatteryComponent>(charger.Owner); if (_entMan == null)
return;
var battery = _entMan.GetComponent<PowerNetworkBatteryComponent>(charger.Owner);
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkCharging == default); DebugTools.Assert(battery.NetworkBattery.LinkedNetworkCharging == default);
battery.NetworkBattery.LinkedNetworkCharging = default; battery.NetworkBattery.LinkedNetworkCharging = default;
Chargers.Add(charger); Chargers.Add(charger);
@@ -123,8 +135,11 @@ namespace Content.Server.Power.NodeGroups
public void RemoveCharger(BatteryChargerComponent charger) public void RemoveCharger(BatteryChargerComponent charger)
{ {
if (_entMan == null)
return;
// Can be missing if the entity is being deleted, not a big deal. // Can be missing if the entity is being deleted, not a big deal.
if (IoCManager.Resolve<IEntityManager>().TryGetComponent(charger.Owner, out PowerNetworkBatteryComponent? battery)) if (_entMan.TryGetComponent(charger.Owner, out PowerNetworkBatteryComponent? battery))
{ {
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkCharging == NetworkNode.Id); DebugTools.Assert(battery.NetworkBattery.LinkedNetworkCharging == NetworkNode.Id);
battery.NetworkBattery.LinkedNetworkCharging = default; battery.NetworkBattery.LinkedNetworkCharging = default;