From 094a0f9639e2e9ed36426770248b53269f6ddcfc Mon Sep 17 00:00:00 2001 From: ColdVolcano Date: Sun, 23 Apr 2017 00:36:23 -0500 Subject: [PATCH] Move MenuMusic logic to MainMenu --- osu.Game/Screens/Menu/Intro.cs | 23 ------------------- osu.Game/Screens/Menu/MainMenu.cs | 37 ++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 24 deletions(-) diff --git a/osu.Game/Screens/Menu/Intro.cs b/osu.Game/Screens/Menu/Intro.cs index 60493ff356..a899e483b4 100644 --- a/osu.Game/Screens/Menu/Intro.cs +++ b/osu.Game/Screens/Menu/Intro.cs @@ -74,17 +74,6 @@ namespace osu.Game.Screens.Menu { menuVoice = config.GetBindable(OsuConfig.MenuVoice); menuMusic = config.GetBindable(OsuConfig.MenuMusic); - if (!menuMusic) - { - trackManager = game.Audio.Track; - choosableBeatmapsetAmmout = beatmaps.Query().Count(); - if (choosableBeatmapsetAmmout > 0) - { - beatmap = beatmaps.GetWithChildren(RNG.Next(1, choosableBeatmapsetAmmout)).Beatmaps[0]; - song = beatmaps.GetWorkingBeatmap(beatmap); - Beatmap = song; - } - } bgm = audio.Track.Get(@"circles"); bgm.Looping = true; @@ -105,23 +94,11 @@ namespace osu.Game.Screens.Menu { if(menuMusic) bgm.Start(); - else if (song != null) - { - Task.Run(() => - { - trackManager.SetExclusive(song.Track); - song.Track.Seek(beatmap.Metadata.PreviewTime); - if (beatmap.Metadata.PreviewTime == -1) - song.Track.Seek(song.Track.Length * .4f); - }); - } LoadComponentAsync(mainMenu = new MainMenu()); Scheduler.AddDelayed(delegate { - if (!menuMusic && song != null) - Task.Run(() => song.Track.Start()); DidLoadMenu = true; Push(mainMenu); }, 2300); diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index 59528dad91..59ba52dc58 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -2,8 +2,14 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Framework.Allocation; +using osu.Framework.Audio.Track; +using osu.Framework.Configuration; using osu.Framework.Graphics; +using osu.Framework.MathUtils; using osu.Framework.Screens; +using osu.Game.Beatmaps; +using osu.Game.Configuration; +using osu.Game.Database; using osu.Game.Graphics.Containers; using osu.Game.Screens.Backgrounds; using osu.Game.Screens.Charts; @@ -15,6 +21,7 @@ using osu.Game.Screens.Select; using osu.Game.Screens.Tournament; using osu.Framework.Input; using OpenTK.Input; +using System.Threading.Tasks; namespace osu.Game.Screens.Menu { @@ -54,11 +61,30 @@ namespace osu.Game.Screens.Menu }; } + private Bindable menuMusic; + private TrackManager trackManager; + private BeatmapInfo beatmap; + private WorkingBeatmap song; + private int choosableBeatmapsetAmmout; + [BackgroundDependencyLoader] - private void load(OsuGame game) + private void load(OsuGame game, OsuConfigManager config, BeatmapDatabase beatmaps) { + menuMusic = config.GetBindable(OsuConfig.MenuMusic); LoadComponentAsync(background); + if (!menuMusic) + { + trackManager = game.Audio.Track; + choosableBeatmapsetAmmout = beatmaps.Query().Count(); + if (choosableBeatmapsetAmmout > 0) + { + beatmap = beatmaps.GetWithChildren(RNG.Next(1, choosableBeatmapsetAmmout)).Beatmaps[0]; + song = beatmaps.GetWorkingBeatmap(beatmap); + Beatmap = song; + } + } + buttons.OnSettings = game.ToggleOptions; preloadSongSelect(); @@ -81,6 +107,15 @@ namespace osu.Game.Screens.Menu { base.OnEntering(last); buttons.FadeInFromZero(500); + if(last is Intro && song != null) + Task.Run(() => + { + trackManager.SetExclusive(song.Track); + song.Track.Seek(beatmap.Metadata.PreviewTime); + if (beatmap.Metadata.PreviewTime == -1) + song.Track.Seek(song.Track.Length * .4f); + song.Track.Start(); + }); } protected override void OnSuspending(Screen next)