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