From 2a9f4e6950b2bd8d98c99a5bbc70e95130f48477 Mon Sep 17 00:00:00 2001 From: ColdVolcano Date: Fri, 14 Apr 2017 12:42:42 -0500 Subject: [PATCH] Get MenuMusic and MenuVoice woking --- osu.Game/Configuration/OsuConfigManager.cs | 5 +- osu.Game/Screens/Menu/Intro.cs | 60 ++++++++++++++++++---- 2 files changed, 52 insertions(+), 13 deletions(-) diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs index e2f33479c0..38fe739a12 100644 --- a/osu.Game/Configuration/OsuConfigManager.cs +++ b/osu.Game/Configuration/OsuConfigManager.cs @@ -35,6 +35,9 @@ namespace osu.Game.Configuration Set(OsuConfig.MenuParallax, true); + Set(OsuConfig.MenuVoice, true); + Set(OsuConfig.MenuMusic, true); + Set(OsuConfig.ShowInterface, true); Set(OsuConfig.KeyOverlay, false); //todo: implement all settings below this line (remove the Disabled set when doing so). @@ -145,8 +148,6 @@ namespace osu.Game.Configuration Set(OsuConfig.YahooIntegration, false).Disabled = true; Set(OsuConfig.ForceFrameFlush, false).Disabled = true; Set(OsuConfig.DetectPerformanceIssues, true).Disabled = true; - Set(OsuConfig.MenuMusic, true).Disabled = true; - Set(OsuConfig.MenuVoice, true).Disabled = true; Set(OsuConfig.RawInput, false).Disabled = true; Set(OsuConfig.AbsoluteToOsuWindow, Get(OsuConfig.RawInput)).Disabled = true; Set(OsuConfig.ShowMenuTips, true).Disabled = true; diff --git a/osu.Game/Screens/Menu/Intro.cs b/osu.Game/Screens/Menu/Intro.cs index ac926cba0c..b65c221fa3 100644 --- a/osu.Game/Screens/Menu/Intro.cs +++ b/osu.Game/Screens/Menu/Intro.cs @@ -1,12 +1,18 @@ // Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE +using System.Threading.Tasks; using osu.Framework.Allocation; using osu.Framework.Audio; using osu.Framework.Audio.Sample; using osu.Framework.Audio.Track; +using osu.Framework.Configuration; +using osu.Framework.MathUtils; using osu.Framework.Screens; using osu.Framework.Graphics; +using osu.Game.Beatmaps; +using osu.Game.Configuration; +using osu.Game.Database; using osu.Game.Graphics.Containers; using osu.Game.Screens.Backgrounds; using OpenTK.Graphics; @@ -56,30 +62,60 @@ namespace osu.Game.Screens.Menu }; } + private Bindable menuVoice; + private Bindable osuBGM; + private BeatmapDatabase beatmaps; + private TrackManager trackManager; + private BeatmapInfo beatmap; + private WorkingBeatmap song; + [BackgroundDependencyLoader] - private void load(AudioManager audio) + private void load(OsuGameBase game, AudioManager audio, OsuConfigManager config, BeatmapDatabase beatmaps) { + menuVoice = config.GetBindable(OsuConfig.MenuVoice); + osuBGM = config.GetBindable(OsuConfig.MenuMusic); + + if (osuBGM) + { + bgm = audio.Track.Get(@"circles"); + bgm.Looping = true; + } + else + { + this.beatmaps = beatmaps; + trackManager = game.Audio.Track; + beatmap = beatmaps.GetWithChildren(RNG.Next(0, beatmaps.Query().Count() - 1)).Beatmaps[0]; + song = beatmaps.GetWorkingBeatmap(beatmap, null); + } + welcome = audio.Sample.Get(@"welcome"); + seeya = audio.Sample.Get(@"seeya"); - bgm = audio.Track.Get(@"circles"); - bgm.Looping = true; } protected override void OnEntering(Screen last) { base.OnEntering(last); - welcome.Play(); - + if(menuVoice) + welcome.Play(); Scheduler.AddDelayed(delegate { - bgm.Start(); + if(osuBGM) + bgm.Start(); LoadComponentAsync(mainMenu = new MainMenu()); Scheduler.AddDelayed(delegate { + if (!osuBGM) + Task.Run(() => + { + trackManager.SetExclusive(song.Track); + song.Track.Seek(beatmap.Metadata.PreviewTime); + song.Track.Start(); + }); DidLoadMenu = true; Push(mainMenu); }, 2300); @@ -109,15 +145,17 @@ namespace osu.Game.Screens.Menu if (!(last is MainMenu)) Content.FadeIn(300); + double fadeOutTime = 2000; //we also handle the exit transition. - seeya.Play(); + if (menuVoice) + seeya.Play(); + else + fadeOutTime = 500; - const double fade_out_time = 2000; - - Scheduler.AddDelayed(Exit, fade_out_time); + Scheduler.AddDelayed(Exit, fadeOutTime); //don't want to fade out completely else we will stop running updates and shit will hit the fan. - Game.FadeTo(0.01f, fade_out_time); + Game.FadeTo(0.01f, fadeOutTime); base.OnResuming(last); }