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"; }