using Robust.Shared.GameStates; namespace Content.Shared.Timing; /// /// Timer that creates a cooldown each time an object is activated/used /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] public sealed partial class UseDelayComponent : Component { [AutoNetworkedField] public TimeSpan LastUseTime; [AutoNetworkedField] public TimeSpan? DelayEndTime; [DataField, AutoNetworkedField] [ViewVariables(VVAccess.ReadWrite)] public TimeSpan Delay = TimeSpan.FromSeconds(1); /// /// Stores remaining delay pausing (and eventually, serialization). /// [DataField] public TimeSpan? RemainingDelay; public bool ActiveDelay => DelayEndTime != null; }