diff --git a/osu.Game/Localisation/ToastStrings.cs b/osu.Game/Localisation/ToastStrings.cs
index da798a393784..33027966dd8b 100644
--- a/osu.Game/Localisation/ToastStrings.cs
+++ b/osu.Game/Localisation/ToastStrings.cs
@@ -49,6 +49,11 @@ public static class ToastStrings
///
public static LocalisableString UrlCopied => new TranslatableString(getKey(@"url_copied"), @"URL copied");
+ ///
+ /// "Speed Changed"
+ ///
+ public static LocalisableString SpeedChanged => new TranslatableString(getKey(@"speed_changed"), @"Speed Changed");
+
private static string getKey(string key) => $@"{prefix}:{key}";
}
}
diff --git a/osu.Game/Overlays/OSD/SpeedChangeToast.cs b/osu.Game/Overlays/OSD/SpeedChangeToast.cs
new file mode 100644
index 000000000000..73ba23622b96
--- /dev/null
+++ b/osu.Game/Overlays/OSD/SpeedChangeToast.cs
@@ -0,0 +1,17 @@
+// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
+// See the LICENCE file in the repository root for full licence text.
+
+using osu.Game.Configuration;
+using osu.Game.Input.Bindings;
+using osu.Game.Localisation;
+
+namespace osu.Game.Overlays.OSD
+{
+ public partial class SpeedChangeToast : Toast
+ {
+ public SpeedChangeToast(OsuConfigManager config, double delta)
+ : base(CommonStrings.Beatmaps, ToastStrings.SpeedChanged, config.LookupKeyBindings(GlobalAction.IncreaseSpeed) + " / " + config.LookupKeyBindings(GlobalAction.DecreaseSpeed))
+ {
+ }
+ }
+}
diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs
index e1447b284ad4..7eb2be9100ed 100644
--- a/osu.Game/Screens/Select/SongSelect.cs
+++ b/osu.Game/Screens/Select/SongSelect.cs
@@ -30,6 +30,7 @@
using osu.Game.Input.Bindings;
using osu.Game.Overlays;
using osu.Game.Overlays.Mods;
+using osu.Game.Overlays.OSD;
using osu.Game.Rulesets;
using osu.Game.Rulesets.Mods;
using osu.Game.Screens.Backgrounds;
@@ -151,6 +152,12 @@ public abstract partial class SongSelect : ScreenWithBeatmapBackground, IKeyBind
private bool usedPitchMods;
+ [Resolved]
+ private OnScreenDisplay? onScreenDisplay { get; set; }
+
+ [Resolved]
+ private OsuConfigManager? config { get; set; }
+
[BackgroundDependencyLoader(true)]
private void load(AudioManager audio, OsuColour colours, ManageCollectionsDialog? manageCollectionsDialog, DifficultyRecommender? recommender, OsuConfigManager config)
{
@@ -819,7 +826,7 @@ public override bool OnBackButton()
public void ChangeSpeed(double delta)
{
// Mod Change from 0.95 DC to 1.0 none to 1.05 DT/NC ?
-
+ onScreenDisplay?.Display(new SpeedChangeToast(config!, delta));
if (game == null) return;
ModNightcore modNc = (ModNightcore)((MultiMod)game.AvailableMods.Value[ModType.DifficultyIncrease].First(mod => mod is MultiMod multiMod && multiMod.Mods.Count(modType => modType is ModNightcore) > 0)).Mods.First(mod => mod is ModNightcore);
@@ -1135,17 +1142,10 @@ public void ClearScores(BeatmapInfo? beatmapInfo)
public virtual bool OnPressed(KeyBindingPressEvent e)
{
- if (e.Repeat)
- return false;
-
if (!this.IsCurrentScreen()) return false;
switch (e.Action)
{
- case GlobalAction.Select:
- FinaliseSelection();
- return true;
-
case GlobalAction.IncreaseSpeed:
ChangeSpeed(0.05);
return true;
@@ -1155,6 +1155,16 @@ public virtual bool OnPressed(KeyBindingPressEvent e)
return true;
}
+ if (e.Repeat)
+ return false;
+
+ switch (e.Action)
+ {
+ case GlobalAction.Select:
+ FinaliseSelection();
+ return true;
+ }
+
return false;
}