using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared.Audio.Jukebox;
[NetworkedComponent, RegisterComponent, AutoGenerateComponentState(true)]
[Access(typeof(SharedJukeboxSystem))]
public sealed partial class JukeboxComponent : Component
{
[DataField, AutoNetworkedField]
public ProtoId<JukeboxPrototype>? SelectedSongId;
public EntityUid? AudioStream;
public Queue<ProtoId<JukeboxPrototype>> SongIdQueue = new();
/// <summary>
/// RSI state for the jukebox being on.
/// </summary>
[DataField]
public string? OnState;
public string? OffState;
/// RSI state for the jukebox track being selected.
public string? SelectState;
[ViewVariables]
public bool Selecting;
public float SelectAccumulator;
}
[RegisterComponent]
public sealed partial class JukeboxMusicComponent : Component;
[Serializable, NetSerializable]
public sealed class JukeboxPlayingMessage : BoundUserInterfaceMessage;
public sealed class JukeboxPauseMessage : BoundUserInterfaceMessage;
public sealed class JukeboxStopMessage : BoundUserInterfaceMessage;
public sealed class JukeboxSelectedMessage(ProtoId<JukeboxPrototype> songId) : BoundUserInterfaceMessage
public ProtoId<JukeboxPrototype> SongId { get; } = songId;
public sealed class JukeboxSetTimeMessage(float songTime) : BoundUserInterfaceMessage
public float SongTime { get; } = songTime;
public sealed class JukeboxAddQueueMessage(ProtoId<JukeboxPrototype> songId) : BoundUserInterfaceMessage
public sealed class JukeboxRemoveQueueMessage(int index) : BoundUserInterfaceMessage
public int Index { get; } = index;
public enum JukeboxVisuals : byte
VisualState
public enum JukeboxVisualState : byte
On,
Off,
Select,
public enum JukeboxVisualLayers : byte
Base