From cbf188c293e0a7ca467a5ee6076cb7b39db8d7a7 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 26 Jun 2017 19:06:08 +0900 Subject: [PATCH] Add new main menu backgrounds --- osu-resources | 2 +- .../Backgrounds/BackgroundScreenDefault.cs | 25 ++++++++++++++++++- osu.Game/Screens/Loader.cs | 5 ++-- osu.Game/Screens/Menu/MainMenu.cs | 11 +++++++- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/osu-resources b/osu-resources index 10fda22522..900f47563f 160000 --- a/osu-resources +++ b/osu-resources @@ -1 +1 @@ -Subproject commit 10fda22522ffadbdbc43fa0f3683a065e536f7d1 +Subproject commit 900f47563f5598eef7cbf203f0b3f2166508b6d5 diff --git a/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs b/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs index f411f74361..3248fef0db 100644 --- a/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundScreenDefault.cs @@ -2,16 +2,39 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Framework.Allocation; +using osu.Framework.Graphics; using osu.Game.Graphics.Backgrounds; namespace osu.Game.Screens.Backgrounds { public class BackgroundScreenDefault : BackgroundScreen { + private int currentDisplay; + private const int background_count = 5; + + + private string backgroundName => $@"Menu/menu-background-{currentDisplay % background_count + 1}"; + + private Background current; + [BackgroundDependencyLoader] private void load() { - Add(new Background(@"Backgrounds/bg1")); + display(new Background(backgroundName)); + } + + private void display(Background b) + { + current?.FadeOut(800, EasingTypes.OutQuint); + current?.Expire(); + + Add(current = b); + } + + public void Next() + { + currentDisplay++; + LoadComponentAsync(new Background(backgroundName) { Depth = currentDisplay }, display); } } } \ No newline at end of file diff --git a/osu.Game/Screens/Loader.cs b/osu.Game/Screens/Loader.cs index 30e1538b47..af084e740b 100644 --- a/osu.Game/Screens/Loader.cs +++ b/osu.Game/Screens/Loader.cs @@ -2,7 +2,6 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Framework.Allocation; -using osu.Framework.Screens; using osu.Game.Screens.Menu; namespace osu.Game.Screens @@ -20,9 +19,9 @@ namespace osu.Game.Screens private void load(OsuGame game) { if (game.IsDeployedBuild) - LoadComponentAsync(new Disclaimer(), d => Push((Screen)d)); + LoadComponentAsync(new Disclaimer(), d => Push(d)); else - LoadComponentAsync(new Intro(), d => Push((Screen)d)); + LoadComponentAsync(new Intro(), d => Push(d)); } } } diff --git a/osu.Game/Screens/Menu/MainMenu.cs b/osu.Game/Screens/Menu/MainMenu.cs index 1a7d2d4e37..5a2e0a7b12 100644 --- a/osu.Game/Screens/Menu/MainMenu.cs +++ b/osu.Game/Screens/Menu/MainMenu.cs @@ -7,6 +7,7 @@ using osu.Framework.Allocation; using osu.Framework.Graphics; using osu.Framework.Input; using osu.Framework.Screens; +using osu.Game.Beatmaps; using osu.Game.Graphics.Containers; using osu.Game.Screens.Backgrounds; using osu.Game.Screens.Charts; @@ -24,7 +25,7 @@ namespace osu.Game.Screens.Menu internal override bool ShowOverlays => buttons.State != MenuState.Initial; - private readonly BackgroundScreen background; + private readonly BackgroundScreenDefault background; private Screen songSelect; protected override BackgroundScreen CreateBackground() => background; @@ -66,6 +67,12 @@ namespace osu.Game.Screens.Menu preloadSongSelect(); } + protected override void OnBeatmapChanged(WorkingBeatmap beatmap) + { + base.OnBeatmapChanged(beatmap); + background.Next(); + } + private void preloadSongSelect() { if (songSelect == null) @@ -111,6 +118,8 @@ namespace osu.Game.Screens.Menu { base.OnResuming(last); + background.Next(); + //we may have consumed our preloaded instance, so let's make another. preloadSongSelect();