Portable Generator Rework (#19302)
This commit is contained in:
committed by
GitHub
parent
50828363fe
commit
bf16698efa
@@ -2,7 +2,6 @@ using Content.Server.NodeContainer.NodeGroups;
|
||||
using Content.Server.NodeContainer.Nodes;
|
||||
using Content.Server.Power.Components;
|
||||
using Content.Server.Power.EntitySystems;
|
||||
using Content.Server.Power.Pow3r;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Utility;
|
||||
using System.Linq;
|
||||
@@ -11,10 +10,6 @@ namespace Content.Server.Power.NodeGroups
|
||||
{
|
||||
public interface IPowerNet : IBasePowerNet
|
||||
{
|
||||
void AddSupplier(PowerSupplierComponent supplier);
|
||||
|
||||
void RemoveSupplier(PowerSupplierComponent supplier);
|
||||
|
||||
void AddDischarger(BatteryDischargerComponent discharger);
|
||||
|
||||
void RemoveDischarger(BatteryDischargerComponent discharger);
|
||||
@@ -26,19 +21,14 @@ namespace Content.Server.Power.NodeGroups
|
||||
|
||||
[NodeGroup(NodeGroupID.HVPower, NodeGroupID.MVPower)]
|
||||
[UsedImplicitly]
|
||||
public sealed partial class PowerNet : BaseNetConnectorNodeGroup<IPowerNet>, IPowerNet
|
||||
public sealed partial class PowerNet : BasePowerNet<IPowerNet>, IPowerNet
|
||||
{
|
||||
private PowerNetSystem? _powerNetSystem;
|
||||
private IEntityManager? _entMan;
|
||||
|
||||
[ViewVariables] public readonly List<PowerSupplierComponent> Suppliers = new();
|
||||
[ViewVariables] public readonly List<PowerConsumerComponent> Consumers = new();
|
||||
[ViewVariables] public readonly List<BatteryChargerComponent> Chargers = new();
|
||||
[ViewVariables] public readonly List<BatteryDischargerComponent> Dischargers = new();
|
||||
|
||||
[ViewVariables]
|
||||
public PowerState.Network NetworkNode { get; } = new();
|
||||
|
||||
public override void Initialize(Node sourceNode, IEntityManager entMan)
|
||||
{
|
||||
base.Initialize(sourceNode, entMan);
|
||||
@@ -61,38 +51,6 @@ namespace Content.Server.Power.NodeGroups
|
||||
netConnectorComponent.Net = this;
|
||||
}
|
||||
|
||||
public void AddSupplier(PowerSupplierComponent supplier)
|
||||
{
|
||||
DebugTools.Assert(supplier.NetworkSupply.LinkedNetwork == default);
|
||||
supplier.NetworkSupply.LinkedNetwork = default;
|
||||
Suppliers.Add(supplier);
|
||||
_powerNetSystem?.QueueReconnectPowerNet(this);
|
||||
}
|
||||
|
||||
public void RemoveSupplier(PowerSupplierComponent supplier)
|
||||
{
|
||||
DebugTools.Assert(supplier.NetworkSupply.LinkedNetwork == NetworkNode.Id);
|
||||
supplier.NetworkSupply.LinkedNetwork = default;
|
||||
Suppliers.Remove(supplier);
|
||||
_powerNetSystem?.QueueReconnectPowerNet(this);
|
||||
}
|
||||
|
||||
public void AddConsumer(PowerConsumerComponent consumer)
|
||||
{
|
||||
DebugTools.Assert(consumer.NetworkLoad.LinkedNetwork == default);
|
||||
consumer.NetworkLoad.LinkedNetwork = default;
|
||||
Consumers.Add(consumer);
|
||||
_powerNetSystem?.QueueReconnectPowerNet(this);
|
||||
}
|
||||
|
||||
public void RemoveConsumer(PowerConsumerComponent consumer)
|
||||
{
|
||||
DebugTools.Assert(consumer.NetworkLoad.LinkedNetwork == NetworkNode.Id);
|
||||
consumer.NetworkLoad.LinkedNetwork = default;
|
||||
Consumers.Remove(consumer);
|
||||
_powerNetSystem?.QueueReconnectPowerNet(this);
|
||||
}
|
||||
|
||||
public void AddDischarger(BatteryDischargerComponent discharger)
|
||||
{
|
||||
if (_entMan == null)
|
||||
@@ -102,7 +60,7 @@ namespace Content.Server.Power.NodeGroups
|
||||
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkDischarging == default);
|
||||
battery.NetworkBattery.LinkedNetworkDischarging = default;
|
||||
Dischargers.Add(discharger);
|
||||
_powerNetSystem?.QueueReconnectPowerNet(this);
|
||||
QueueNetworkReconnect();
|
||||
}
|
||||
|
||||
public void RemoveDischarger(BatteryDischargerComponent discharger)
|
||||
@@ -113,12 +71,13 @@ namespace Content.Server.Power.NodeGroups
|
||||
// Can be missing if the entity is being deleted, not a big deal.
|
||||
if (_entMan.TryGetComponent(discharger.Owner, out PowerNetworkBatteryComponent? battery))
|
||||
{
|
||||
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkDischarging == NetworkNode.Id);
|
||||
// Linked network can be default if it was re-connected twice in one tick.
|
||||
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkDischarging == default || battery.NetworkBattery.LinkedNetworkDischarging == NetworkNode.Id);
|
||||
battery.NetworkBattery.LinkedNetworkDischarging = default;
|
||||
}
|
||||
|
||||
Dischargers.Remove(discharger);
|
||||
_powerNetSystem?.QueueReconnectPowerNet(this);
|
||||
QueueNetworkReconnect();
|
||||
}
|
||||
|
||||
public void AddCharger(BatteryChargerComponent charger)
|
||||
@@ -130,7 +89,7 @@ namespace Content.Server.Power.NodeGroups
|
||||
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkCharging == default);
|
||||
battery.NetworkBattery.LinkedNetworkCharging = default;
|
||||
Chargers.Add(charger);
|
||||
_powerNetSystem?.QueueReconnectPowerNet(this);
|
||||
QueueNetworkReconnect();
|
||||
}
|
||||
|
||||
public void RemoveCharger(BatteryChargerComponent charger)
|
||||
@@ -141,11 +100,17 @@ namespace Content.Server.Power.NodeGroups
|
||||
// Can be missing if the entity is being deleted, not a big deal.
|
||||
if (_entMan.TryGetComponent(charger.Owner, out PowerNetworkBatteryComponent? battery))
|
||||
{
|
||||
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkCharging == NetworkNode.Id);
|
||||
// Linked network can be default if it was re-connected twice in one tick.
|
||||
DebugTools.Assert(battery.NetworkBattery.LinkedNetworkCharging == default || battery.NetworkBattery.LinkedNetworkCharging == NetworkNode.Id);
|
||||
battery.NetworkBattery.LinkedNetworkCharging = default;
|
||||
}
|
||||
|
||||
Chargers.Remove(charger);
|
||||
QueueNetworkReconnect();
|
||||
}
|
||||
|
||||
public override void QueueNetworkReconnect()
|
||||
{
|
||||
_powerNetSystem?.QueueReconnectPowerNet(this);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user