1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-15 08:12:56 +08:00

Merge branch 'master' into ParallaxContainerImprovement

This commit is contained in:
Jacob 2018-05-21 20:31:44 +02:00 committed by GitHub
commit e878e65e83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 63 additions and 33 deletions

View File

@ -7,6 +7,7 @@ using osu.Framework.Audio.Sample;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.Input; using osu.Framework.Input;
using OpenTK; using OpenTK;
using osu.Framework.Configuration;
namespace osu.Game.Graphics.Containers namespace osu.Game.Graphics.Containers
{ {
@ -15,9 +16,14 @@ namespace osu.Game.Graphics.Containers
private SampleChannel samplePopIn; private SampleChannel samplePopIn;
private SampleChannel samplePopOut; private SampleChannel samplePopOut;
[BackgroundDependencyLoader] private readonly BindableBool allowOpeningOverlays = new BindableBool(true);
private void load(AudioManager audio)
[BackgroundDependencyLoader(true)]
private void load(OsuGame osuGame, AudioManager audio)
{ {
if (osuGame != null)
allowOpeningOverlays.BindTo(osuGame.AllowOpeningOverlays);
samplePopIn = audio.Sample.Get(@"UI/overlay-pop-in"); samplePopIn = audio.Sample.Get(@"UI/overlay-pop-in");
samplePopOut = audio.Sample.Get(@"UI/overlay-pop-out"); samplePopOut = audio.Sample.Get(@"UI/overlay-pop-out");
@ -46,15 +52,20 @@ namespace osu.Game.Graphics.Containers
private void onStateChanged(Visibility visibility) private void onStateChanged(Visibility visibility)
{ {
switch (visibility) if (allowOpeningOverlays)
{ {
case Visibility.Visible: switch (visibility)
samplePopIn?.Play(); {
break; case Visibility.Visible:
case Visibility.Hidden: samplePopIn?.Play();
samplePopOut?.Play(); break;
break; case Visibility.Hidden:
samplePopOut?.Play();
break;
}
} }
else
State = Visibility.Hidden;
} }
} }
} }

View File

