diff --git a/Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs b/Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs index 072730d65d..f33d765c74 100644 --- a/Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs +++ b/Content.Client/Audio/Jukebox/JukeboxBoundUserInterface.cs @@ -47,6 +47,16 @@ public sealed class JukeboxBoundUserInterface : BoundUserInterface _menu.OnSongSelected += SelectSong; + _menu.OnSongQueueAdd += songId => + { + SendMessage(new JukeboxAddQueueMessage(songId)); + }; + + _menu.OnQueueRemove += index => + { + SendMessage(new JukeboxRemoveQueueMessage(index)); + }; + _menu.SetTime += SetTime; PopulateMusic(); Reload(); @@ -65,17 +75,24 @@ public sealed class JukeboxBoundUserInterface : BoundUserInterface if (_protoManager.TryIndex(jukebox.SelectedSongId, out var songProto)) { var length = EntMan.System().GetAudioLength(songProto.Path.Path.ToString()); - _menu.SetSelectedSong(songProto.Name, (float) length.TotalSeconds); + _menu.SetSelectedSong(songProto.ID, (float) length.TotalSeconds); } else { - _menu.SetSelectedSong(string.Empty, 0f); + _menu.SetSelectedSong(null, 0f); } + + _menu.PopulateQueue(jukebox.SongIdQueue); + _menu.SetIsPlaying(EntMan.System().IsPlaying(jukebox.AudioStream)); } public void PopulateMusic() { - _menu?.Populate(_protoManager.EnumeratePrototypes()); + if (_menu == null || !EntMan.TryGetComponent(Owner, out JukeboxComponent? jukebox)) + return; + + _menu.Populate(_protoManager.EnumeratePrototypes()); + _menu.PopulateQueue(jukebox.SongIdQueue); } public void SelectSong(ProtoId songid) diff --git a/Content.Client/Audio/Jukebox/JukeboxEntry.xaml b/Content.Client/Audio/Jukebox/JukeboxEntry.xaml new file mode 100644 index 0000000000..143fc44d20 --- /dev/null +++ b/Content.Client/Audio/Jukebox/JukeboxEntry.xaml @@ -0,0 +1,9 @@ + +