diff --git a/Content.Client/Atmos/Monitor/UI/AirAlarmBoundUserInterface.cs b/Content.Client/Atmos/Monitor/UI/AirAlarmBoundUserInterface.cs index df419b282c..013f70a991 100644 --- a/Content.Client/Atmos/Monitor/UI/AirAlarmBoundUserInterface.cs +++ b/Content.Client/Atmos/Monitor/UI/AirAlarmBoundUserInterface.cs @@ -47,34 +47,21 @@ namespace Content.Client.Atmos.Monitor.UI SendMessage(new AirAlarmUpdateAlarmModeMessage(mode)); } - private void OnThresholdChanged(AtmosMonitorThresholdType type, AtmosAlarmThreshold threshold, Gas? gas = null) + private void OnThresholdChanged(string address, AtmosMonitorThresholdType type, AtmosAlarmThreshold threshold, Gas? gas = null) { - SendMessage(new AirAlarmUpdateAlarmThresholdMessage(type, threshold, gas)); + SendMessage(new AirAlarmUpdateAlarmThresholdMessage(address, type, threshold, gas)); } - protected override void ReceiveMessage(BoundUserInterfaceMessage message) + protected override void UpdateState(BoundUserInterfaceState state) { - if (_window == null) - return; + base.UpdateState(state); - switch (message) + if (state is not AirAlarmUIState cast || _window == null) { - case AirAlarmSetAddressMessage addrMsg: - _window.SetAddress(addrMsg.Address); - break; - case AirAlarmUpdateDeviceDataMessage deviceMsg: - _window.UpdateDeviceData(deviceMsg.Address, deviceMsg.Data); - break; - case AirAlarmUpdateAlarmModeMessage alarmMsg: - _window.UpdateModeSelector(alarmMsg.Mode); - break; - case AirAlarmUpdateAlarmThresholdMessage thresholdMsg: - _window.UpdateThreshold(ref thresholdMsg); - break; - case AirAlarmUpdateAirDataMessage airDataMsg: - _window.UpdateGasData(ref airDataMsg.AirData); - break; + return; } + + _window.UpdateState(cast); } protected override void Dispose(bool disposing) diff --git a/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs b/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs index 29445cfcff..135f80b3cd 100644 --- a/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs +++ b/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs @@ -19,7 +19,7 @@ namespace Content.Client.Atmos.Monitor.UI public sealed partial class AirAlarmWindow : DefaultWindow { public event Action? AtmosDeviceDataChanged; - public event Action? AtmosAlarmThresholdChanged; + public event Action? AtmosAlarmThresholdChanged; public event Action? AirAlarmModeChanged; public event Action? ResyncDeviceRequested; public event Action? ResyncAllRequested; @@ -34,9 +34,6 @@ namespace Content.Client.Atmos.Monitor.UI private BoxContainer _gasReadout => CGasContainer; private BoxContainer _ventDevices => CVentContainer; private BoxContainer _scrubberDevices => CScrubberContainer; - private BoxContainer _pressureThreshold => CPressureThreshold; - private BoxContainer _temperatureThreshold => CTemperatureThreshold; - private BoxContainer _gasThreshold => CGasThresholdContainer; private Dictionary _pumps = new(); private Dictionary _scrubbers = new(); @@ -85,11 +82,24 @@ namespace Content.Client.Atmos.Monitor.UI }; } + public void UpdateState(AirAlarmUIState state) + { + _pressure.SetMarkup(Loc.GetString("air-alarm-ui-window-pressure", ("pressure", $"{state.PressureAverage:0.##}"))); + _temperature.SetMarkup(Loc.GetString("air-alarm-ui-window-temperature", ("tempC", $"{TemperatureHelpers.KelvinToCelsius(state.TemperatureAverage):0.#}"), ("temperature", $"{state.TemperatureAverage:0.##}"))); + _alarmState.SetMarkup(Loc.GetString("air-alarm-ui-window-alarm-state", ("state", $"{state.AlarmType}"))); + UpdateModeSelector(state.Mode); + foreach (var (addr, dev) in state.DeviceData) + { + UpdateDeviceData(addr, dev); + } + } + public void SetAddress(string address) { _address.Text = address; } + /* public void UpdateGasData(ref AirAlarmAirData state) { _pressure.SetMarkup(Loc.GetString("air-alarm-ui-window-pressure", ("pressure", $"{state.Pressure:0.##}"))); @@ -100,6 +110,7 @@ namespace Content.Client.Atmos.Monitor.UI foreach (var (gas, amount) in state.Gases) _gasLabels[gas].Text = Loc.GetString("air-alarm-ui-gases", ("gas", $"{gas}"), ("amount", $"{amount:0.####}"), ("percentage", $"{(amount / state.TotalMoles):0.##}")); } + */ public void UpdateModeSelector(AirAlarmMode mode) { @@ -143,6 +154,7 @@ namespace Content.Client.Atmos.Monitor.UI _deviceTotal.Text = $"{_pumps.Count + _scrubbers.Count}"; } + /* public void UpdateThreshold(ref AirAlarmUpdateAlarmThresholdMessage message) { switch (message.Type) @@ -188,5 +200,6 @@ namespace Content.Client.Atmos.Monitor.UI break; } } + */ } } diff --git a/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs b/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs index cb565712e9..bafaaa641e 100644 --- a/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs +++ b/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs @@ -524,8 +524,8 @@ namespace Content.Server.Atmos.Monitor.Systems return; } - var pressure = CalculatePressureAverage(uid, alarm); - var temperature = CalculateTemperatureAverage(uid, alarm); + var pressure = CalculatePressureAverage(alarm); + var temperature = CalculateTemperatureAverage(alarm); var dataToSend = new Dictionary(); if (alarm.CurrentTab != AirAlarmTab.Settings)