using Robust.Shared.GameStates; namespace Content.Shared.Power.Generator; /// /// This is used for generators that run off some kind of fuel. /// /// /// /// Generators must be anchored to be able to run. /// /// /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(SharedGeneratorSystem))] public sealed partial class FuelGeneratorComponent : Component { /// /// Is the generator currently running? /// [DataField("on"), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public bool On; /// /// The generator's target power. /// [DataField("targetPower"), ViewVariables(VVAccess.ReadWrite)] public float TargetPower = 15_000.0f; /// /// The maximum target power. /// [DataField("maxTargetPower"), ViewVariables(VVAccess.ReadWrite)] public float MaxTargetPower = 30_000.0f; /// /// The minimum target power. /// /// /// Setting this to any value above 0 means that the generator can't idle without consuming some amount of fuel. /// [DataField("minTargetPower"), ViewVariables(VVAccess.ReadWrite)] public float MinTargetPower = 1_000; /// /// The "optimal" power at which the generator is considered to be at 100% efficiency. /// [DataField("optimalPower"), ViewVariables(VVAccess.ReadWrite)] public float OptimalPower = 15_000.0f; /// /// The rate at which one unit of fuel should be consumed. /// [DataField("optimalBurnRate"), ViewVariables(VVAccess.ReadWrite)] public float OptimalBurnRate = 1 / 60.0f; // Once every 60 seconds. /// /// A constant used to calculate fuel efficiency in relation to target power output and optimal power output /// [DataField("fuelEfficiencyConstant")] public float FuelEfficiencyConstant = 1.3f; }