Refactored PowerNet (#13287)
Closes https://github.com/space-wizards/space-station-14/issues/12353
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user