#nullable enable using Robust.Shared.Prototypes; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.ViewVariables; namespace Content.Shared.Atmos { [Prototype("gas")] public class GasPrototype : IPrototype { [DataField("name")] public string Name { get; } = string.Empty; // TODO: Control gas amount necessary for overlay to appear // TODO: Add interfaces for gas behaviours e.g. breathing, burning [ViewVariables] [DataField("id", required: true)] public string ID { get; } = 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; } = 0.25f; /// /// Visibility for this gas will be max after this value. /// public float GasMolesVisibleMax => GasMolesVisible * 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; } = 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; } = string.Empty; [DataField("color")] public string Color { get; } = string.Empty; } }