ApcPowerReceiverComponent.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Content.Server.Power.NodeGroups;
  2. using Content.Server.Power.Pow3r;
  3. using Content.Shared.Power.Components;
  4. namespace Content.Server.Power.Components
  5. {
  6. /// <summary>
  7. /// Attempts to link with a nearby <see cref="ApcPowerProviderComponent"/>s
  8. /// so that it can receive power from a <see cref="IApcNet"/>.
  9. /// </summary>
  10. [RegisterComponent]
  11. public sealed partial class ApcPowerReceiverComponent : SharedApcPowerReceiverComponent
  12. {
  13. /// <summary>
  14. /// Amount of charge this needs from an APC per second to function.
  15. /// </summary>
  16. [ViewVariables(VVAccess.ReadWrite)]
  17. [DataField("powerLoad")]
  18. public float Load { get => NetworkLoad.DesiredPower; set => NetworkLoad.DesiredPower = value; }
  19. public ApcPowerProviderComponent? Provider = null;
  20. /// <summary>
  21. /// When false, causes this to appear powered even if not receiving power from an Apc.
  22. /// </summary>
  23. [ViewVariables(VVAccess.ReadWrite)]
  24. public override bool NeedsPower
  25. {
  26. get => _needsPower;
  27. set
  28. {
  29. _needsPower = value;
  30. // Reset this so next tick will do a power update.
  31. Recalculate = true;
  32. }
  33. }
  34. [DataField("needsPower")]
  35. private bool _needsPower = true;
  36. /// <summary>
  37. /// When true, causes this to never appear powered.
  38. /// </summary>
  39. [DataField("powerDisabled")]
  40. public override bool PowerDisabled
  41. {
  42. get => !NetworkLoad.Enabled;
  43. set => NetworkLoad.Enabled = !value;
  44. }
  45. // TODO Is this needed? It forces a PowerChangedEvent when NeedsPower is toggled even if it changes to the same state.
  46. public bool Recalculate;
  47. [ViewVariables]
  48. public PowerState.Load NetworkLoad { get; } = new PowerState.Load
  49. {
  50. DesiredPower = 5
  51. };
  52. public float PowerReceived => NetworkLoad.ReceivingPower;
  53. }
  54. }