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;
/// <summary>
/// Designates this entity as holding a salvage expedition.
/// </summary>
[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;
/// Countdown audio stream.
[DataField, AutoNetworkedField]
public EntityUid? Stream = null;
/// Sound that plays when the mission end is imminent.
[ViewVariables(VVAccess.ReadWrite), DataField]
public SoundSpecifier Sound = new SoundCollectionSpecifier("ExpeditionEnd")
Params = AudioParams.Default.WithVolume(-5),
};
/// Song selected on MapInit so we can predict the audio countdown properly.
[DataField]
public SoundPathSpecifier SelectedSong;
}