using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.PowerCell; /// /// Indicates that the entity's ActivatableUI requires power or else it closes. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause] public sealed partial class PowerCellDrawComponent : Component { #region Prediction /// /// Whether there is any charge available to draw. /// [ViewVariables(VVAccess.ReadWrite), DataField("canDraw"), AutoNetworkedField] public bool CanDraw; /// /// Whether there is sufficient charge to use. /// [ViewVariables(VVAccess.ReadWrite), DataField("canUse"), AutoNetworkedField] public bool CanUse; #endregion /// /// Is this power cell currently drawing power every tick. /// [ViewVariables(VVAccess.ReadWrite), DataField("enabled")] public bool Drawing; /// /// How much the entity draws while the UI is open. /// Set to 0 if you just wish to check for power upon opening the UI. /// [ViewVariables(VVAccess.ReadWrite), DataField("drawRate")] public float DrawRate = 1f; /// /// How much power is used whenever the entity is "used". /// This is used to ensure the UI won't open again without a minimum use power. /// [ViewVariables(VVAccess.ReadWrite), DataField("useRate")] public float UseRate; /// /// When the next automatic power draw will occur /// [DataField("nextUpdate", customTypeSerializer: typeof(TimeOffsetSerializer))] [AutoPausedField] public TimeSpan NextUpdateTime; }