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 class PowerConsumerComponent : BaseNetConnectorComponent { public override string Name => "PowerConsumer"; /// /// 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); } } }