1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-23 08:27:23 +08:00

Add better screen hierarchy and placeholder for dev build disclaimer.

This commit is contained in:
Dean Herbert 2017-02-17 20:07:11 +09:00
parent e6ef9f67aa
commit fe3a6248ec
No known key found for this signature in database
GPG Key ID: 46D71BF4958ABB49
7 changed files with 95 additions and 14 deletions

View File

@ -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)

View File

@ -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");
}

View File

@ -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)

View File

@ -0,0 +1,28 @@
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// 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));
}
}
}

View File

@ -0,0 +1,38 @@
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// 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);
}
}
}

View File

@ -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();

View File

@ -131,7 +131,9 @@
<Compile Include="Screens\Charts\ChartInfo.cs" />
<Compile Include="Screens\Edit\Editor.cs" />
<Compile Include="Screens\GameScreenWhiteBox.cs" />
<Compile Include="Screens\Loader.cs" />
<Compile Include="Screens\Menu\Button.cs" />
<Compile Include="Screens\Menu\Disclaimer.cs" />
<Compile Include="Screens\Menu\FlowContainerWithOrigin.cs" />
<Compile Include="Screens\Menu\Intro.cs" />
<Compile Include="Screens\Menu\ButtonSystem.cs" />