1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-13 16:32:54 +08:00

Add key binding support for grid mode cycle

This commit is contained in:
Dean Herbert 2021-09-20 16:43:15 +09:00
parent 4e094b2127
commit cdef6d0cf5
3 changed files with 29 additions and 14 deletions

View File

@ -2,15 +2,16 @@
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using System; using System;
using osu.Framework.Input.Bindings;
using osu.Framework.Input.Events; using osu.Framework.Input.Events;
using osu.Game.Input.Bindings;
using osu.Game.Rulesets.Osu.UI; using osu.Game.Rulesets.Osu.UI;
using osu.Game.Screens.Edit.Compose.Components; using osu.Game.Screens.Edit.Compose.Components;
using osuTK; using osuTK;
using osuTK.Input;
namespace osu.Game.Rulesets.Osu.Edit namespace osu.Game.Rulesets.Osu.Edit
{ {
public class OsuRectangularPositionSnapGrid : RectangularPositionSnapGrid public class OsuRectangularPositionSnapGrid : RectangularPositionSnapGrid, IKeyBindingHandler<GlobalAction>
{ {
private static readonly int[] grid_sizes = { 4, 8, 16, 32 }; private static readonly int[] grid_sizes = { 4, 8, 16, 32 };
@ -25,17 +26,6 @@ namespace osu.Game.Rulesets.Osu.Edit
updateSpacing(); updateSpacing();
} }
protected override bool OnKeyDown(KeyDownEvent e)
{
if (e.Key == Key.G)
{
nextGridSize();
return true;
}
return false;
}
private void nextGridSize() private void nextGridSize()
{ {
currentGridSizeIndex = (currentGridSizeIndex + 1) % grid_sizes.Length; currentGridSizeIndex = (currentGridSizeIndex + 1) % grid_sizes.Length;
@ -46,5 +36,21 @@ namespace osu.Game.Rulesets.Osu.Edit
{ {
Spacing = new Vector2(grid_sizes[currentGridSizeIndex]); Spacing = new Vector2(grid_sizes[currentGridSizeIndex]);
} }
public bool OnPressed(KeyBindingPressEvent<GlobalAction> e)
{
switch (e.Action)
{
case GlobalAction.EditorCycleGridDisplayMode:
nextGridSize();
return true;
}
return false;
}
public void OnReleased(KeyBindingReleaseEvent<GlobalAction> e)
{
}
} }
} }

View File

@ -75,6 +75,7 @@ namespace osu.Game.Input.Bindings
new KeyBinding(new[] { InputKey.Control, InputKey.Shift, InputKey.A }, GlobalAction.EditorVerifyMode), new KeyBinding(new[] { InputKey.Control, InputKey.Shift, InputKey.A }, GlobalAction.EditorVerifyMode),
new KeyBinding(new[] { InputKey.J }, GlobalAction.EditorNudgeLeft), new KeyBinding(new[] { InputKey.J }, GlobalAction.EditorNudgeLeft),
new KeyBinding(new[] { InputKey.K }, GlobalAction.EditorNudgeRight), new KeyBinding(new[] { InputKey.K }, GlobalAction.EditorNudgeRight),
new KeyBinding(new[] { InputKey.G }, GlobalAction.EditorCycleGridDisplayMode),
}; };
public IEnumerable<KeyBinding> InGameKeyBindings => new[] public IEnumerable<KeyBinding> InGameKeyBindings => new[]
@ -284,6 +285,9 @@ namespace osu.Game.Input.Bindings
SeekReplayBackward, SeekReplayBackward,
[LocalisableDescription(typeof(GlobalActionKeyBindingStrings), nameof(GlobalActionKeyBindingStrings.ToggleChatFocus))] [LocalisableDescription(typeof(GlobalActionKeyBindingStrings), nameof(GlobalActionKeyBindingStrings.ToggleChatFocus))]
ToggleChatFocus ToggleChatFocus,
[LocalisableDescription(typeof(GlobalActionKeyBindingStrings), nameof(GlobalActionKeyBindingStrings.EditorCycleGridDisplayMode))]
EditorCycleGridDisplayMode
} }
} }

View File

@ -164,6 +164,11 @@ namespace osu.Game.Localisation
/// </summary> /// </summary>
public static LocalisableString EditorTimingMode => new TranslatableString(getKey(@"editor_timing_mode"), @"Timing mode"); public static LocalisableString EditorTimingMode => new TranslatableString(getKey(@"editor_timing_mode"), @"Timing mode");
/// <summary>
/// "Cycle grid display mode"
/// </summary>
public static LocalisableString EditorCycleGridDisplayMode => new TranslatableString(getKey(@"editor_cycle_grid_display_mode"), @"Cycle grid display mode");
/// <summary> /// <summary>
/// "Hold for HUD" /// "Hold for HUD"
/// </summary> /// </summary>