using Content.Server.Power.NodeGroups;
using Content.Server.Power.Pow3r;
using Robust.Shared.GameObjects;
using Robust.Shared.Serialization.Manager.Attributes;
using Robust.Shared.ViewVariables;
namespace Content.Server.Power.Components
{
///
/// Draws power directly from an MV or HV wire it is on top of.
///
[RegisterComponent]
public sealed class PowerConsumerComponent : BaseNetConnectorComponent
{
///
/// How much power this needs to be fully powered.
///
[DataField("drawRate")]
[ViewVariables(VVAccess.ReadWrite)]
public float DrawRate { get => NetworkLoad.DesiredPower; set => NetworkLoad.DesiredPower = value; }
///
/// How much power this is currently receiving from s.
///
[ViewVariables]
public float ReceivedPower => NetworkLoad.ReceivingPower;
public float LastReceived = float.NaN;
public PowerState.Load NetworkLoad { get; } = new();
protected override void AddSelfToNet(IBasePowerNet powerNet)
{
powerNet.AddConsumer(this);
}
protected override void RemoveSelfFromNet(IBasePowerNet powerNet)
{
powerNet.RemoveConsumer(this);
}
}
}