using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
namespace Content.Server.Atmos.Components;
///
/// This is basically a reverse scrubber but using .
///
[RegisterComponent, Access(typeof(AirFilterSystem))]
public sealed partial class AirFilterComponent : Component
{
///
/// Gases that will be filtered out of internal air
///
[DataField(required: true)]
public HashSet Gases = new();
///
/// Gases that will be filtered out of internal air to maintain oxygen ratio.
/// When oxygen is below , these gases will be filtered instead of .
///
[DataField(required: true)]
public HashSet OverflowGases = new();
///
/// Minimum oxygen fraction before it will start removing .
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float TargetOxygen = 0.21f;
///
/// Gas to consider oxygen for and logic.
///
///
/// For slime you might want to change this to be nitrogen, and overflowgases to remove oxygen.
/// However theres still no real danger since standard atmos is mostly nitrogen so nitrogen tends to 100% anyway.
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public Gas Oxygen = Gas.Oxygen;
///
/// Fraction of target volume to transfer every second.
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float TransferRate = 0.1f;
}