diff --git a/osu.Game/Screens/Play/Settings/ReplaySettingsOverlay.cs b/osu.Game/Screens/Play/Settings/ReplaySettingsOverlay.cs index 1737010a02..9f4d12fd01 100644 --- a/osu.Game/Screens/Play/Settings/ReplaySettingsOverlay.cs +++ b/osu.Game/Screens/Play/Settings/ReplaySettingsOverlay.cs @@ -2,12 +2,16 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using OpenTK; +using OpenTK.Input; using osu.Framework.Graphics.Containers; +using osu.Framework.Input; namespace osu.Game.Screens.Play.Settings { public class ReplaySettingsOverlay : FillFlowContainer { + private const int fade_duration = 100; + private bool isVisible; public bool IsVisible { @@ -16,15 +20,16 @@ namespace osu.Game.Screens.Play.Settings isVisible = value; if (isVisible) - Show(); + FadeIn(fade_duration); else - Hide(); + FadeOut(fade_duration); } get { return isVisible; } } public ReplaySettingsOverlay() { + AlwaysPresent = true; Direction = FillDirection.Vertical; Spacing = new Vector2(0, 20); @@ -32,5 +37,22 @@ namespace osu.Game.Screens.Play.Settings Add(new DiscussionSettings()); Add(new PlaybackSettings()); } + + protected override bool OnKeyDown(InputState state, KeyDownEventArgs args) + { + if (args.Repeat) return false; + + if (state.Keyboard.ControlPressed) + { + switch (args.Key) + { + case Key.H: + IsVisible = !isVisible; + return true; + } + } + + return base.OnKeyDown(state, args); + } } }