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