Station records (#8720)

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
Flipp Syder
2022-08-08 22:10:01 -07:00
committed by GitHub
parent 75dfbdb57f
commit 3d36a6e1f6
35 changed files with 1888 additions and 9 deletions

View File

@@ -0,0 +1,59 @@
using Robust.Shared.Enums;
using Robust.Shared.Serialization;
namespace Content.Shared.StationRecords;
/// <summary>
/// General station record. Indicates the crewmember's name and job.
/// </summary>
[Serializable, NetSerializable]
public sealed class GeneralStationRecord
{
/// <summary>
/// Name tied to this station record.
/// </summary>
[ViewVariables]
public string Name = string.Empty;
/// <summary>
/// Age of the person that this station record represents.
/// </summary>
[ViewVariables]
public int Age;
/// <summary>
/// Job title tied to this station record.
/// </summary>
[ViewVariables]
public string JobTitle = string.Empty;
/// <summary>
/// Job icon tied to this station record.
/// </summary>
[ViewVariables]
public string JobIcon = string.Empty;
[ViewVariables]
public string JobPrototype = string.Empty;
/// <summary>
/// Species tied to this station record.
/// </summary>
[ViewVariables]
public string Species = string.Empty;
/// <summary>
/// Gender identity tied to this station record.
/// </summary>
/// <remarks>Sex should be placed in a medical record, not a general record.</remarks>
[ViewVariables]
public Gender Gender = Gender.Neuter;
/// <summary>
/// The priority to display this record at.
/// This is taken from the 'weight' of a job prototype,
/// usually.
/// </summary>
[ViewVariables]
public int DisplayPriority;
}

View File

@@ -0,0 +1,54 @@
using Robust.Shared.Serialization;
namespace Content.Shared.StationRecords;
[Serializable, NetSerializable]
public enum GeneralStationRecordConsoleKey : byte
{
Key
}
/// <summary>
/// General station records console state. There are a few states:
/// - SelectedKey null, Record null, RecordListing null
/// - The station record database could not be accessed.
/// - SelectedKey null, Record null, RecordListing non-null
/// - Records are populated in the database, or at least the station has
/// the correct component.
/// - SelectedKey non-null, Record null, RecordListing non-null
/// - The selected key does not have a record tied to it.
/// - SelectedKey non-null, Record non-null, RecordListing non-null
/// - The selected key has a record tied to it, and the record has been sent.
///
/// Other states are erroneous.
/// </summary>
[Serializable, NetSerializable]
public sealed class GeneralStationRecordConsoleState : BoundUserInterfaceState
{
/// <summary>
/// Current selected key.
/// </summary>
public StationRecordKey? SelectedKey { get; }
public GeneralStationRecord? Record { get; }
public Dictionary<StationRecordKey, string>? RecordListing { get; }
public GeneralStationRecordConsoleState(StationRecordKey? key, GeneralStationRecord? record, Dictionary<StationRecordKey, string>? recordListing)
{
SelectedKey = key;
Record = record;
RecordListing = recordListing;
}
public bool IsEmpty() => SelectedKey == null && Record == null && RecordListing == null;
}
[Serializable, NetSerializable]
public sealed class SelectGeneralStationRecord : BoundUserInterfaceMessage
{
public StationRecordKey? SelectedKey { get; }
public SelectGeneralStationRecord(StationRecordKey? selectedKey)
{
SelectedKey = selectedKey;
}
}

View File

@@ -0,0 +1,21 @@
using Robust.Shared.Serialization;
namespace Content.Shared.StationRecords;
// Station record keys. These should be stored somewhere,
// preferably within an ID card.
[Serializable, NetSerializable]
public readonly struct StationRecordKey
{
[ViewVariables]
public uint ID { get; }
[ViewVariables]
public EntityUid OriginStation { get; }
public StationRecordKey(uint id, EntityUid originStation)
{
ID = id;
OriginStation = originStation;
}
}