using Content.Shared.Atmos; using Content.Shared.Containers.ItemSlots; using Content.Shared.Guidebook; using Robust.Shared.Audio; namespace Content.Server.Atmos.Piping.Unary.Components { [RegisterComponent] public sealed partial class GasCanisterComponent : Component, IGasMixtureHolder { [ViewVariables(VVAccess.ReadWrite)] [DataField("port")] public string PortName { get; set; } = "port"; /// /// Container name for the gas tank holder. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("container")] public string ContainerName { get; set; } = "tank_slot"; [ViewVariables(VVAccess.ReadWrite)] [DataField] public ItemSlot GasTankSlot = new(); [ViewVariables(VVAccess.ReadWrite)] [DataField("gasMixture")] public GasMixture Air { get; set; } = new(); /// /// Last recorded pressure, for appearance-updating purposes. /// public float LastPressure { get; set; } = 0f; /// /// Minimum release pressure possible for the release valve. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("minReleasePressure")] public float MinReleasePressure { get; set; } = Atmospherics.OneAtmosphere / 10; /// /// Maximum release pressure possible for the release valve. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("maxReleasePressure")] public float MaxReleasePressure { get; set; } = Atmospherics.OneAtmosphere * 10; /// /// Valve release pressure. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("releasePressure")] public float ReleasePressure { get; set; } = Atmospherics.OneAtmosphere; /// /// Whether the release valve is open on the canister. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("releaseValve")] public bool ReleaseValve { get; set; } = false; [DataField("accessDeniedSound")] public SoundSpecifier AccessDeniedSound = new SoundPathSpecifier("/Audio/Machines/custom_deny.ogg"); #region GuidebookData [GuidebookData] public float Volume => Air.Volume; #endregion } }