using Content.Shared.Eui; using NetSerializer; using Robust.Shared.Serialization; namespace Content.Shared.CrewManifest; /// /// A message to send to the server when requesting a crew manifest. /// CrewManifestSystem will open an EUI that will send the crew manifest /// to the player when it is updated. /// [Serializable, NetSerializable] public sealed class RequestCrewManifestMessage : EntityEventArgs { public NetEntity Id { get; } public RequestCrewManifestMessage(NetEntity id) { Id = id; } } [Serializable, NetSerializable] public sealed class CrewManifestEuiState : EuiStateBase { public string StationName { get; } public CrewManifestEntries? Entries { get; } public CrewManifestEuiState(string stationName, CrewManifestEntries? entries) { StationName = stationName; Entries = entries; } } [Serializable, NetSerializable] public sealed class CrewManifestEntries { /// /// Entries in the crew manifest. Goes by department ID. /// // public Dictionary> Entries = new(); public CrewManifestEntry[] Entries = Array.Empty(); } [Serializable, NetSerializable] public sealed class CrewManifestEntry { public string Name { get; } public string JobTitle { get; } public string JobIcon { get; } public string JobPrototype { get; } public CrewManifestEntry(string name, string jobTitle, string jobIcon, string jobPrototype) { Name = name; JobTitle = jobTitle; JobIcon = jobIcon; JobPrototype = jobPrototype; } } /// /// Tells the server to open a crew manifest UI from /// this entity's point of view. /// [Serializable, NetSerializable] public sealed class CrewManifestOpenUiMessage : BoundUserInterfaceMessage {}