From 7d6e4a8ad233b99bf4245d729ac8f097f1f1fd2b Mon Sep 17 00:00:00 2001 From: Huo Yaoyuan <huoyaoyuan@hotmail.com> Date: Fri, 28 Oct 2016 19:39:02 +0800 Subject: [PATCH] Make music controller uses WorkingBeatmap. --- osu.Game/Overlays/MusicController.cs | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index e96050957c..6692ace775 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -8,11 +8,13 @@ using OpenTK; using OpenTK.Graphics; using osu.Framework; using osu.Framework.Audio.Track; +using osu.Framework.Configuration; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; using osu.Framework.Graphics.Transformations; +using osu.Game.Beatmaps; using osu.Game.Beatmaps.IO; using osu.Game.Database; using osu.Game.Graphics; @@ -29,9 +31,8 @@ namespace osu.Game.Overlays private OsuGameBase osuGame; private List<BeatmapSetInfo> playList; private BeatmapDatabase database; - private BeatmapSetInfo currentPlay; - - public AudioTrack CurrentTrack { get; set; }//TODO:gets exterally + private Bindable<WorkingBeatmap> beatmapSource; + private AudioTrack CurrentTrack => beatmapSource.Value?.Track; public MusicController(BeatmapDatabase db = null) { @@ -43,9 +44,9 @@ namespace osu.Game.Overlays base.Load(game); osuGame = game as OsuGameBase; + beatmapSource = osuGame.Beatmap; if (database == null) database = osuGame.Beatmaps; playList = database.Query<BeatmapSetInfo>().ToList(); - currentPlay = playList.FirstOrDefault(); Width = 400; Height = 130; @@ -180,10 +181,10 @@ namespace osu.Game.Overlays } }; - if (currentPlay != null) + if (beatmapSource.Value != null) { playButton.Icon = FontAwesome.pause; - play(currentPlay, null); + updateCurrent(beatmapSource, null); } } @@ -213,21 +214,16 @@ namespace osu.Game.Overlays play(currentPlay, true); } - private void play(BeatmapSetInfo beatmap, bool? isNext) + private void updateCurrent(WorkingBeatmap beatmap, bool? isNext) { - BeatmapMetadata metadata = osuGame.Beatmaps.Query<BeatmapMetadata>().Where(x => x.ID == beatmap.BeatmapMetadataID).First(); + BeatmapMetadata metadata = beatmap.Beatmap.Metadata; title.Text = metadata.TitleUnicode ?? metadata.Title; artist.Text = metadata.ArtistUnicode ?? metadata.Artist; Sprite newBackground; - using (ArchiveReader reader = osuGame.Beatmaps.GetReader(currentPlay)) - { - CurrentTrack?.Stop(); - CurrentTrack = new AudioTrackBass(reader.ReadFile(metadata.AudioFile)); - CurrentTrack.Start(); - newBackground = getScaledSprite(TextureLoader.FromStream(reader.ReadFile(metadata.BackgroundFile))); - } + + newBackground = getScaledSprite(TextureLoader.FromStream(beatmap.Reader.ReadFile(metadata.BackgroundFile))); Add(newBackground);