SharedAirAlarmComponent.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using Robust.Shared.Serialization;
  2. namespace Content.Shared.Atmos.Monitor.Components;
  3. [Serializable, NetSerializable]
  4. public enum SharedAirAlarmInterfaceKey
  5. {
  6. Key
  7. }
  8. [Serializable, NetSerializable]
  9. public enum AirAlarmMode
  10. {
  11. None,
  12. Filtering,
  13. WideFiltering,
  14. Fill,
  15. Panic,
  16. }
  17. [Serializable, NetSerializable]
  18. public enum AirAlarmWireStatus
  19. {
  20. Power,
  21. Access,
  22. Panic,
  23. DeviceSync
  24. }
  25. public interface IAtmosDeviceData
  26. {
  27. public bool Enabled { get; set; }
  28. public bool Dirty { get; set; }
  29. public bool IgnoreAlarms { get; set; }
  30. }
  31. [Serializable, NetSerializable]
  32. public sealed class AirAlarmUIState : BoundUserInterfaceState
  33. {
  34. public AirAlarmUIState(string address, int deviceCount, float pressureAverage, float temperatureAverage, List<(string, IAtmosDeviceData)> deviceData, AirAlarmMode mode, AtmosAlarmType alarmType, bool autoMode)
  35. {
  36. Address = address;
  37. DeviceCount = deviceCount;
  38. PressureAverage = pressureAverage;
  39. TemperatureAverage = temperatureAverage;
  40. DeviceData = deviceData;
  41. Mode = mode;
  42. AlarmType = alarmType;
  43. AutoMode = autoMode;
  44. }
  45. public string Address { get; }
  46. public int DeviceCount { get; }
  47. public float PressureAverage { get; }
  48. public float TemperatureAverage { get; }
  49. /// <summary>
  50. /// Every single device data that can be seen from this
  51. /// air alarm. This includes vents, scrubbers, and sensors.
  52. /// Each entry is a tuple of device address and the device
  53. /// data. The same address may appear multiple times, if
  54. /// that device provides multiple functions.
  55. /// </summary>
  56. public List<(string, IAtmosDeviceData)> DeviceData { get; }
  57. public AirAlarmMode Mode { get; }
  58. public AtmosAlarmType AlarmType { get; }
  59. public bool AutoMode { get; }
  60. }
  61. [Serializable, NetSerializable]
  62. public sealed class AirAlarmResyncAllDevicesMessage : BoundUserInterfaceMessage
  63. {}
  64. [Serializable, NetSerializable]
  65. public sealed class AirAlarmUpdateAlarmModeMessage : BoundUserInterfaceMessage
  66. {
  67. public AirAlarmMode Mode { get; }
  68. public AirAlarmUpdateAlarmModeMessage(AirAlarmMode mode)
  69. {
  70. Mode = mode;
  71. }
  72. }
  73. [Serializable, NetSerializable]
  74. public sealed class AirAlarmUpdateAutoModeMessage : BoundUserInterfaceMessage
  75. {
  76. public bool Enabled { get; }
  77. public AirAlarmUpdateAutoModeMessage(bool enabled)
  78. {
  79. Enabled = enabled;
  80. }
  81. }
  82. [Serializable, NetSerializable]
  83. public sealed class AirAlarmUpdateDeviceDataMessage : BoundUserInterfaceMessage
  84. {
  85. public string Address { get; }
  86. public IAtmosDeviceData Data { get; }
  87. public AirAlarmUpdateDeviceDataMessage(string addr, IAtmosDeviceData data)
  88. {
  89. Address = addr;
  90. Data = data;
  91. }
  92. }
  93. [Serializable, NetSerializable]
  94. public sealed class AirAlarmCopyDeviceDataMessage : BoundUserInterfaceMessage
  95. {
  96. public IAtmosDeviceData Data { get; }
  97. public AirAlarmCopyDeviceDataMessage(IAtmosDeviceData data)
  98. {
  99. Data = data;
  100. }
  101. }
  102. [Serializable, NetSerializable]
  103. public sealed class AirAlarmUpdateAlarmThresholdMessage : BoundUserInterfaceMessage
  104. {
  105. public string Address { get; }
  106. public AtmosAlarmThreshold Threshold { get; }
  107. public AtmosMonitorThresholdType Type { get; }
  108. public Gas? Gas { get; }
  109. public AirAlarmUpdateAlarmThresholdMessage(string address, AtmosMonitorThresholdType type, AtmosAlarmThreshold threshold, Gas? gas = null)
  110. {
  111. Address = address;
  112. Threshold = threshold;
  113. Type = type;
  114. Gas = gas;
  115. }
  116. }