using Content.Shared.Chemistry.Reagent; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Atmos.Prototypes { [Prototype] public sealed partial class GasPrototype : IPrototype { [DataField("name")] public string Name { get; set; } = ""; // TODO: Control gas amount necessary for overlay to appear // TODO: Add interfaces for gas behaviours e.g. breathing, burning [ViewVariables] [IdDataField] public string ID { get; private set; } = default!; /// /// Specific heat for gas. /// [DataField("specificHeat")] public float SpecificHeat { get; private set; } /// /// Heat capacity ratio for gas /// [DataField("heatCapacityRatio")] public float HeatCapacityRatio { get; private set; } = 1.4f; /// /// Molar mass of gas /// [DataField("molarMass")] public float MolarMass { get; set; } = 1f; /// /// Minimum amount of moles for this gas to be visible. /// [DataField("gasMolesVisible")] public float GasMolesVisible { get; private set; } = 0.25f; /// /// Visibility for this gas will be max after this value. /// public float GasMolesVisibleMax => GasMolesVisible * GasVisibilityFactor; [DataField("gasVisbilityFactor")] public float GasVisibilityFactor = Atmospherics.FactorGasVisibleMax; /// /// If this reagent is in gas form, this is the path to the overlay that will be used to make the gas visible. /// [DataField("gasOverlayTexture")] public string GasOverlayTexture { get; private set; } = string.Empty; /// /// If this reagent is in gas form, this will be the path to the RSI sprite that will be used to make the gas visible. /// [DataField("gasOverlayState")] public string GasOverlayState { get; set; } = string.Empty; /// /// State for the gas RSI overlay. /// [DataField("gasOverlaySprite")] public string GasOverlaySprite { get; set; } = string.Empty; /// /// Path to the tile overlay used when this gas appears visible. /// [DataField("overlayPath")] public string OverlayPath { get; private set; } = string.Empty; /// /// The reagent that this gas will turn into when inhaled. /// [DataField("reagent", customTypeSerializer:typeof(PrototypeIdSerializer))] public string? Reagent { get; private set; } = default!; [DataField("color")] public string Color { get; private set; } = string.Empty; [DataField("pricePerMole")] public float PricePerMole { get; set; } = 0; } }