PowerConsumerComponent.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using Content.Server.Power.NodeGroups;
  2. using Content.Server.Power.Pow3r;
  3. namespace Content.Server.Power.Components
  4. {
  5. /// <summary>
  6. /// Draws power directly from an MV or HV wire it is on top of.
  7. /// </summary>
  8. [RegisterComponent]
  9. public sealed partial class PowerConsumerComponent : BaseNetConnectorComponent<IBasePowerNet>
  10. {
  11. /// <summary>
  12. /// How much power this needs to be fully powered.
  13. /// </summary>
  14. [DataField("drawRate")]
  15. [ViewVariables(VVAccess.ReadWrite)]
  16. public float DrawRate { get => NetworkLoad.DesiredPower; set => NetworkLoad.DesiredPower = value; }
  17. [DataField("showInMonitor")]
  18. [ViewVariables(VVAccess.ReadWrite)]
  19. public bool ShowInMonitor { get; set; } = true;
  20. /// <summary>
  21. /// How much power this is currently receiving from <see cref="PowerSupplierComponent"/>s.
  22. /// </summary>
  23. [ViewVariables]
  24. public float ReceivedPower => NetworkLoad.ReceivingPower;
  25. public float LastReceived = float.NaN;
  26. public PowerState.Load NetworkLoad { get; } = new();
  27. protected override void AddSelfToNet(IBasePowerNet powerNet)
  28. {
  29. powerNet.AddConsumer(this);
  30. }
  31. protected override void RemoveSelfFromNet(IBasePowerNet powerNet)
  32. {
  33. powerNet.RemoveConsumer(this);
  34. }
  35. }
  36. }