From 62693a6a59de583006fd2f9f8cd462b158fef14e Mon Sep 17 00:00:00 2001 From: Andrey Zavadskiy Date: Tue, 28 Mar 2017 10:49:58 +0300 Subject: [PATCH] Again separate classes --- .../Tests/TestCasePauseOverlay.cs | 12 +++---- .../Play/{StopOverlay.cs => FailOverlay.cs} | 19 +++++----- osu.Game/Screens/Play/PauseOverlay.cs | 35 +++++++++++++++++++ osu.Game/Screens/Play/Player.cs | 21 +++++------ osu.Game/osu.Game.csproj | 3 +- 5 files changed, 60 insertions(+), 30 deletions(-) rename osu.Game/Screens/Play/{StopOverlay.cs => FailOverlay.cs} (93%) create mode 100644 osu.Game/Screens/Play/PauseOverlay.cs diff --git a/osu.Desktop.VisualTests/Tests/TestCasePauseOverlay.cs b/osu.Desktop.VisualTests/Tests/TestCasePauseOverlay.cs index 34c0d875b4..5b8bcf3d1b 100644 --- a/osu.Desktop.VisualTests/Tests/TestCasePauseOverlay.cs +++ b/osu.Desktop.VisualTests/Tests/TestCasePauseOverlay.cs @@ -12,25 +12,23 @@ internal class TestCasePauseOverlay : TestCase { public override string Description => @"Tests the pause overlay"; - private StopOverlay pauseOverlay; + private PauseOverlay pauseOverlay; private int retryCount; public override void Reset() { base.Reset(); - Add(pauseOverlay = new StopOverlay + Add(pauseOverlay = new PauseOverlay { Depth = -1, - OnEscPressed = () => Logger.Log(@"Resume"), + OnResume = () => Logger.Log(@"Resume"), + OnRetry = () => Logger.Log(@"Retry"), + OnQuit = () => Logger.Log(@"Quit"), Title = @"paused", Description = @"you're not going to do what i think you're going to do, are ya?", }); - pauseOverlay.AddButton(@"Continue", Color4.Green, delegate { Logger.Log(@"Resume"); }); - pauseOverlay.AddButton(@"Retry", Color4.Yellow, delegate { Logger.Log(@"Retry"); }); - pauseOverlay.AddButton(@"Quit to Main Menu", new Color4(170, 27, 39, 255), delegate { Logger.Log(@"Quit"); }); - AddButton("Pause", pauseOverlay.Show); AddButton("Add Retry", delegate { diff --git a/osu.Game/Screens/Play/StopOverlay.cs b/osu.Game/Screens/Play/FailOverlay.cs similarity index 93% rename from osu.Game/Screens/Play/StopOverlay.cs rename to osu.Game/Screens/Play/FailOverlay.cs index dd5986b9c8..35a25c5207 100644 --- a/osu.Game/Screens/Play/StopOverlay.cs +++ b/osu.Game/Screens/Play/FailOverlay.cs @@ -13,10 +13,11 @@ using OpenTK; using OpenTK.Graphics; using OpenTK.Input; +using osu.Game.Graphics; namespace osu.Game.Screens.Play { - public class StopOverlay : OverlayContainer + public class FailOverlay : OverlayContainer { private const int transition_duration = 200; private const int button_height = 70; @@ -24,7 +25,8 @@ public class StopOverlay : OverlayContainer protected override bool HideOnEscape => false; - public Action OnEscPressed; + public Action OnRetry; + public Action OnQuit; private string title; private string description; @@ -98,19 +100,13 @@ protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) if (args.Key == Key.Escape) { if (State == Visibility.Hidden) return false; - onEscPressed(); + OnQuit(); return true; } return base.OnKeyDown(state, args); } - private void onEscPressed() - { - OnEscPressed?.Invoke(); - Hide(); - } - public void AddButton(string text, Color4 colour, Action action) { buttons.Add(new PauseButton @@ -127,7 +123,7 @@ public void AddButton(string text, Color4 colour, Action action) }); } - public StopOverlay() + public FailOverlay() { AlwaysReceiveInput = true; @@ -214,6 +210,9 @@ public StopOverlay() }; Retries = 0; + + AddButton(@"Retry", Color4.Yellow, OnRetry); + AddButton(@"Quit to Main Menu", new Color4(170, 27, 39, 255), OnQuit); } } } diff --git a/osu.Game/Screens/Play/PauseOverlay.cs b/osu.Game/Screens/Play/PauseOverlay.cs new file mode 100644 index 0000000000..a1564c6aac --- /dev/null +++ b/osu.Game/Screens/Play/PauseOverlay.cs @@ -0,0 +1,35 @@ +// Copyright (c) 2007-2017 ppy Pty Ltd . +// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using System; +using osu.Framework.Input; +using osu.Game.Graphics; +using OpenTK.Input; +using osu.Framework.Graphics.Containers; +using OpenTK.Graphics; + +namespace osu.Game.Screens.Play +{ + public class PauseOverlay : FailOverlay + { + public Action OnResume; + + protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) + { + if (args.Key == Key.Escape) + { + if (State == Visibility.Hidden) return false; + OnResume(); + return true; + } + + return base.OnKeyDown(state, args); + } + + public PauseOverlay() + { + AddButton(@"Continue", Color4.Green, OnResume); + } + } +} + \ No newline at end of file diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs index b6c185853a..51faa135f7 100644 --- a/osu.Game/Screens/Play/Player.cs +++ b/osu.Game/Screens/Play/Player.cs @@ -62,8 +62,8 @@ public class Player : OsuScreen private SkipButton skipButton; private HudOverlay hudOverlay; - private StopOverlay pauseOverlay; - private StopOverlay failOverlay; + private PauseOverlay pauseOverlay; + private FailOverlay failOverlay; [BackgroundDependencyLoader] private void load(AudioManager audio, BeatmapDatabase beatmaps, OsuConfigManager config, OsuColour colours) @@ -125,31 +125,28 @@ private void load(AudioManager audio, BeatmapDatabase beatmaps, OsuConfigManager hudOverlay.KeyCounter.Add(ruleset.CreateGameplayKeys()); hudOverlay.BindProcessor(scoreProcessor); - pauseOverlay = new StopOverlay + pauseOverlay = new PauseOverlay { Depth = -1, - OnEscPressed = delegate + OnResume = delegate { Delay(400); Schedule(Resume); }, + OnRetry = Restart, + OnQuit = Exit, Title = @"paused", Description = @"you're not going to do what i think you're going to do, are ya?", }; - pauseOverlay.AddButton(@"Continue", colours.Green, delegate { Delay(400); Schedule(Resume); }); - pauseOverlay.AddButton(@"Retry", colours.YellowDark, Restart); - pauseOverlay.AddButton(@"Quit to Main Menu", new Color4(170, 27, 39, 255), Exit); - - failOverlay = new StopOverlay + failOverlay = new FailOverlay { Depth = -1, - OnEscPressed = Exit, + OnRetry = Restart, + OnQuit = Exit, Title = @"failed", Description = @"you're dead, try again?", }; - failOverlay.AddButton(@"Retry", colours.YellowDark, Restart); - failOverlay.AddButton(@"Quit to Main Menu", new Color4(170, 27, 39, 255), Exit); if (ReplayInputHandler != null) diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index c81ea4b5d1..e3faa6544f 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -194,13 +194,14 @@ + + -