1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-28 03:22:54 +08:00

Set global action as a parameter in toast

This commit is contained in:
Joehu 2020-11-23 15:13:58 -08:00
parent 2071cba944
commit 52f5473cc0
4 changed files with 38 additions and 15 deletions

View File

@ -196,7 +196,7 @@ namespace osu.Game.Configuration
public Func<int, string> LookupSkinName { private get; set; } public Func<int, string> LookupSkinName { private get; set; }
public Func<GlobalAction, string> LookupKeyBindings { get; set; } public Func<GlobalAction?, string> LookupKeyBindings { get; set; }
} }
public enum OsuSetting public enum OsuSetting

View File

@ -37,7 +37,7 @@ namespace osu.Game.Input
/// </summary> /// </summary>
/// <param name="globalAction">The action to lookup.</param> /// <param name="globalAction">The action to lookup.</param>
/// <returns>A set of display strings for all the user's key configuration for the action.</returns> /// <returns>A set of display strings for all the user's key configuration for the action.</returns>
public IEnumerable<string> GetReadableKeyCombinationsFor(GlobalAction globalAction) public IEnumerable<string> GetReadableKeyCombinationsFor(GlobalAction? globalAction)
{ {
foreach (var action in Query().Where(b => (GlobalAction)b.Action == globalAction)) foreach (var action in Query().Where(b => (GlobalAction)b.Action == globalAction))
{ {

View File

@ -6,7 +6,6 @@ using osu.Framework.Bindables;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Input.Bindings; using osu.Framework.Input.Bindings;
using osu.Game.Beatmaps; using osu.Game.Beatmaps;
using osu.Game.Configuration;
using osu.Game.Input.Bindings; using osu.Game.Input.Bindings;
using osu.Game.Overlays.OSD; using osu.Game.Overlays.OSD;
@ -26,9 +25,6 @@ namespace osu.Game.Overlays.Music
[Resolved(canBeNull: true)] [Resolved(canBeNull: true)]
private OnScreenDisplay onScreenDisplay { get; set; } private OnScreenDisplay onScreenDisplay { get; set; }
[Resolved]
private OsuConfigManager config { get; set; }
public bool OnPressed(GlobalAction action) public bool OnPressed(GlobalAction action)
{ {
if (beatmap.Disabled) if (beatmap.Disabled)
@ -41,11 +37,11 @@ namespace osu.Game.Overlays.Music
bool wasPlaying = musicController.IsPlaying; bool wasPlaying = musicController.IsPlaying;
if (musicController.TogglePause()) if (musicController.TogglePause())
onScreenDisplay?.Display(new MusicActionToast(wasPlaying ? "Pause track" : "Play track", config.LookupKeyBindings(action))); onScreenDisplay?.Display(new MusicActionToast(wasPlaying ? "Pause track" : "Play track", action));
return true; return true;
case GlobalAction.MusicNext: case GlobalAction.MusicNext:
musicController.NextTrack(() => onScreenDisplay?.Display(new MusicActionToast("Next track", config.LookupKeyBindings(action)))); musicController.NextTrack(() => onScreenDisplay?.Display(new MusicActionToast("Next track", action)));
return true; return true;
@ -55,11 +51,11 @@ namespace osu.Game.Overlays.Music
switch (res) switch (res)
{ {
case PreviousTrackResult.Restart: case PreviousTrackResult.Restart:
onScreenDisplay?.Display(new MusicActionToast("Restart track", config.LookupKeyBindings(action))); onScreenDisplay?.Display(new MusicActionToast("Restart track", action));
break; break;
case PreviousTrackResult.Previous: case PreviousTrackResult.Previous:
onScreenDisplay?.Display(new MusicActionToast("Previous track", config.LookupKeyBindings(action))); onScreenDisplay?.Display(new MusicActionToast("Previous track", action));
break; break;
} }
}); });
@ -76,8 +72,8 @@ namespace osu.Game.Overlays.Music
private class MusicActionToast : Toast private class MusicActionToast : Toast
{ {
public MusicActionToast(string action, string shortcut) public MusicActionToast(string value, GlobalAction action)
: base("Music Playback", action, shortcut) : base("Music Playback", value, action: action)
{ {
} }
} }

View File

@ -1,11 +1,14 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // 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. // See the LICENCE file in the repository root for full licence text.
using osu.Framework.Allocation;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Shapes;
using osu.Game.Configuration;
using osu.Game.Graphics; using osu.Game.Graphics;
using osu.Game.Graphics.Sprites; using osu.Game.Graphics.Sprites;
using osu.Game.Input.Bindings;
using osuTK; using osuTK;
using osuTK.Graphics; using osuTK.Graphics;
@ -16,12 +19,22 @@ namespace osu.Game.Overlays.OSD
private const int toast_minimum_width = 240; private const int toast_minimum_width = 240;
private readonly Container content; private readonly Container content;
private readonly OsuSpriteText spriteText;
private readonly string shortcut;
private readonly GlobalAction? action;
protected override Container<Drawable> Content => content; protected override Container<Drawable> Content => content;
protected readonly OsuSpriteText ValueText; protected readonly OsuSpriteText ValueText;
protected Toast(string description, string value, string shortcut) protected Toast(string description, string value, string shortcut = null, GlobalAction? action = null)
{ {
this.shortcut = shortcut;
this.action = action;
Anchor = Anchor.Centre; Anchor = Anchor.Centre;
Origin = Anchor.Centre; Origin = Anchor.Centre;
@ -68,7 +81,7 @@ namespace osu.Game.Overlays.OSD
Origin = Anchor.Centre, Origin = Anchor.Centre,
Text = value Text = value
}, },
new OsuSpriteText spriteText = new OsuSpriteText
{ {
Anchor = Anchor.BottomCentre, Anchor = Anchor.BottomCentre,
Origin = Anchor.BottomCentre, Origin = Anchor.BottomCentre,
@ -76,9 +89,23 @@ namespace osu.Game.Overlays.OSD
Alpha = 0.3f, Alpha = 0.3f,
Margin = new MarginPadding { Bottom = 15 }, Margin = new MarginPadding { Bottom = 15 },
Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold), Font = OsuFont.GetFont(size: 12, weight: FontWeight.Bold),
Text = string.IsNullOrEmpty(shortcut) ? "NO KEY BOUND" : shortcut.ToUpperInvariant()
}, },
}; };
} }
[BackgroundDependencyLoader]
private void load(OsuConfigManager config)
{
string text;
if (action != null)
text = config.LookupKeyBindings(action);
else if (!string.IsNullOrEmpty(shortcut))
text = shortcut;
else
text = "no key bound";
spriteText.Text = text.ToUpperInvariant();
}
} }
} }