using Content.Server._DV.Station.Systems;
using Content.Shared.Tag;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
using Robust.Shared.Utility;
namespace Content.Server._DV.Station.Components;
[RegisterComponent, AutoGenerateComponentPause, Access(typeof(StationExfiltrationSystem))]
public sealed partial class StationExfiltrationComponent : Component
{
///
/// Time at which the shuttle will dock to the station
///
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer))]
[AutoPausedField]
public TimeSpan? ArrivalTime;
///
/// Time at which the shuttle will announce that it's leaving the station
///
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer))]
[AutoPausedField]
public TimeSpan? ImpendingDepartureAnnouncementTime;
///
/// Time at which the shuttle leave the station
///
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer))]
[AutoPausedField]
public TimeSpan? DepartureTime;
///
/// How long it takes for the shuttle to arrive at the station
///
[DataField]
public TimeSpan TravelTime = TimeSpan.FromMinutes(3);
///
/// How long before leaving to warn
///
[DataField]
public TimeSpan DepartureWarningTime = TimeSpan.FromSeconds(10);
///
/// How long to wait at the station before leaving
///
[DataField]
public TimeSpan LeaveTime = TimeSpan.FromMinutes(3);
///
/// The dock tag the shuttle will prefer to dock to
///
[DataField]
public ProtoId DockTo = "DockArrivals";
///
/// The map to spawn for the shuttle
///
[DataField]
public ResPath ShuttlePath = new("/Maps/_DV/Shuttles/exfiltration.yml");
///
/// The spawned shuttle
///
[DataField]
public EntityUid? SpawnedShuttle;
///
/// Sender for exfiltration announcements
///
[DataField]
public LocId Sender = "exfiltration-shuttle-sender";
///
/// The announcement for when an exfiltration shuttle is called
///
[DataField]
public LocId CalledAnnouncement = "exfiltration-shuttle-called";
///
/// The announcement for when an exfiltration shuttle is recalled
///
[DataField]
public LocId RecalledAnnouncement = "exfiltration-shuttle-recalled";
///
/// The announcement for when the exfiltration shuttle docks in the vicinity of the station
///
[DataField]
public LocId DockedNearbyStationAnnouncement = "exfiltration-shuttle-docked-nearby-station";
///
/// The announcement for when the exfiltration shuttle docks at a station port
///
[DataField]
public LocId DockedAtStationAnnouncement = "exfiltration-shuttle-docked-at-station";
///
/// The announcement for when the exfiltration shuttle is about to leave
///
[DataField]
public LocId AboutToLeaveAnnouncement = "exfiltration-shuttle-about-to-leave";
///
/// The announcement for when the exfiltration shuttle leaves
///
[DataField]
public LocId LeftAnnouncement = "exfiltration-shuttle-left";
///
/// The announcement for when the exfiltration cannot be called due to technical issues
///
[DataField]
public LocId FailedAnnouncement = "exfiltration-shuttle-failed";
}