using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos;
using Content.Shared.Disposal.Components;
using Content.Shared.Disposal.Unit;
namespace Content.Server.Disposal.Unit;
///
public sealed partial class DisposalUnitSystem : SharedDisposalUnitSystem
{
[Dependency] private SharedTransformSystem _xform = default!;
[Dependency] private AtmosphereSystem _atmos = default!;
///
protected override void IntakeAir(Entity ent, TransformComponent xform)
{
var air = ent.Comp.Air;
var indices = _xform.GetGridTilePositionOrDefault((ent, xform));
if (_atmos.GetTileMixture(xform.GridUid, xform.MapUid, indices, true) is { Temperature: > 0f } environment)
{
var transferMoles = 0.1f * (0.25f * Atmospherics.OneAtmosphere * 1.01f - air.Pressure) * air.Volume / (environment.Temperature * Atmospherics.R);
ent.Comp.Air = environment.Remove(transferMoles);
}
}
}