using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Forensics.Components; [RegisterComponent, NetworkedComponent] [AutoGenerateComponentState(raiseAfterAutoHandleState: true, fieldDeltas: true), AutoGenerateComponentPause] public sealed partial class ForensicScannerComponent : Component { /// /// A list of fingerprint GUIDs that the forensic scanner found from the on an entity. /// [DataField, AutoNetworkedField] public List Fingerprints = []; /// /// A list of glove fibers that the forensic scanner found from the on an entity. /// [DataField, AutoNetworkedField] public List Fibers = []; /// /// DNA that the forensic scanner found from the on an entity. /// [DataField, AutoNetworkedField] public List DNAs = []; /// /// Residue that the forensic scanner found from the on an entity. /// [DataField, AutoNetworkedField] public List Residues = []; /// /// What is the name of the entity that was scanned last? /// /// /// This will be used for the title of the printout and displayed to players. /// [DataField, AutoNetworkedField] public string LastScannedName = string.Empty; /// /// When will the scanner be ready to print again? /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField, AutoNetworkedField] public TimeSpan PrintReadyAt = TimeSpan.Zero; /// /// The time (in seconds) that it takes to scan an entity. /// [DataField] public float ScanDelay = 3.0f; /// /// How often can the scanner print out reports? /// [DataField] public TimeSpan PrintCooldown = TimeSpan.FromSeconds(5); /// /// The sound that's played when there's a match between a scan and an /// inserted forensic pad. /// [DataField] public SoundSpecifier SoundMatch = new SoundPathSpecifier("/Audio/Machines/Nuke/angry_beep.ogg"); /// /// The sound that's played when there's no match between a scan and an /// inserted forensic pad. /// [DataField] public SoundSpecifier SoundNoMatch = new SoundPathSpecifier("/Audio/Machines/airlock_deny.ogg"); /// /// The sound that's played when the scanner prints off a report. /// [DataField] public SoundSpecifier SoundPrint = new SoundPathSpecifier("/Audio/Machines/short_print_and_rip.ogg"); /// /// What type of paper the device will print. /// [DataField] public EntProtoId PaperPrototypeID = "ForensicReportPaper"; }