Skip to content

Commit

Permalink
add atmos stuff for mapping vox boxes (#1668)
Browse files Browse the repository at this point in the history
* add 101kpa nitrogen fixgridatmos marker

* make a lot of things datafields so they save and can be set in yml

* add vox box scrubber/filter/sensor/alarm

* move some stuff to deltav folder, add deltav comments to the fixgridatmos mixture

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
  • Loading branch information
deltanedas authored Aug 22, 2024
1 parent eea69d0 commit 6dc5ff7
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ private void FixGridAtmosCommand(IConsoleShell shell, string argstr, string[] ar
return;
}

var mixtures = new GasMixture[7];
var mixtures = new GasMixture[8]; // DeltaV - vox mixture
for (var i = 0; i < mixtures.Length; i++)
mixtures[i] = new GasMixture(Atmospherics.CellVolume) { Temperature = Atmospherics.T20C };

Expand Down Expand Up @@ -65,6 +65,9 @@ private void FixGridAtmosCommand(IConsoleShell shell, string argstr, string[] ar
mixtures[6].AdjustMoles(Gas.Nitrogen, Atmospherics.NitrogenMolesStandard);
mixtures[6].Temperature = 235f; // Little colder than an actual freezer but gives a grace period to get e.g. themomachines set up, should keep warm for a few door openings

// 7: DeltaV Nitrogen (101kpa)
mixtures[7].AdjustMoles(Gas.Nitrogen, Atmospherics.NitrogenMolesStandard + Atmospherics.OxygenMolesStandard); // DeltaV

foreach (var arg in args)
{
if (!NetEntity.TryParse(arg, out var netEntity) || !TryGetEntity(netEntity, out var euid))
Expand Down
4 changes: 2 additions & 2 deletions Content.Server/Atmos/Monitor/Components/AirAlarmComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ namespace Content.Server.Atmos.Monitor.Components;
[RegisterComponent]
public sealed partial class AirAlarmComponent : Component
{
[ViewVariables] public AirAlarmMode CurrentMode { get; set; } = AirAlarmMode.Filtering;
[ViewVariables] public bool AutoMode { get; set; } = true;
[DataField] public AirAlarmMode CurrentMode { get; set; } = AirAlarmMode.Filtering;
[DataField] public bool AutoMode { get; set; } = true;

// Remember to null this afterwards.
[ViewVariables] public IAirAlarmModeUpdate? CurrentModeUpdater { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,25 @@ namespace Content.Server.Atmos.Piping.Trinary.Components
[RegisterComponent]
public sealed partial class GasFilterComponent : Component
{
[ViewVariables(VVAccess.ReadWrite)]
[DataField("enabled")]
public bool Enabled { get; set; } = true;
[DataField]
public bool Enabled = true;

[ViewVariables(VVAccess.ReadWrite)]
[DataField("inlet")]
public string InletName { get; set; } = "inlet";
public string InletName = "inlet";

[ViewVariables(VVAccess.ReadWrite)]
[DataField("filter")]
public string FilterName { get; set; } = "filter";
public string FilterName = "filter";

[ViewVariables(VVAccess.ReadWrite)]
[DataField("outlet")]
public string OutletName { get; set; } = "outlet";
public string OutletName = "outlet";

[ViewVariables(VVAccess.ReadWrite)]
[DataField]
public float TransferRate = Atmospherics.MaxTransferRate;

[DataField("transferRate")]
public float TransferRate { get; set; } = Atmospherics.MaxTransferRate;
[DataField]
public float MaxTransferRate = Atmospherics.MaxTransferRate;

[DataField("maxTransferRate")]
public float MaxTransferRate { get; set; } = Atmospherics.MaxTransferRate;

[ViewVariables(VVAccess.ReadWrite)]
public Gas? FilteredGas { get; set; }
[DataField]
public Gas? FilteredGas;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,25 @@ namespace Content.Server.Atmos.Piping.Unary.Components
[Access(typeof(GasVentScrubberSystem))]
public sealed partial class GasVentScrubberComponent : Component
{
[ViewVariables(VVAccess.ReadWrite)]
[DataField]
public bool Enabled { get; set; } = false;

[ViewVariables]
[DataField]
public bool IsDirty { get; set; } = false;

[ViewVariables(VVAccess.ReadWrite)]
[DataField("outlet")]
public string OutletName { get; set; } = "pipe";

[ViewVariables]
public readonly HashSet<Gas> FilterGases = new(GasVentScrubberData.DefaultFilterGases);
[DataField]
public HashSet<Gas> FilterGases = new(GasVentScrubberData.DefaultFilterGases);

[ViewVariables(VVAccess.ReadWrite)]
[DataField]
public ScrubberPumpDirection PumpDirection { get; set; } = ScrubberPumpDirection.Scrubbing;

/// <summary>
/// Target volume to transfer. If <see cref="WideNet"/> is enabled, actual transfer rate will be much higher.
/// </summary>
[ViewVariables(VVAccess.ReadWrite)]
[DataField]
public float TransferRate
{
get => _transferRate;
Expand All @@ -37,18 +36,17 @@ public float TransferRate

private float _transferRate = Atmospherics.MaxTransferRate;

[ViewVariables(VVAccess.ReadWrite)]
[DataField("maxTransferRate")]
[DataField]
public float MaxTransferRate = Atmospherics.MaxTransferRate;

/// <summary>
/// As pressure difference approaches this number, the effective volume rate may be smaller than <see
/// cref="TransferRate"/>
/// </summary>
[DataField("maxPressure")]
[DataField]
public float MaxPressure = Atmospherics.MaxOutputPressure;

[ViewVariables(VVAccess.ReadWrite)]
[DataField]
public bool WideNet { get; set; } = false;

public GasVentScrubberData ToAirAlarmData()
Expand Down
14 changes: 14 additions & 0 deletions Resources/Prototypes/Atmospherics/thresholds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,17 @@
id: danger # just any gas you don't want at all
upperBound: !type:AlarmThresholdSetting
threshold: 0.0001

- type: alarmThreshold
id: voxOxygen
upperBound: !type:AlarmThresholdSetting
threshold: 0.02 # 2%
upperWarnAround: !type:AlarmThresholdSetting
threshold: 0.5 # 1%

- type: alarmThreshold
id: voxNitrogen
lowerBound: !type:AlarmThresholdSetting
threshold: 0.8 # danger below 80% nitrogen
lowerWarnAround: !type:AlarmThresholdSetting
threshold: 1.125 # warning below 90%
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
- type: entity
parent: AtmosFixNitrogenMarker
id: AtmosFixVoxMarker
suffix: Vox Atmosphere
description: "Nitrogen @ 101 kpa, T20C"
components:
- type: AtmosFixMarker
mode: 7
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
- type: entity
abstract: true
parent: AirSensorBase
id: AirSensorVoxBase
suffix: Vox Atmosphere
components:
- type: AtmosMonitor
gasThresholdPrototypes:
Oxygen: voxOxygen
Nitrogen: voxNitrogen
CarbonDioxide: stationCO2
Plasma: stationPlasma
Tritium: stationTritium
WaterVapor: stationWaterVapor
Ammonia: stationAmmonia
NitrousOxide: stationNO
Frezon: danger

- type: entity
parent: [AirSensorVoxBase, AirSensor]
id: AirSensorVox

- type: entity
parent: [AirSensorVoxBase, GasVentPump]
id: GasVentPumpVox

- type: entity
parent: [AirSensorVoxBase, GasVentScrubber]
id: GasVentScrubberVox
components:
- type: GasVentScrubber
wideNet: true # Air alarm with auto mode overrides filters with hardcoded defaults so default to widenet
filterGases:
- Oxygen # filter out oxygen as well as regular harmful gases
- CarbonDioxide
- Plasma
- Tritium
- WaterVapor
- Ammonia
- NitrousOxide
- Frezon

# use this to prevent overriding filters with hardcoded defaults
- type: entity
parent: AirAlarm
id: AirAlarmVox
suffix: Vox Atmosphere, auto mode disabled
components:
- type: AirAlarm
autoMode: false

0 comments on commit 6dc5ff7

Please sign in to comment.