diff --git a/osu.Game/Screens/Menu/ButtonSystem.cs b/osu.Game/Screens/Menu/ButtonSystem.cs
index af5df2f8ec..ce7856c5a9 100644
--- a/osu.Game/Screens/Menu/ButtonSystem.cs
+++ b/osu.Game/Screens/Menu/ButtonSystem.cs
@@ -180,19 +180,21 @@ namespace osu.Game.Screens.Menu
State = MenuState.TopLevel;
}
- private void onOsuLogo()
+ private bool onOsuLogo()
{
switch (state)
{
+ default:
+ return true;
case MenuState.Initial:
State = MenuState.TopLevel;
- return;
+ return true;
case MenuState.TopLevel:
buttonsTopLevel.First().TriggerOnClick();
- return;
+ return false;
case MenuState.Play:
buttonsPlay.First().TriggerOnClick();
- return;
+ return false;
}
}
diff --git a/osu.Game/Screens/Menu/OsuLogo.cs b/osu.Game/Screens/Menu/OsuLogo.cs
index 2679368099..9ca12702e5 100644
--- a/osu.Game/Screens/Menu/OsuLogo.cs
+++ b/osu.Game/Screens/Menu/OsuLogo.cs
@@ -48,7 +48,10 @@ namespace osu.Game.Screens.Menu
private readonly Triangles triangles;
- public Action Action;
+ ///
+ /// Return value decides whether the logo should play its own sample for the click action.
+ ///
+ public Func Action;
public float SizeForFlow => logo == null ? 0 : logo.DrawSize.X * logo.Scale.X * logoBounceContainer.Scale.X * logoHoverContainer.Scale.X * 0.74f;
@@ -354,13 +357,12 @@ namespace osu.Game.Screens.Menu
{
if (!interactive) return false;
- sampleClick.Play();
+ if (Action?.Invoke() ?? true)
+ sampleClick.Play();
flashLayer.ClearTransforms();
flashLayer.Alpha = 0.4f;
flashLayer.FadeOut(1500, Easing.OutExpo);
-
- Action?.Invoke();
return true;
}
diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs
index 24a7b3db90..fcf459182f 100644
--- a/osu.Game/Screens/Select/SongSelect.cs
+++ b/osu.Game/Screens/Select/SongSelect.cs
@@ -332,7 +332,11 @@ namespace osu.Game.Screens.Select
logo.FadeIn(logo_transition, Easing.OutQuint);
logo.ScaleTo(0.4f, logo_transition, Easing.OutQuint);
- logo.Action = () => carouselRaisedStart();
+ logo.Action = () =>
+ {
+ carouselRaisedStart();
+ return true;
+ };
}
protected override void LogoExiting(OsuLogo logo)