* DNA component * Commit numba 2 * Added DNA into Station Records Computer * commit numba 3 * commit numba 4 * Vomit also contain DNA component now * fixed DNA field not clearing after scanning another item * commit numba 10 Drinking leaves DNA on an object. Breaking glasses, bottles and beakers leave DNA and leave fingerprints/fibers with 40% chance on glass shards. + lotta fixes * 11 * 12 * 14 * Added DNA guide entry * FIX
135 lines
4.2 KiB
C#
135 lines
4.2 KiB
C#
using System.Linq;
|
|
using Content.Shared.StationRecords;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.UserInterface;
|
|
using Robust.Client.UserInterface.Controls;
|
|
using Robust.Client.UserInterface.CustomControls;
|
|
using Robust.Client.UserInterface.XAML;
|
|
|
|
namespace Content.Client.StationRecords;
|
|
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class GeneralStationRecordConsoleWindow : DefaultWindow
|
|
{
|
|
public Action<StationRecordKey?>? OnKeySelected;
|
|
private bool _isPopulating;
|
|
|
|
public GeneralStationRecordConsoleWindow()
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
|
|
RecordListing.OnItemSelected += args =>
|
|
{
|
|
if (_isPopulating || RecordListing[args.ItemIndex].Metadata is not StationRecordKey cast)
|
|
{
|
|
return;
|
|
}
|
|
|
|
OnKeySelected?.Invoke(cast);
|
|
};
|
|
|
|
RecordListing.OnItemDeselected += _ =>
|
|
{
|
|
if (!_isPopulating)
|
|
OnKeySelected?.Invoke(null);
|
|
};
|
|
}
|
|
|
|
public void UpdateState(GeneralStationRecordConsoleState state)
|
|
{
|
|
if (state.RecordListing == null)
|
|
{
|
|
RecordListingStatus.Visible = true;
|
|
RecordListing.Visible = false;
|
|
RecordListingStatus.Text = Loc.GetString("general-station-record-console-empty-state");
|
|
return;
|
|
}
|
|
|
|
RecordListingStatus.Visible = false;
|
|
RecordListing.Visible = true;
|
|
PopulateRecordListing(state.RecordListing!, state.SelectedKey);
|
|
|
|
RecordContainerStatus.Visible = state.Record == null;
|
|
|
|
if (state.Record != null)
|
|
{
|
|
RecordContainerStatus.Visible = state.SelectedKey == null;
|
|
RecordContainerStatus.Text = state.SelectedKey == null
|
|
? Loc.GetString("general-station-record-console-no-record-found")
|
|
: Loc.GetString("general-station-record-console-select-record-info");
|
|
PopulateRecordContainer(state.Record);
|
|
}
|
|
else
|
|
{
|
|
RecordContainer.DisposeAllChildren();
|
|
RecordContainer.RemoveAllChildren();
|
|
}
|
|
}
|
|
|
|
private void PopulateRecordListing(Dictionary<StationRecordKey, string> listing, StationRecordKey? selected)
|
|
{
|
|
RecordListing.Clear();
|
|
RecordListing.ClearSelected();
|
|
|
|
_isPopulating = true;
|
|
foreach (var (key, name) in listing)
|
|
{
|
|
var item = RecordListing.AddItem(name);
|
|
item.Metadata = key;
|
|
|
|
if (selected != null && key.ID == selected.Value.ID)
|
|
{
|
|
item.Selected = true;
|
|
}
|
|
}
|
|
_isPopulating = false;
|
|
|
|
RecordListing.SortItemsByText();
|
|
}
|
|
|
|
private void PopulateRecordContainer(GeneralStationRecord record)
|
|
{
|
|
RecordContainer.DisposeAllChildren();
|
|
RecordContainer.RemoveAllChildren();
|
|
// sure
|
|
var recordControls = new Control[]
|
|
{
|
|
new Label()
|
|
{
|
|
Text = record.Name,
|
|
StyleClasses = { "LabelBig" }
|
|
},
|
|
new Label()
|
|
{
|
|
Text = Loc.GetString("general-station-record-console-record-age", ("age", record.Age.ToString()))
|
|
|
|
},
|
|
new Label()
|
|
{
|
|
Text = Loc.GetString("general-station-record-console-record-title", ("job", Loc.GetString(record.JobTitle)))
|
|
},
|
|
new Label()
|
|
{
|
|
Text = Loc.GetString("general-station-record-console-record-species", ("species", record.Species))
|
|
},
|
|
new Label()
|
|
{
|
|
Text = Loc.GetString("general-station-record-console-record-gender", ("gender", record.Gender.ToString()))
|
|
},
|
|
new Label()
|
|
{
|
|
Text = Loc.GetString("general-station-record-console-record-fingerprint", ("fingerprint", record.Fingerprint ?? Loc.GetString("generic-not-available-shorthand")))
|
|
},
|
|
new Label()
|
|
{
|
|
Text = Loc.GetString("general-station-record-console-record-dna", ("dna", record.DNA ?? Loc.GetString("generic-not-available-shorthand")))
|
|
}
|
|
};
|
|
|
|
foreach (var control in recordControls)
|
|
{
|
|
RecordContainer.AddChild(control);
|
|
}
|
|
}
|
|
}
|