mirror of https://github.com/ppy/osu
53 lines
1.4 KiB
C#
53 lines
1.4 KiB
C#
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
// See the LICENCE file in the repository root for full licence text.
|
|
|
|
using osu.Framework.Allocation;
|
|
using osu.Framework.Input.Events;
|
|
using osu.Framework.Localisation;
|
|
using osu.Game.Graphics;
|
|
using osu.Game.Overlays;
|
|
using osu.Game.Overlays.Settings;
|
|
using osuTK.Input;
|
|
|
|
namespace osu.Game.Screens.Utility
|
|
{
|
|
public class ButtonWithKeyBind : SettingsButton
|
|
{
|
|
private readonly Key key;
|
|
|
|
public ButtonWithKeyBind(Key key)
|
|
{
|
|
this.key = key;
|
|
}
|
|
|
|
public new LocalisableString Text
|
|
{
|
|
get => base.Text;
|
|
set => base.Text = $"{value} (Press {key.ToString().Replace("Number", string.Empty)})";
|
|
}
|
|
|
|
protected override bool OnKeyDown(KeyDownEvent e)
|
|
{
|
|
if (!e.Repeat && e.Key == key)
|
|
{
|
|
TriggerClick();
|
|
return true;
|
|
}
|
|
|
|
return base.OnKeyDown(e);
|
|
}
|
|
|
|
[Resolved]
|
|
private OverlayColourProvider overlayColourProvider { get; set; } = null!;
|
|
|
|
protected override void LoadComplete()
|
|
{
|
|
base.LoadComplete();
|
|
|
|
Height = 100;
|
|
SpriteText.Colour = overlayColourProvider.Background6;
|
|
SpriteText.Font = OsuFont.TorusAlternate.With(size: 34);
|
|
}
|
|
}
|
|
}
|