using Content.Shared.Shuttles.Systems; using Content.Shared.Tag; using Content.Shared.Timing; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Shuttles.Components; /// /// Added to a component when it is queued or is travelling via FTL. /// [RegisterComponent] public sealed partial class FTLComponent : Component { [ViewVariables] public FTLState State = FTLState.Available; [ViewVariables(VVAccess.ReadWrite)] public StartEndTime StateTime; [ViewVariables(VVAccess.ReadWrite)] public float StartupTime = 0f; [ViewVariables(VVAccess.ReadWrite)] public float TravelTime = 0f; /// /// Coordinates to arrive it: May be relative to another grid (for docking) or map coordinates. /// [ViewVariables(VVAccess.ReadWrite), DataField] public EntityCoordinates TargetCoordinates; [DataField] public Angle TargetAngle; /// /// If we're docking after FTL what is the prioritised dock tag (if applicable). /// [ViewVariables(VVAccess.ReadWrite), DataField] public ProtoId? PriorityTag; [ViewVariables(VVAccess.ReadWrite), DataField("soundTravel")] public SoundSpecifier? TravelSound = new SoundPathSpecifier("/Audio/Effects/Shuttle/hyperspace_progress.ogg") { Params = AudioParams.Default.WithVolume(-3f).WithLoop(true) }; [DataField] public EntityUid? TravelStream; }