@ -77,7 +77,8 @@ namespace osu.Game
public float ToolbarOffset => Toolbar.Position.Y + Toolbar.DrawHeight; public float ToolbarOffset => Toolbar.Position.Y + Toolbar.DrawHeight;
public readonly BindableBool ShowOverlays = new BindableBool(); public readonly BindableBool HideOverlaysOnEnter = new BindableBool();
public readonly BindableBool AllowOpeningOverlays = new BindableBool(true);
private OsuScreen screenStack; private OsuScreen screenStack;
@ -367,12 +368,12 @@ namespace osu.Game
settings.StateChanged += _ => updateScreenOffset(); settings.StateChanged += _ => updateScreenOffset();
notifications.StateChanged += _ => updateScreenOffset(); notifications.StateChanged += _ => updateScreenOffset();
notifications.Enabled.BindTo(ShowOverlays); notifications.Enabled.BindTo(AllowOpeningOverlays);
ShowOverlays.ValueChanged += show => HideOverlaysOnEnter.ValueChanged += hide =>
{ {
//central game screen change logic. //central game screen change logic.
if (!show) if (hide)
{ {
hideAllOverlays(); hideAllOverlays();
musicController.State = Visibility.Hidden; musicController.State = Visibility.Hidden;

View File

@ -26,7 +26,7 @@ namespace osu.Game.Screens.Edit
{ {
protected override BackgroundScreen CreateBackground() => new BackgroundScreenCustom(@"Backgrounds/bg4"); protected override BackgroundScreen CreateBackground() => new BackgroundScreenCustom(@"Backgrounds/bg4");
public override bool ShowOverlaysOnEnter => false; protected override bool HideOverlaysOnEnter => true;
public override bool AllowBeatmapRulesetChange => false; public override bool AllowBeatmapRulesetChange => false;
private Box bottomBackground; private Box bottomBackground;

View File

@ -17,7 +17,7 @@ namespace osu.Game.Screens
{ {
private bool showDisclaimer; private bool showDisclaimer;
public override bool ShowOverlaysOnEnter => false; protected override bool HideOverlaysOnEnter => true;
protected override bool AllowBackButton => false; protected override bool AllowBackButton => false;

View File

@ -27,7 +27,8 @@ namespace osu.Game.Screens.Menu
{ {
public event Action<MenuState> StateChanged; public event Action<MenuState> StateChanged;
private readonly BindableBool showOverlays = new BindableBool(); private readonly BindableBool hideOverlaysOnEnter = new BindableBool();
private readonly BindableBool allowOpeningOverlays = new BindableBool();
public Action OnEdit; public Action OnEdit;
public Action OnExit; public Action OnExit;
@ -135,7 +136,12 @@ namespace osu.Game.Screens.Menu
[BackgroundDependencyLoader(true)] [BackgroundDependencyLoader(true)]
private void load(AudioManager audio, OsuGame game) private void load(AudioManager audio, OsuGame game)
{ {
if (game != null) showOverlays.BindTo(game.ShowOverlays); if (game != null)
{
hideOverlaysOnEnter.BindTo(game.HideOverlaysOnEnter);
allowOpeningOverlays.BindTo(game.AllowOpeningOverlays);
}
sampleBack = audio.Sample.Get(@"Menu/button-back-select"); sampleBack = audio.Sample.Get(@"Menu/button-back-select");
} }
@ -322,8 +328,6 @@ namespace osu.Game.Screens.Menu
logoDelayedAction = Scheduler.AddDelayed(() => logoDelayedAction = Scheduler.AddDelayed(() =>
{ {
showOverlays.Value = false;
logo.ClearTransforms(targetMember: nameof(Position)); logo.ClearTransforms(targetMember: nameof(Position));
logo.RelativePositionAxes = Axes.Both; logo.RelativePositionAxes = Axes.Both;
@ -351,7 +355,8 @@ namespace osu.Game.Screens.Menu
logoTracking = true; logoTracking = true;
logo.Impact(); logo.Impact();
showOverlays.Value = true; hideOverlaysOnEnter.Value = false;
allowOpeningOverlays.Value = true;
}, 200); }, 200);
break; break;
default: default:

View File

@ -18,7 +18,8 @@ namespace osu.Game.Screens.Menu
private readonly SpriteIcon icon; private readonly SpriteIcon icon;
private Color4 iconColour; private Color4 iconColour;
public override bool ShowOverlaysOnEnter => false; protected override bool HideOverlaysOnEnter => true;
public override bool CursorVisible => false; public override bool CursorVisible => false;
public Disclaimer() public Disclaimer()

View File

@ -31,7 +31,9 @@ namespace osu.Game.Screens.Menu
private SampleChannel welcome; private SampleChannel welcome;
private SampleChannel seeya; private SampleChannel seeya;
public override bool ShowOverlaysOnEnter => false; protected override bool HideOverlaysOnEnter => true;
protected override bool AllowOpeningOverlays => false;
public override bool CursorVisible => false; public override bool CursorVisible => false;
protected override BackgroundScreen CreateBackground() => new BackgroundScreenEmpty(); protected override BackgroundScreen CreateBackground() => new BackgroundScreenEmpty();

View File

@ -24,7 +24,8 @@ namespace osu.Game.Screens.Menu
{ {
private readonly ButtonSystem buttons; private readonly ButtonSystem buttons;
public override bool ShowOverlaysOnEnter => buttons.State != MenuState.Initial; protected override bool HideOverlaysOnEnter => buttons.State == MenuState.Initial;
protected override bool AllowOpeningOverlays => buttons.State != MenuState.Initial;
protected override bool AllowBackButton => buttons.State != MenuState.Initial; protected override bool AllowBackButton => buttons.State != MenuState.Initial;

View File

@ -32,12 +32,19 @@ namespace osu.Game.Screens
/// </summary> /// </summary>
protected virtual BackgroundScreen CreateBackground() => null; protected virtual BackgroundScreen CreateBackground() => null;
protected BindableBool ShowOverlays = new BindableBool(); private readonly BindableBool hideOverlaysOnEnter = new BindableBool();
/// <summary> /// <summary>
/// Whether overlays should be shown when this screen is entered or resumed. /// Whether overlays should be hidden when this screen is entered or resumed.
/// </summary> /// </summary>
public virtual bool ShowOverlaysOnEnter => true; protected virtual bool HideOverlaysOnEnter => hideOverlaysOnEnter;
private readonly BindableBool allowOpeningOverlays = new BindableBool();
/// <summary>
/// Whether overlays should be able to be opened while this screen is active.
/// </summary>
protected virtual bool AllowOpeningOverlays => allowOpeningOverlays;
/// <summary> /// <summary>
/// Whether this <see cref="OsuScreen"/> allows the cursor to be displayed. /// Whether this <see cref="OsuScreen"/> allows the cursor to be displayed.
@ -88,7 +95,8 @@ namespace osu.Game.Screens
if (osuGame != null) if (osuGame != null)
{ {
Ruleset.BindTo(osuGame.Ruleset); Ruleset.BindTo(osuGame.Ruleset);
ShowOverlays.BindTo(osuGame.ShowOverlays); hideOverlaysOnEnter.BindTo(osuGame.HideOverlaysOnEnter);
allowOpeningOverlays.BindTo(osuGame.AllowOpeningOverlays);
} }
sampleExit = audio.Sample.Get(@"UI/screen-back"); sampleExit = audio.Sample.Get(@"UI/screen-back");
@ -220,7 +228,8 @@ namespace osu.Game.Screens
if (backgroundParallaxContainer != null) if (backgroundParallaxContainer != null)
backgroundParallaxContainer.ParallaxAmount = ParallaxContainer.DEFAULT_PARALLAX_AMOUNT * BackgroundParallaxAmount; backgroundParallaxContainer.ParallaxAmount = ParallaxContainer.DEFAULT_PARALLAX_AMOUNT * BackgroundParallaxAmount;
ShowOverlays.Value = ShowOverlaysOnEnter; hideOverlaysOnEnter.Value = HideOverlaysOnEnter;
allowOpeningOverlays.Value = AllowOpeningOverlays;
} }
private void onExitingLogo() private void onExitingLogo()

View File

@ -35,7 +35,7 @@ namespace osu.Game.Screens.Play
{ {
protected override float BackgroundParallaxAmount => 0.1f; protected override float BackgroundParallaxAmount => 0.1f;
public override bool ShowOverlaysOnEnter => false; protected override bool HideOverlaysOnEnter => true;
public Action RestartRequested; public Action RestartRequested;

View File

@ -25,8 +25,8 @@ namespace osu.Game.Screens.Play
private BeatmapMetadataDisplay info; private BeatmapMetadataDisplay info;
private bool showOverlays = true; private bool hideOverlays;
public override bool ShowOverlaysOnEnter => showOverlays; protected override bool HideOverlaysOnEnter => hideOverlays;
private Task loadTask; private Task loadTask;
@ -36,7 +36,7 @@ namespace osu.Game.Screens.Play
player.RestartRequested = () => player.RestartRequested = () =>
{ {
showOverlays = false; hideOverlays = true;
ValidForResume = true; ValidForResume = true;
}; };
} }

View File

@ -29,7 +29,7 @@ namespace osu.Game.Screens.Tournament
{ {
private const string results_filename = "drawings_results.txt"; private const string results_filename = "drawings_results.txt";
public override bool ShowOverlaysOnEnter => false; protected override bool HideOverlaysOnEnter => true;
protected override BackgroundScreen CreateBackground() => new BackgroundScreenDefault(); protected override BackgroundScreen CreateBackground() => new BackgroundScreenDefault();