2024-08-14 01:21:01 -04:00
using Content.Shared.Destructible.Thresholds ;
using Content.Shared.EntityTable.EntitySelectors ;
namespace Content.Server.StationEvents.Components ;
2023-04-25 20:23:14 -04:00
[RegisterComponent, Access(typeof(BasicStationEventSchedulerSystem))]
2023-08-22 18:14:33 -07:00
public sealed partial class BasicStationEventSchedulerComponent : Component
2023-04-25 20:23:14 -04:00
{
2024-08-14 01:21:01 -04:00
/// <summary>
/// How long the the scheduler waits to begin starting rules.
/// </summary>
[DataField]
public float MinimumTimeUntilFirstEvent = 200 ;
/// <summary>
/// The minimum and maximum time between rule starts in seconds.
/// </summary>
[DataField]
public MinMax MinMaxEventTiming = new ( 3 * 60 , 10 * 60 ) ;
/// <summary>
/// How long until the next check for an event runs, is initially set based on MinimumTimeUntilFirstEvent & MinMaxEventTiming.
/// </summary>
[DataField]
public float TimeUntilNextEvent ;
2023-04-25 20:23:14 -04:00
/// <summary>
2024-08-14 01:21:01 -04:00
/// The gamerules that the scheduler can choose from
2023-04-25 20:23:14 -04:00
/// </summary>
2024-08-14 01:21:01 -04:00
/// Reminder that though we could do all selection via the EntityTableSelector, we also need to consider various <see cref="StationEventComponent"/> restrictions.
/// As such, we want to pass a list of acceptable game rules, which are then parsed for restrictions by the <see cref="EventManagerSystem"/>.
[DataField(required: true)]
public EntityTableSelector ScheduledGameRules = default ! ;
2023-04-25 20:23:14 -04:00
}