namespace Content.Server.Power.Generation.Teg; /// /// The centerpiece for the thermo-electric generator (TEG). /// /// [RegisterComponent] [Access(typeof(TegSystem))] public sealed partial class TegGeneratorComponent : Component { /// /// When transferring energy from the hot to cold side, /// determines how much of that energy can be extracted as electricity. /// /// /// A value of 0.9 means that 90% of energy transferred goes to electricity. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("thermalEfficiency")] public float ThermalEfficiency = 0.65f; /// /// Simple factor that scales effective electricity generation. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("powerFactor")] public float PowerFactor = 1; /// /// Amount of energy (Joules) generated by the TEG last atmos tick. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("lastGeneration")] public float LastGeneration; /// /// The current target for TEG power generation. /// Drifts towards actual power draw of the network with . /// [ViewVariables(VVAccess.ReadWrite)] [DataField("rampPosition")] public float RampPosition; /// /// Factor by which TEG power generation scales, both up and down. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("rampFactor")] public float RampFactor = 1.05f; /// /// Minimum position for the ramp. Avoids TEG taking too long to start. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("rampMinimum")] public float RampMinimum = 5000; /// /// Power output value at which the sprite appearance and sound volume should cap out. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("maxVisualPower")] public float MaxVisualPower = 200_000; /// /// Minimum ambient sound volume, when we're producing just barely any power at all. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("volumeMin")] public float VolumeMin = -9; /// /// Maximum ambient sound volume, when we're producing >= power. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("volumeMax")] public float VolumeMax = -4; /// /// Smoothing factor used to smooth out power generation. /// [DataField] public float PowerSmoothingFactor = 0.2f; }