EmergencyLightComponent.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using Content.Server.Light.EntitySystems;
  2. using Content.Shared.Light.Components;
  3. namespace Content.Server.Light.Components;
  4. /// <summary>
  5. /// Component that represents an emergency light, it has an internal battery that charges when the power is on.
  6. /// </summary>
  7. [RegisterComponent, Access(typeof(EmergencyLightSystem))]
  8. public sealed partial class EmergencyLightComponent : SharedEmergencyLightComponent
  9. {
  10. [ViewVariables]
  11. public EmergencyLightState State;
  12. /// <summary>
  13. /// Is this emergency light forced on for some reason and cannot be disabled through normal means
  14. /// (i.e. blue alert or higher?)
  15. /// </summary>
  16. public bool ForciblyEnabled = false;
  17. [ViewVariables(VVAccess.ReadWrite)]
  18. [DataField("wattage")]
  19. public float Wattage = 5;
  20. [ViewVariables(VVAccess.ReadWrite)]
  21. [DataField("chargingWattage")]
  22. public float ChargingWattage = 60;
  23. [ViewVariables(VVAccess.ReadWrite)]
  24. [DataField("chargingEfficiency")]
  25. public float ChargingEfficiency = 0.85f;
  26. public Dictionary<EmergencyLightState, string> BatteryStateText = new()
  27. {
  28. { EmergencyLightState.Full, "emergency-light-component-light-state-full" },
  29. { EmergencyLightState.Empty, "emergency-light-component-light-state-empty" },
  30. { EmergencyLightState.Charging, "emergency-light-component-light-state-charging" },
  31. { EmergencyLightState.On, "emergency-light-component-light-state-on" }
  32. };
  33. }
  34. public enum EmergencyLightState : byte
  35. {
  36. Charging,
  37. Full,
  38. Empty,
  39. On
  40. }
  41. public sealed class EmergencyLightEvent : EntityEventArgs
  42. {
  43. public EmergencyLightState State { get; }
  44. public EmergencyLightEvent(EmergencyLightState state)
  45. {
  46. State = state;
  47. }
  48. }