Air alarm balancing (#11063)

* threshold balancing, restores none mode on atmos alarm

dear lord, panic mode with unbalanced thresholds was a nightmare

* that was 10%, not 1%

* adds widenet mode for scrubbers

* adds the vents to wide filter as well
This commit is contained in:
Flipp Syder
2022-09-05 19:35:36 -07:00
committed by GitHub
parent 57a19a7480
commit 0882d85176
7 changed files with 56 additions and 5 deletions

View File

@@ -56,6 +56,7 @@ public interface IAirAlarmModeUpdate
public sealed class AirAlarmModeFactory
{
private static IAirAlarmMode _filterMode = new AirAlarmFilterMode();
private static IAirAlarmMode _wideFilterMode = new AirAlarmWideFilterMode();
private static IAirAlarmMode _fillMode = new AirAlarmFillMode();
private static IAirAlarmMode _panicMode = new AirAlarmPanicMode();
private static IAirAlarmMode _noneMode = new AirAlarmNoneMode();
@@ -67,6 +68,7 @@ public sealed class AirAlarmModeFactory
return mode switch
{
AirAlarmMode.Filtering => _filterMode,
AirAlarmMode.WideFiltering => _wideFilterMode,
AirAlarmMode.Fill => _fillMode,
AirAlarmMode.Panic => _panicMode,
AirAlarmMode.None => _noneMode,
@@ -133,6 +135,25 @@ public sealed class AirAlarmFilterMode : AirAlarmModeExecutor
}
}
public sealed class AirAlarmWideFilterMode : AirAlarmModeExecutor
{
public override void Execute(EntityUid uid)
{
if (!EntityManager.TryGetComponent(uid, out AirAlarmComponent? alarm))
return;
foreach (var (addr, device) in alarm.VentData)
{
AirAlarmSystem.SetData(uid, addr, GasVentPumpData.FilterModePreset);
}
foreach (var (addr, device) in alarm.ScrubberData)
{
AirAlarmSystem.SetData(uid, addr, GasVentScrubberData.WideFilterModePreset);
}
}
}
public sealed class AirAlarmPanicMode : AirAlarmModeExecutor
{
public override void Execute(EntityUid uid)