Remove client state from server AirAlarmComponent (#31236)
* Remove client state from server AirAlarmComponent Send information for all connected devices, not just the ones for the current tab, as attempting to limit this breaks multiple users viewing the same UI. Fixes #12842 * Send device data as a list, rather than a dictionary --------- Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>
This commit is contained in:
@@ -173,7 +173,6 @@ public sealed class AirAlarmSystem : EntitySystem
|
||||
subs.Event<AirAlarmUpdateAlarmThresholdMessage>(OnUpdateThreshold);
|
||||
subs.Event<AirAlarmUpdateDeviceDataMessage>(OnUpdateDeviceData);
|
||||
subs.Event<AirAlarmCopyDeviceDataMessage>(OnCopyDeviceData);
|
||||
subs.Event<AirAlarmTabSetMessage>(OnTabChange);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -200,12 +199,6 @@ public sealed class AirAlarmSystem : EntitySystem
|
||||
SyncRegisterAllDevices(uid);
|
||||
}
|
||||
|
||||
private void OnTabChange(EntityUid uid, AirAlarmComponent component, AirAlarmTabSetMessage msg)
|
||||
{
|
||||
component.CurrentTab = msg.Tab;
|
||||
UpdateUI(uid, component);
|
||||
}
|
||||
|
||||
private void OnPowerChanged(EntityUid uid, AirAlarmComponent component, ref PowerChangedEvent args)
|
||||
{
|
||||
if (args.Powered)
|
||||
@@ -598,34 +591,19 @@ public sealed class AirAlarmSystem : EntitySystem
|
||||
|
||||
var pressure = CalculatePressureAverage(alarm);
|
||||
var temperature = CalculateTemperatureAverage(alarm);
|
||||
var dataToSend = new Dictionary<string, IAtmosDeviceData>();
|
||||
var dataToSend = new List<(string, IAtmosDeviceData)>();
|
||||
|
||||
if (alarm.CurrentTab != AirAlarmTab.Settings)
|
||||
foreach (var (addr, data) in alarm.VentData)
|
||||
{
|
||||
switch (alarm.CurrentTab)
|
||||
{
|
||||
case AirAlarmTab.Vent:
|
||||
foreach (var (addr, data) in alarm.VentData)
|
||||
{
|
||||
dataToSend.Add(addr, data);
|
||||
}
|
||||
|
||||
break;
|
||||
case AirAlarmTab.Scrubber:
|
||||
foreach (var (addr, data) in alarm.ScrubberData)
|
||||
{
|
||||
dataToSend.Add(addr, data);
|
||||
}
|
||||
|
||||
break;
|
||||
case AirAlarmTab.Sensors:
|
||||
foreach (var (addr, data) in alarm.SensorData)
|
||||
{
|
||||
dataToSend.Add(addr, data);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
dataToSend.Add((addr, data));
|
||||
}
|
||||
foreach (var (addr, data) in alarm.ScrubberData)
|
||||
{
|
||||
dataToSend.Add((addr, data));
|
||||
}
|
||||
foreach (var (addr, data) in alarm.SensorData)
|
||||
{
|
||||
dataToSend.Add((addr, data));
|
||||
}
|
||||
|
||||
var deviceCount = alarm.KnownDevices.Count;
|
||||
@@ -638,7 +616,7 @@ public sealed class AirAlarmSystem : EntitySystem
|
||||
_ui.SetUiState(
|
||||
uid,
|
||||
SharedAirAlarmInterfaceKey.Key,
|
||||
new AirAlarmUIState(devNet.Address, deviceCount, pressure, temperature, dataToSend, alarm.CurrentMode, alarm.CurrentTab, highestAlarm.Value, alarm.AutoMode));
|
||||
new AirAlarmUIState(devNet.Address, deviceCount, pressure, temperature, dataToSend, alarm.CurrentMode, highestAlarm.Value, alarm.AutoMode));
|
||||
}
|
||||
|
||||
private const float Delay = 8f;
|
||||
|
||||
Reference in New Issue
Block a user