using System.Numerics; using Content.Shared.Salvage; using Content.Shared.Salvage.Expeditions; using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; namespace Content.Server.Salvage.Expeditions; /// /// Designates this entity as holding a salvage expedition. /// [RegisterComponent, AutoGenerateComponentPause] public sealed partial class SalvageExpeditionComponent : SharedSalvageExpeditionComponent { public SalvageMissionParams MissionParams = default!; /// /// Where the dungeon is located for initial announcement. /// [DataField("dungeonLocation")] public Vector2 DungeonLocation = Vector2.Zero; /// /// When the expeditions ends. /// [ViewVariables(VVAccess.ReadWrite), DataField("endTime", customTypeSerializer: typeof(TimeOffsetSerializer))] [AutoPausedField] public TimeSpan EndTime; /// /// Station whose mission this is. /// [DataField("station")] public EntityUid Station; [ViewVariables] public bool Completed = false; // Frontier: moved to Client /// /// Countdown audio stream. /// // [DataField, AutoNetworkedField] // public EntityUid? Stream = null; // End Frontier: moved to Client /// /// Sound that plays when the mission end is imminent. /// [ViewVariables(VVAccess.ReadWrite), DataField] public SoundSpecifier Sound = new SoundCollectionSpecifier("ExpeditionEnd") { Params = AudioParams.Default.WithVolume(-5), }; // Frontier: moved to Shared /// /// Song selected on MapInit so we can predict the audio countdown properly. /// // [DataField] // public ResolvedSoundSpecifier SelectedSong; // End Frontier: moved to Shared }