Fixes air sensors not accessing gas mixture on construction + visual fixes (#15224)

This commit is contained in:
Menshin
2023-04-09 04:25:38 +02:00
committed by GitHub
parent 7be21a62ec
commit 409af4f481
2 changed files with 23 additions and 24 deletions

View File

@@ -4,16 +4,12 @@ using Content.Server.Atmos.EntitySystems;
using Content.Server.Atmos.Piping.EntitySystems;
using Content.Server.Atmos.Piping.Components;
using Content.Server.DeviceNetwork;
using Content.Server.DeviceNetwork.Components;
using Content.Server.DeviceNetwork.Systems;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Shared.Atmos;
using Content.Shared.Atmos.Monitor;
using Content.Shared.Tag;
using Robust.Server.GameObjects;
using Robust.Shared.Audio;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
namespace Content.Server.Atmos.Monitor.Systems;
@@ -48,6 +44,18 @@ public sealed class AtmosMonitorSystem : EntitySystem
SubscribeLocalEvent<AtmosMonitorComponent, PowerChangedEvent>(OnPowerChangedEvent);
SubscribeLocalEvent<AtmosMonitorComponent, BeforePacketSentEvent>(BeforePacketRecv);
SubscribeLocalEvent<AtmosMonitorComponent, DeviceNetworkPacketEvent>(OnPacketRecv);
SubscribeLocalEvent<AtmosMonitorComponent, AtmosDeviceDisabledEvent>(OnAtmosDeviceLeaveAtmosphere);
SubscribeLocalEvent<AtmosMonitorComponent, AtmosDeviceEnabledEvent>(OnAtmosDeviceEnterAtmosphere);
}
private void OnAtmosDeviceLeaveAtmosphere(EntityUid uid, AtmosMonitorComponent atmosMonitor, AtmosDeviceDisabledEvent args)
{
atmosMonitor.TileGas = null;
}
private void OnAtmosDeviceEnterAtmosphere(EntityUid uid, AtmosMonitorComponent atmosMonitor, AtmosDeviceEnabledEvent args)
{
atmosMonitor.TileGas = _atmosphereSystem.GetContainingMixture(uid, true);
}
private void OnAtmosMonitorInit(EntityUid uid, AtmosMonitorComponent component, ComponentInit args)
@@ -148,21 +156,11 @@ public sealed class AtmosMonitorSystem : EntitySystem
{
if (!args.Powered)
{
if (atmosDeviceComponent.JoinedGrid != null)
{
_atmosDeviceSystem.LeaveAtmosphere(atmosDeviceComponent);
component.TileGas = null;
}
_atmosDeviceSystem.LeaveAtmosphere(atmosDeviceComponent);
}
else if (args.Powered)
else
{
if (atmosDeviceComponent.JoinedGrid == null)
{
_atmosDeviceSystem.JoinAtmosphere(atmosDeviceComponent);
var air = _atmosphereSystem.GetContainingMixture(uid, true);
component.TileGas = air;
}
_atmosDeviceSystem.JoinAtmosphere(atmosDeviceComponent);
Alert(uid, component.LastAlarmState);
}
}

View File

@@ -62,22 +62,23 @@
- AirSensor
- type: AccessReader
access: [ [ "Atmospherics" ] ]
- type: GenericVisualizer
visuals:
enum.PowerDeviceVisuals.Powered:
sensor:
True: { state: gsensor1 }
False: { state: gsensor0 }
- type: Construction
graph: AirSensor
node: sensor
- type: Appearance
- type: Sprite
netsync: false
drawdepth: FloorObjects
sprite: Structures/Specific/Atmospherics/sensor.rsi
layers:
- state: gsensor1
map: [ "sensor" ]
map: [ "enum.PowerDeviceVisualLayers.Powered" ]
- type: GenericVisualizer
visuals:
enum.PowerDeviceVisuals.Powered:
enum.PowerDeviceVisualLayers.Powered:
True: { state: gsensor1 }
False: { state: gsensor0 }
- type: entity
parent: BaseItem