AirAlarmBoundUserInterface.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using Content.Shared.Atmos;
  2. using Content.Shared.Atmos.Monitor;
  3. using Content.Shared.Atmos.Monitor.Components;
  4. using Robust.Client.UserInterface;
  5. namespace Content.Client.Atmos.Monitor.UI;
  6. public sealed class AirAlarmBoundUserInterface : BoundUserInterface
  7. {
  8. private AirAlarmWindow? _window;
  9. public AirAlarmBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
  10. {
  11. }
  12. protected override void Open()
  13. {
  14. base.Open();
  15. _window = this.CreateWindow<AirAlarmWindow>();
  16. _window.SetEntity(Owner);
  17. _window.AtmosDeviceDataChanged += OnDeviceDataChanged;
  18. _window.AtmosDeviceDataCopied += OnDeviceDataCopied;
  19. _window.AtmosAlarmThresholdChanged += OnThresholdChanged;
  20. _window.AirAlarmModeChanged += OnAirAlarmModeChanged;
  21. _window.AutoModeChanged += OnAutoModeChanged;
  22. _window.ResyncAllRequested += ResyncAllDevices;
  23. }
  24. private void ResyncAllDevices()
  25. {
  26. SendMessage(new AirAlarmResyncAllDevicesMessage());
  27. }
  28. private void OnDeviceDataChanged(string address, IAtmosDeviceData data)
  29. {
  30. SendMessage(new AirAlarmUpdateDeviceDataMessage(address, data));
  31. }
  32. private void OnDeviceDataCopied(IAtmosDeviceData data)
  33. {
  34. SendMessage(new AirAlarmCopyDeviceDataMessage(data));
  35. }
  36. private void OnAirAlarmModeChanged(AirAlarmMode mode)
  37. {
  38. SendMessage(new AirAlarmUpdateAlarmModeMessage(mode));
  39. }
  40. private void OnAutoModeChanged(bool enabled)
  41. {
  42. SendMessage(new AirAlarmUpdateAutoModeMessage(enabled));
  43. }
  44. private void OnThresholdChanged(string address, AtmosMonitorThresholdType type, AtmosAlarmThreshold threshold, Gas? gas = null)
  45. {
  46. SendMessage(new AirAlarmUpdateAlarmThresholdMessage(address, type, threshold, gas));
  47. }
  48. protected override void UpdateState(BoundUserInterfaceState state)
  49. {
  50. base.UpdateState(state);
  51. if (state is not AirAlarmUIState cast || _window == null)
  52. {
  53. return;
  54. }
  55. _window.UpdateState(cast);
  56. }
  57. protected override void Dispose(bool disposing)
  58. {
  59. base.Dispose(disposing);
  60. if (disposing)
  61. _window?.Dispose();
  62. }
  63. }