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:
parent
e6ef9f67aa
commit
fe3a6248ec
@ -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)
|
||||
|
@ -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");
|
||||
}
|
||||
|
@ -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)
|
||||
|
28
osu.Game/Screens/Loader.cs
Normal file
28
osu.Game/Screens/Loader.cs
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
38
osu.Game/Screens/Menu/Disclaimer.cs
Normal file
38
osu.Game/Screens/Menu/Disclaimer.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
|
||||
|
@ -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" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user