using Content.Shared.Atmos; using Content.Shared.Atmos.Piping.Unary.Components; using Content.Shared.Construction.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Atmos.Piping.Unary.Components { [RegisterComponent] public sealed class GasThermoMachineComponent : Component { [DataField("inlet")] public string InletName = "pipe"; [ViewVariables(VVAccess.ReadWrite)] [DataField("enabled")] public bool Enabled = false; /// /// Current maximum temperature, calculated from and the quality of matter /// bins. The heat capacity effectively determines the rate at which the thermo machine can add or remove /// heat from a pipenet. /// [ViewVariables(VVAccess.ReadWrite)] public float HeatCapacity = 10000; /// /// Base heat capacity of the device. Actual heat capacity is calculated by taking this number and doubling /// it for every matter bin quality tier above one. /// [DataField("baseHeatCapacity")] public float BaseHeatCapacity = 5000; [DataField("targetTemperature")] [ViewVariables(VVAccess.ReadWrite)] public float TargetTemperature = Atmospherics.T20C; [DataField("mode")] public ThermoMachineMode Mode = ThermoMachineMode.Freezer; /// /// Current minimum temperature, calculated from and . /// [ViewVariables(VVAccess.ReadWrite)] public float MinTemperature; /// /// Current maximum temperature, calculated from and . /// [ViewVariables(VVAccess.ReadWrite)] public float MaxTemperature; /// /// Minimum temperature the device can reach with a 0 total laser quality. Usually the quality will be at /// least 1. /// [DataField("baseMinTemperature")] [ViewVariables(VVAccess.ReadWrite)] public float BaseMinTemperature = 96.625f; // Selected so that tier-1 parts can reach 73.15k /// /// Maximum temperature the device can reach with a 0 total laser quality. Usually the quality will be at /// least 1. /// [DataField("baseMaxTemperature")] [ViewVariables(VVAccess.ReadWrite)] public float BaseMaxTemperature = Atmospherics.T20C; /// /// Decrease in minimum temperature, per unit machine part quality. /// [DataField("minTemperatureDelta")] [ViewVariables(VVAccess.ReadWrite)] public float MinTemperatureDelta = 23.475f; // selected so that tier-4 parts can reach TCMB /// /// Change in maximum temperature, per unit machine part quality. /// [DataField("maxTemperatureDelta")] [ViewVariables(VVAccess.ReadWrite)] public float MaxTemperatureDelta = 300; /// /// The machine part that affects the heat capacity. /// [DataField("machinePartHeatCapacity", customTypeSerializer: typeof(PrototypeIdSerializer))] public string MachinePartHeatCapacity = "MatterBin"; /// /// The machine part that affects the temperature range. /// [DataField("machinePartTemperature", customTypeSerializer: typeof(PrototypeIdSerializer))] public string MachinePartTemperature = "Capacitor"; } }