Files
wwdpublic/Content.Server/Power/NodeGroups/BasePowerNet.cs
Pieter-Jan Briers 942563e582 Make PACMANs a little better (#24604)
* PACMAN generators show network load/supply.

This gives more feedback to players that their PACMAN is properly connected and what the network status is (i.e. you don't have enough generators).

* Buff JRPACMAN to 8 kW.

Shifted all power values up by +3 kW.

They're frequently too weak to power even single rooms so they deserve a buff.

* Change unit format helpers number format.

Always displays one digit of precision. This avoids jumping around when a value is changing live.

(cherry picked from commit f855cb2b0065083447128778c31c2a93bcd70a6a)
2024-01-28 00:32:20 +01:00

63 lines
2.3 KiB
C#

using Content.Server.NodeContainer.Nodes;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
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();
public PowerNetSystem PowerNetSystem = default!;
[ViewVariables]
public PowerState.Network NetworkNode { get; } = new();
public override void Initialize(Node sourceNode, IEntityManager entMan)
{
base.Initialize(sourceNode, entMan);
PowerNetSystem = entMan.EntitySysManager.GetEntitySystem<PowerNetSystem>();
}
public bool IsConnectedNetwork => NodeCount > 1;
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();
}