1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 10:07:36 +08:00

Retry on Tilde key

This commit is contained in:
Andrey Zavadskiy 2017-04-09 16:26:31 +03:00
parent adc16b0727
commit 4ab4f65c83

View File

@ -22,6 +22,10 @@ using System;
using System.Linq;
using osu.Framework.Threading;
using osu.Game.Modes.Scoring;
using OpenTK.Input;
using osu.Framework.Audio.Sample;
using osu.Framework.Graphics.Sprites;
using OpenTK.Graphics;
namespace osu.Game.Screens.Play
{
@ -59,10 +63,16 @@ namespace osu.Game.Screens.Play
private HudOverlay hudOverlay;
private PauseOverlay pauseOverlay;
private FailOverlay failOverlay;
private Box retryOverlay;
private SampleChannel SampleClick;
[BackgroundDependencyLoader]
private void load(AudioManager audio, BeatmapDatabase beatmaps, OsuConfigManager config)
{
AlwaysPresent = true;
SampleClick = audio.Sample.Get(@"Menu/menuback");
var beatmap = Beatmap.Beatmap;
if (beatmap.BeatmapInfo?.Mode > PlayMode.Taiko)
@ -157,6 +167,13 @@ namespace osu.Game.Screens.Play
{
OnRetry = Restart,
OnQuit = Exit,
},
retryOverlay = new Box
{
Alpha = 0,
AlwaysPresent = true,
RelativeSizeAxes = Axes.Both,
Colour = Color4.Black,
}
};
}
@ -331,5 +348,41 @@ namespace osu.Game.Screens.Play
private Bindable<bool> mouseWheelDisabled;
protected override bool OnWheel(InputState state) => mouseWheelDisabled.Value && !IsPaused;
private bool isHolded;
protected override bool OnKeyDown(InputState state, KeyDownEventArgs args)
{
if (args.Repeat) return false;
if (args.Key == Key.Tilde)
{
isHolded = true;
retryOverlay.FadeIn(500);
Delay(500).Schedule(() =>{
if (isHolded)
{
SampleClick.Play();
Restart();
}
});
return true;
}
return base.OnKeyDown(state, args);
}
protected override bool OnKeyUp(InputState state, KeyUpEventArgs args)
{
if (args.Key == Key.Tilde)
{
isHolded = false;
retryOverlay.FadeOut(200);
return true;
}
return base.OnKeyUp(state, args);
}
}
}