// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. #nullable enable 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); } } }