Forensics QOL (Autolabeling of pads and reports) (#9610)

This commit is contained in:
Rane
2022-07-10 20:52:54 -04:00
committed by GitHub
parent f88104ed4f
commit 2225ec2e1a
5 changed files with 22 additions and 9 deletions

View File

@@ -18,6 +18,8 @@ namespace Content.Server.Forensics
[ViewVariables(VVAccess.ReadOnly)]
public List<string> Fibers = new();
public string LastScanned = string.Empty;
/// <summary>
/// The time (in seconds) that it takes to scan an entity.
/// </summary>

View File

@@ -100,6 +100,11 @@ namespace Content.Server.Forensics
if (!EntityManager.TryGetComponent(ev.Pad, out ForensicPadComponent? component))
return;
if (HasComp<FingerprintComponent>(ev.Target))
MetaData(component.Owner).EntityName = Loc.GetString("forensic-pad-fingerprint-name", ("entity", ev.Target));
else
MetaData(component.Owner).EntityName = Loc.GetString("forensic-pad-gloves-name", ("entity", ev.Target));
component.CancelToken = null;
component.Sample = ev.Sample;
component.Used = true;
@@ -124,11 +129,11 @@ namespace Content.Server.Forensics
private sealed class TargetPadSuccessfulEvent : EntityEventArgs
{
public EntityUid User;
public EntityUid? Target;
public EntityUid Target;
public EntityUid Pad;
public string Sample = string.Empty;
public TargetPadSuccessfulEvent(EntityUid user, EntityUid? target, EntityUid pad, string sample)
public TargetPadSuccessfulEvent(EntityUid user, EntityUid target, EntityUid pad, string sample)
{
User = user;
Target = target;

View File

@@ -51,6 +51,7 @@ namespace Content.Server.Forensics
scanner.Fingerprints = forensics.Fingerprints.ToList();
scanner.Fibers = forensics.Fibers.ToList();
scanner.LastScanned = MetaData(ev.Target).EntityName;
OpenUserInterface(ev.User, scanner);
}
@@ -62,7 +63,7 @@ namespace Content.Server.Forensics
component.CancelToken = new CancellationTokenSource();
_doAfterSystem.DoAfter(new DoAfterEventArgs(args.User, component.ScanDelay, component.CancelToken.Token, target: args.Target)
{
BroadcastFinishedEvent = new TargetScanSuccessfulEvent(args.User, args.Target, component.Owner),
BroadcastFinishedEvent = new TargetScanSuccessfulEvent(args.User, (EntityUid) args.Target, component.Owner),
BroadcastCancelledEvent = new ScanCancelledEvent(component.Owner),
BreakOnTargetMove = true,
BreakOnUserMove = true,
@@ -110,7 +111,7 @@ namespace Content.Server.Forensics
var ui = _uiSystem.GetUi(component.Owner, ForensicScannerUiKey.Key);
ui.Open(actor.PlayerSession);
ui.SendMessage(new ForensicScannerUserMessage(component.Fingerprints, component.Fibers));
ui.SendMessage(new ForensicScannerUserMessage(component.Fingerprints, component.Fibers, component.LastScanned));
}
private void OnPrint(EntityUid uid, ForensicScannerComponent component, ForensicScannerPrintMessage args)
@@ -124,7 +125,7 @@ namespace Content.Server.Forensics
if (!TryComp<PaperComponent>(printed, out var paper))
return;
MetaData(printed).EntityName = Loc.GetString("forensic-scanner-report-title");
MetaData(printed).EntityName = Loc.GetString("forensic-scanner-report-title", ("entity", component.LastScanned));
var text = new StringBuilder();
@@ -156,9 +157,9 @@ namespace Content.Server.Forensics
private sealed class TargetScanSuccessfulEvent : EntityEventArgs
{
public EntityUid User;
public EntityUid? Target;
public EntityUid Target;
public EntityUid Scanner;
public TargetScanSuccessfulEvent(EntityUid user, EntityUid? target, EntityUid scanner)
public TargetScanSuccessfulEvent(EntityUid user, EntityUid target, EntityUid scanner)
{
User = user;
Target = target;

View File

@@ -7,11 +7,13 @@ namespace Content.Shared.Forensics
{
public readonly List<string> Fingerprints = new();
public readonly List<string> Fibers = new();
public readonly string LastScanned = string.Empty;
public ForensicScannerUserMessage(List<string> fingerprints, List<string> fibers)
public ForensicScannerUserMessage(List<string> fingerprints, List<string> fibers, string lastScanned)
{
Fingerprints = fingerprints;
Fibers = fibers;
LastScanned = lastScanned;
}
}

View File

@@ -3,7 +3,7 @@ forensic-scanner-interface-fingerprints = Fingerprints
forensic-scanner-interface-fibers = Fibers
forensic-scanner-interface-no-data = No scan data available
forensic-scanner-interface-print = Print
forensic-scanner-report-title = Forensics Report
forensic-scanner-report-title = Forensics Report: {$entity}
forensic-pad-unused = It hasn't been used.
forensic-pad-sample = It has a sample: {$sample}
forensic-pad-gloves = {CAPITALIZE($target)} is wearing gloves.
@@ -13,3 +13,6 @@ forensic-pad-already-used = This pad has already been used.
forensic-scanner-match-fiber = Match in fiber found!
forensic-scanner-match-fingerprint = Match in fingerprint found!
forensic-scanner-match-none = No matches found!
forensic-pad-fingerprint-name = {$entity}'s fingerprints
forensic-pad-gloves-name = fibers from {$entity}