Portable Generator Rework (#19302)
This commit is contained in:
committed by
GitHub
parent
50828363fe
commit
bf16698efa
51
Content.Server/Power/NodeGroups/BasePowerNet.cs
Normal file
51
Content.Server/Power/NodeGroups/BasePowerNet.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using Content.Server.Power.Components;
|
||||
using Content.Server.Power.Pow3r;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Server.Power.NodeGroups;
|
||||
|
||||
public abstract class BasePowerNet<TNetType> : BaseNetConnectorNodeGroup<TNetType>, IBasePowerNet
|
||||
where TNetType : IBasePowerNet
|
||||
{
|
||||
[ViewVariables] public readonly List<PowerConsumerComponent> Consumers = new();
|
||||
[ViewVariables] public readonly List<PowerSupplierComponent> Suppliers = new();
|
||||
|
||||
[ViewVariables]
|
||||
public PowerState.Network NetworkNode { get; } = new();
|
||||
|
||||
public void AddConsumer(PowerConsumerComponent consumer)
|
||||
{
|
||||
DebugTools.Assert(consumer.NetworkLoad.LinkedNetwork == default);
|
||||
consumer.NetworkLoad.LinkedNetwork = default;
|
||||
Consumers.Add(consumer);
|
||||
QueueNetworkReconnect();
|
||||
}
|
||||
|
||||
public void RemoveConsumer(PowerConsumerComponent consumer)
|
||||
{
|
||||
// Linked network can be default if it was re-connected twice in one tick.
|
||||
DebugTools.Assert(consumer.NetworkLoad.LinkedNetwork == default || consumer.NetworkLoad.LinkedNetwork == NetworkNode.Id);
|
||||
consumer.NetworkLoad.LinkedNetwork = default;
|
||||
Consumers.Remove(consumer);
|
||||
QueueNetworkReconnect();
|
||||
}
|
||||
|
||||
public void AddSupplier(PowerSupplierComponent supplier)
|
||||
{
|
||||
DebugTools.Assert(supplier.NetworkSupply.LinkedNetwork == default);
|
||||
supplier.NetworkSupply.LinkedNetwork = default;
|
||||
Suppliers.Add(supplier);
|
||||
QueueNetworkReconnect();
|
||||
}
|
||||
|
||||
public void RemoveSupplier(PowerSupplierComponent supplier)
|
||||
{
|
||||
// Linked network can be default if it was re-connected twice in one tick.
|
||||
DebugTools.Assert(supplier.NetworkSupply.LinkedNetwork == default || supplier.NetworkSupply.LinkedNetwork == NetworkNode.Id);
|
||||
supplier.NetworkSupply.LinkedNetwork = default;
|
||||
Suppliers.Remove(supplier);
|
||||
QueueNetworkReconnect();
|
||||
}
|
||||
|
||||
public abstract void QueueNetworkReconnect();
|
||||
}
|
||||
Reference in New Issue
Block a user