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
}