using Content.Shared.Cargo.Prototypes; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Salvage.JobBoard; /// /// Used to view the job board ui /// [RegisterComponent, NetworkedComponent] public sealed partial class SalvageJobBoardConsoleComponent : Component { /// /// A label that this computer can print out. /// [DataField] public EntProtoId LabelEntity = "PaperSalvageJobLabel"; /// /// The sound made when printing occurs /// [DataField] public SoundSpecifier PrintSound = new SoundPathSpecifier("/Audio/Machines/printer.ogg"); /// /// The time at which the console will be able to print a label again. /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] public TimeSpan NextPrintTime = TimeSpan.Zero; /// /// The time between prints. /// [DataField] public TimeSpan PrintDelay = TimeSpan.FromSeconds(5); } [Serializable, NetSerializable] public sealed class SalvageJobBoardConsoleState : BoundUserInterfaceState { public string Title; public float Progression; public List> AvailableJobs; public SalvageJobBoardConsoleState(string title, float progression, List> availableJobs) { Title = title; Progression = progression; AvailableJobs = availableJobs; } } [Serializable, NetSerializable] public sealed class JobBoardPrintLabelMessage : BoundUserInterfaceMessage { public string JobId; public JobBoardPrintLabelMessage(string jobId) { JobId = jobId; } } [Serializable, NetSerializable] public enum SalvageJobBoardUiKey : byte { Key }