diff --git a/osu.Desktop/OsuGameDesktop.cs b/osu.Desktop/OsuGameDesktop.cs index 473dce62e9..309d784438 100644 --- a/osu.Desktop/OsuGameDesktop.cs +++ b/osu.Desktop/OsuGameDesktop.cs @@ -19,19 +19,21 @@ namespace osu.Desktop { class OsuGameDesktop : OsuGame { + private VersionManager versionManager; + + public override bool IsDeployedBuild => versionManager.IsDeployedBuild; + public OsuGameDesktop(string[] args = null) : base(args) { - + versionManager = new VersionManager(); } protected override void LoadComplete() { base.LoadComplete(); - VersionManager versionManager; - (versionManager = new VersionManager()).Preload(this, Add); - Dependencies.Cache(versionManager); + versionManager.Preload(this, Add); } public override void SetHost(BasicGameHost host) diff --git a/osu.Desktop/Overlays/VersionManager.cs b/osu.Desktop/Overlays/VersionManager.cs index 25f8dd97fd..716ec91155 100644 --- a/osu.Desktop/Overlays/VersionManager.cs +++ b/osu.Desktop/Overlays/VersionManager.cs @@ -25,7 +25,7 @@ namespace osu.Desktop.Overlays AssemblyName assembly = Assembly.GetEntryAssembly().GetName(); - public bool IsReleaseBuild => assembly.Version.Major > 0; + public bool IsDeployedBuild => assembly.Version.Major > 0; protected override bool HideOnEscape => false; @@ -45,7 +45,7 @@ namespace osu.Desktop.Overlays Debug.Assert(isDebug = true); string version; - if (!IsReleaseBuild) + if (!IsDeployedBuild) { version = @"local " + (isDebug ? @"debug" : @"release"); } diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 03be28eff6..43196431f2 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -31,6 +31,8 @@ namespace osu.Game { public class OsuGame : OsuGameBase { + public virtual bool IsDeployedBuild => false; + public Toolbar Toolbar; private ChatOverlay chat; @@ -39,8 +41,16 @@ namespace osu.Game private NotificationManager notificationManager; - private MainMenu mainMenu => screenStack?.ChildGameScreen as MainMenu; - private Intro intro => screenStack as Intro; + private Intro intro + { + get + { + Screen s = screenStack; + while (s != null && !(s is Intro)) + s = s.ChildScreen; + return s as Intro; + } + } private OsuScreen screenStack; @@ -106,7 +116,7 @@ namespace osu.Game } }); - (screenStack = new Intro()).Preload(this, d => + (screenStack = new Loader()).Preload(this, d => { screenStack.ModePushed += screenAdded; screenStack.Exited += screenRemoved; @@ -148,7 +158,7 @@ namespace osu.Game (Toolbar = new Toolbar { Depth = -3, - OnHome = delegate { mainMenu?.MakeCurrent(); }, + OnHome = delegate { intro?.ChildScreen?.MakeCurrent(); }, OnPlayModeChange = delegate (PlayMode m) { PlayMode.Value = m; }, }).Preload(this, t => { @@ -226,7 +236,8 @@ namespace osu.Game Toolbar.State = Visibility.Visible; } - Cursor.FadeIn(100); + if (newScreen is MainMenu) + Cursor.FadeIn(100); ModeChanged?.Invoke(newScreen); @@ -249,8 +260,8 @@ namespace osu.Game { base.UpdateAfterChildren(); - if (screenStack.ChildScreen != null) - screenStack.ChildScreen.Padding = new MarginPadding { Top = Toolbar.Position.Y + Toolbar.DrawHeight }; + if (intro?.ChildScreen != null) + intro.ChildScreen.Padding = new MarginPadding { Top = Toolbar.Position.Y + Toolbar.DrawHeight }; } private void screenAdded(Screen newScreen) diff --git a/osu.Game/Screens/Loader.cs b/osu.Game/Screens/Loader.cs new file mode 100644 index 0000000000..33094b7098 --- /dev/null +++ b/osu.Game/Screens/Loader.cs @@ -0,0 +1,28 @@ +// Copyright (c) 2007-2017 ppy Pty Ltd . +// 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 +{ + class Loader : OsuScreen + { + internal override bool ShowOverlays => false; + + public Loader() + { + ValidForResume = false; + } + + [BackgroundDependencyLoader] + private void load(OsuGame game) + { + if (game.IsDeployedBuild) + new Disclaimer().Preload(game, d => Push((Screen)d)); + else + new Intro().Preload(game, d => Push((Screen)d)); + } + } +} diff --git a/osu.Game/Screens/Menu/Disclaimer.cs b/osu.Game/Screens/Menu/Disclaimer.cs new file mode 100644 index 0000000000..c801f225b2 --- /dev/null +++ b/osu.Game/Screens/Menu/Disclaimer.cs @@ -0,0 +1,38 @@ +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using osu.Framework.Allocation; +using osu.Framework.Screens; + +namespace osu.Game.Screens.Menu +{ + class Disclaimer : OsuScreen + { + private Intro intro; + internal override bool ShowOverlays => false; + + [BackgroundDependencyLoader] + private void load(OsuGame game) + { + (intro = new Intro()).Preload(game); + } + + protected override void OnEntering(Screen last) + { + base.OnEntering(last); + + FadeInFromZero(100); + + Delay(5000); + + FadeOut(100); + + Push(intro); + } + } +} diff --git a/osu.Game/Screens/Menu/Intro.cs b/osu.Game/Screens/Menu/Intro.cs index 3b2444e231..11f120e481 100644 --- a/osu.Game/Screens/Menu/Intro.cs +++ b/osu.Game/Screens/Menu/Intro.cs @@ -28,7 +28,7 @@ namespace osu.Game.Screens.Menu private AudioSample seeya; private AudioTrack bgm; - internal override bool ShowOverlays => (ParentScreen as OsuScreen)?.ShowOverlays ?? false; + internal override bool ShowOverlays => false; protected override BackgroundScreen CreateBackground() => new BackgroundScreenEmpty(); diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 1086aaf0ff..632e35037b 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -131,7 +131,9 @@ + +