Air alarm patches (#11004)

This commit is contained in:
Flipp Syder
2022-09-04 02:04:15 -07:00
committed by GitHub
parent ff61bc12a4
commit d447b0f80e
7 changed files with 31 additions and 18 deletions

View File

@@ -31,7 +31,7 @@ public sealed class AtmosAlarmableComponent : Component
[ViewVariables]
public readonly Dictionary<string, AtmosAlarmType> NetworkAlarmStates = new();
[ViewVariables] public AtmosAlarmType LastAlarmState = AtmosAlarmType.Normal;
[ViewVariables] public AtmosAlarmType LastAlarmState = AtmosAlarmType.Invalid;
[ViewVariables] public bool IgnoreAlarms { get; set; } = false;

View File

@@ -178,19 +178,17 @@ public sealed class AirAlarmSystem : EntitySystem
private void OnPowerChanged(EntityUid uid, AirAlarmComponent component, PowerChangedEvent args)
{
if (!args.Powered)
if (args.Powered)
{
ForceCloseAllInterfaces(uid);
component.CurrentModeUpdater = null;
component.KnownDevices.Clear();
component.ScrubberData.Clear();
component.SensorData.Clear();
component.VentData.Clear();
}
else
{
SyncAllDevices(uid);
return;
}
ForceCloseAllInterfaces(uid);
component.CurrentModeUpdater = null;
component.KnownDevices.Clear();
component.ScrubberData.Clear();
component.SensorData.Clear();
component.VentData.Clear();
}
private void OnClose(EntityUid uid, AirAlarmComponent component, BoundUIClosedEvent args)

View File

@@ -18,6 +18,7 @@ public sealed class AtmosAlarmableSystem : EntitySystem
[Dependency] private readonly AppearanceSystem _appearance = default!;
[Dependency] private readonly AudioSystem _audioSystem = default!;
[Dependency] private readonly DeviceNetworkSystem _deviceNet = default!;
[Dependency] private readonly AtmosDeviceNetworkSystem _atmosDevNetSystem = default!;
/// <summary>
/// An alarm. Has three valid states: Normal, Warning, Danger.
@@ -41,12 +42,12 @@ public sealed class AtmosAlarmableSystem : EntitySystem
public override void Initialize()
{
SubscribeLocalEvent<AtmosAlarmableComponent, ComponentInit>(OnInit);
SubscribeLocalEvent<AtmosAlarmableComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<AtmosAlarmableComponent, DeviceNetworkPacketEvent>(OnPacketRecv);
SubscribeLocalEvent<AtmosAlarmableComponent, PowerChangedEvent>(OnPowerChange);
}
private void OnInit(EntityUid uid, AtmosAlarmableComponent component, ComponentInit args)
private void OnMapInit(EntityUid uid, AtmosAlarmableComponent component, MapInitEvent args)
{
TryUpdateAlert(
uid,
@@ -63,6 +64,10 @@ public sealed class AtmosAlarmableSystem : EntitySystem
}
else
{
// sussy
_atmosDevNetSystem.Register(uid, null);
_atmosDevNetSystem.Sync(uid, null);
TryUpdateAlert(
uid,
TryGetHighestAlert(uid, out var alarm) ? alarm.Value : AtmosAlarmType.Normal,

View File

@@ -258,6 +258,11 @@ namespace Content.Server.DeviceNetwork.Systems
private void SendToConnections(ReadOnlySpan<DeviceNetworkComponent> connections, DeviceNetworkPacketEvent packet)
{
if (Deleted(packet.Sender))
{
return;
}
var xform = Transform(packet.Sender);
BeforePacketSentEvent beforeEv = new(packet.Sender, xform, _transformSystem.GetWorldPosition(xform));

View File

@@ -5,8 +5,9 @@ namespace Content.Shared.Atmos.Monitor;
[Serializable, NetSerializable]
public enum AtmosAlarmType : sbyte
{
Normal = 0,
Warning = 1,
Danger = 2, // 1 << 1 is the exact same thing and we're not really doing **bitmasking** are we?
Emagged = 3,
Invalid = 0,
Normal = 1,
Warning = 2,
Danger = 3,
Emagged = 4,
}

View File

@@ -81,6 +81,8 @@
- type: Construction
graph: AirAlarm
node: assembly
- type: Transform
anchored: true
placement:
mode: SnapgridCenter
snap:

View File

@@ -91,6 +91,8 @@
- type: Construction
graph: FireAlarm
node: assembly
- type: Transform
anchored: true
placement:
mode: SnapgridCenter
snap: