using Content.Server._DV.Station.Systems;
using Content.Shared.Access;
using Content.Shared.Roles;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
namespace Content.Server._DV.Station.Components;
public enum AutomaticSpareIdState
{
RoundStart,
Alerted,
AwaitingUnlock,
Unlocked,
CaptainPresent,
}
[RegisterComponent, Access(typeof(AutomaticSpareIdSystem)), AutoGenerateComponentPause]
public sealed partial class AutomaticSpareIdComponent : Component
{
///
/// The current state of the automatic spare ID system
///
[DataField]
public AutomaticSpareIdState State = AutomaticSpareIdState.RoundStart;
///
/// Timeout before an action is taken if the state doesn't change
///
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField]
public TimeSpan? Timeout;
///
/// The job considered as Captain for the automatic spare ID system
///
[DataField]
public ProtoId CaptainJob = "Captain";
///
/// The access that the spare ID safe will be extended to have if it is automatically unlocked
///
[DataField]
public ProtoId GrantAccessTo = "Command";
///
/// Message for when a Captain joins after the system has alerted about their absence
///
[DataField]
public LocId CaptainPresentAfterAlertsMessage = "captain-arrived-revoke-aco-announcement";
///
/// Message for when the system alerts but isn't going to automatically unlock
///
[DataField]
public LocId AlertedMessage = "no-captain-request-aco-vote-announcement";
///
/// Message for when the system alerts and will automatically unlock
///
[DataField]
public LocId AwaitingUnlockMessage = "no-captain-request-aco-vote-with-aa-announcement";
///
/// Message for when the system alerts automatically unlock
///
[DataField]
public LocId UnlockedMessage = "no-captain-aa-unlocked-announcement";
}