From 1b13471f985d39b0a8aab07c90c07ffc2f9bc37b Mon Sep 17 00:00:00 2001 From: Jabak <163307958+Jabaks@users.noreply.github.com> Date: Tue, 30 Jul 2024 02:35:45 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BC=D1=83=D0=B7=D1=8B=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D1=83?= =?UTF-8?q?=D1=8E=20=D0=BE=D1=87=D0=B5=D1=80=D0=B5=D0=B4=D1=8C=20=D0=B2=20?= =?UTF-8?q?=D0=BC=D1=83=D0=B7=D1=8B=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Jukebox/JukeboxBoundUserInterface.cs | 23 +++- .../Audio/Jukebox/JukeboxEntry.xaml | 10 ++ .../Audio/Jukebox/JukeboxEntry.xaml.cs | 127 ++++++++++++++++++ Content.Client/Audio/Jukebox/JukeboxMenu.xaml | 29 ++-- .../Audio/Jukebox/JukeboxMenu.xaml.cs | 109 ++++++++------- Content.Client/Audio/Jukebox/JukeboxSystem.cs | 20 ++- Content.Server/Audio/Jukebox/JukeboxSystem.cs | 121 ++++++++++++++--- .../Audio/Jukebox/JukeboxComponent.cs | 18 +++ .../Locale/en-US/jukebox/jukebox-menu.ftl | 5 + 9 files changed, 379 insertions(+), 83 deletions(-) create mode 100644 Content.Client/Audio/Jukebox/JukeboxEntry.xaml create mode 100644 Content.Client/Audio/Jukebox/JukeboxEntry.xaml.cs 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..1064156fcb --- /dev/null +++ b/Content.Client/Audio/Jukebox/JukeboxEntry.xaml @@ -0,0 +1,10 @@ + +