using Content.Shared.Whitelist;
using Robust.Shared.Audio;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared._White.VoiceRecorder;
///
/// This is used for...
///
[RegisterComponent]
public sealed partial class VoiceRecorderComponent : Component
{
[ViewVariables(VVAccess.ReadWrite)]
[DataField("enabled")]
public bool Enabled { get; set; } = true;
[DataField("blacklist")]
public EntityWhitelist Blacklist { get; private set; } = new();
[ViewVariables(VVAccess.ReadWrite)]
[DataField("range")]
public int Range { get; private set; } = 10;
[DataField("listening")]
public bool Listening { get; set; } = false;
///
/// The sound that's played when the scanner prints off a report.
///
[DataField("soundPrint")]
public SoundSpecifier SoundPrint = new SoundPathSpecifier("/Audio/Machines/short_print_and_rip.ogg");
[DataField("soundEndOfRecording")]
public SoundSpecifier SoundEndOfRecording = new SoundPathSpecifier("/Audio/Machines/id_insert.ogg");
[DataField("soundStartOfRecording")]
public SoundSpecifier SoundStartOfRecording = new SoundPathSpecifier("/Audio/Weapons/Guns/MagIn/pistol_magin.ogg");
///
/// What the machine will print
///
[DataField("machineOutput", customTypeSerializer: typeof(PrototypeIdSerializer))]
public string MachineOutput = "PaperOffice";
[DataField("recordings")]
public List Recordings = new();
[ViewVariables(VVAccess.ReadWrite)]
[DataField("maximumEntries")]
public int MaximumEntries = 100;
[ViewVariables(VVAccess.ReadWrite)]
[DataField("customTitle")]
public string CustomTitle = "";
///
/// When will the recorder be ready to print again?
///
[ViewVariables(VVAccess.ReadOnly)]
public TimeSpan PrintReadyAt = TimeSpan.Zero;
///
/// How often can the recorder print out reports?
///
[DataField("printCooldown")]
public TimeSpan PrintCooldown = TimeSpan.FromSeconds(5);
}