diff --git a/osu.Game/Localisation/MultiplayerMatchStrings.cs b/osu.Game/Localisation/MultiplayerMatchStrings.cs
index 95c7168a09..8c9e76d722 100644
--- a/osu.Game/Localisation/MultiplayerMatchStrings.cs
+++ b/osu.Game/Localisation/MultiplayerMatchStrings.cs
@@ -24,6 +24,21 @@ namespace osu.Game.Localisation
///
public static LocalisableString StartMatchWithCountdown(string humanReadableTime) => new TranslatableString(getKey(@"start_match_width_countdown"), @"Start match in {0}", humanReadableTime);
+ ///
+ /// "Choose the mods which all players should play with."
+ ///
+ public static LocalisableString RequiredModsButtonTooltip => new TranslatableString(getKey(@"required_mods_button_tooltip"), @"Choose the mods which all players should play with.");
+
+ ///
+ /// "Each player can choose their preferred mods from a selected list."
+ ///
+ public static LocalisableString FreeModsButtonTooltip => new TranslatableString(getKey(@"free_mods_button_tooltip"), @"Each player can choose their preferred mods from a selected list.");
+
+ ///
+ /// "Each player can choose their preferred difficulty, ruleset and mods."
+ ///
+ public static LocalisableString FreestyleButtonTooltip => new TranslatableString(getKey(@"freestyle_button_tooltip"), @"Each player can choose their preferred difficulty, ruleset and mods.");
+
private static string getKey(string key) => $@"{prefix}:{key}";
}
}
diff --git a/osu.Game/Screens/OnlinePlay/FooterButtonFreeMods.cs b/osu.Game/Screens/OnlinePlay/FooterButtonFreeMods.cs
index 952b15a873..402f538716 100644
--- a/osu.Game/Screens/OnlinePlay/FooterButtonFreeMods.cs
+++ b/osu.Game/Screens/OnlinePlay/FooterButtonFreeMods.cs
@@ -18,6 +18,7 @@ using osu.Game.Graphics.UserInterface;
using osu.Game.Rulesets.Mods;
using osu.Game.Screens.Select;
using osuTK;
+using osu.Game.Localisation;
namespace osu.Game.Screens.OnlinePlay
{
@@ -95,6 +96,8 @@ namespace osu.Game.Screens.OnlinePlay
SelectedColour = colours.Yellow;
DeselectedColour = SelectedColour.Opacity(0.5f);
Text = @"freemods";
+
+ TooltipText = MultiplayerMatchStrings.FreeModsButtonTooltip;
}
protected override void LoadComplete()
diff --git a/osu.Game/Screens/OnlinePlay/FooterButtonFreeStyle.cs b/osu.Game/Screens/OnlinePlay/FooterButtonFreeStyle.cs
index cdfb73cee1..0e22b3d3fb 100644
--- a/osu.Game/Screens/OnlinePlay/FooterButtonFreeStyle.cs
+++ b/osu.Game/Screens/OnlinePlay/FooterButtonFreeStyle.cs
@@ -12,6 +12,7 @@ using osu.Framework.Graphics.UserInterface;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
using osu.Game.Screens.Select;
+using osu.Game.Localisation;
namespace osu.Game.Screens.OnlinePlay
{
@@ -72,6 +73,8 @@ namespace osu.Game.Screens.OnlinePlay
SelectedColour = colours.Yellow;
DeselectedColour = SelectedColour.Opacity(0.5f);
Text = @"freestyle";
+
+ TooltipText = MultiplayerMatchStrings.FreestyleButtonTooltip;
}
protected override void LoadComplete()
diff --git a/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs b/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs
index 9df01ead42..f6403c010e 100644
--- a/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs
+++ b/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs
@@ -21,6 +21,7 @@ using osu.Game.Rulesets.Mods;
using osu.Game.Screens.Select;
using osu.Game.Users;
using osu.Game.Utils;
+using osu.Game.Localisation;
namespace osu.Game.Screens.OnlinePlay
{
@@ -196,14 +197,16 @@ namespace osu.Game.Screens.OnlinePlay
IsValidMod = IsValidMod
};
- protected override IEnumerable<(FooterButton, OverlayContainer?)> CreateSongSelectFooterButtons()
+ protected override IEnumerable<(FooterButton button, OverlayContainer? overlay)> CreateSongSelectFooterButtons()
{
var baseButtons = base.CreateSongSelectFooterButtons().ToList();
+ baseButtons.Single(i => i.button is FooterButtonMods).button.TooltipText = MultiplayerMatchStrings.RequiredModsButtonTooltip;
+
freeModsFooterButton = new FooterButtonFreeMods(freeModSelect) { Current = FreeMods };
var freeStyleButton = new FooterButtonFreeStyle { Current = FreeStyle };
- baseButtons.InsertRange(baseButtons.FindIndex(b => b.Item1 is FooterButtonMods) + 1, new (FooterButton, OverlayContainer?)[]
+ baseButtons.InsertRange(baseButtons.FindIndex(b => b.button is FooterButtonMods) + 1, new (FooterButton, OverlayContainer?)[]
{
(freeModsFooterButton, null),
(freeStyleButton, null)
diff --git a/osu.Game/Screens/OnlinePlay/OnlinePlayStyleSelect.cs b/osu.Game/Screens/OnlinePlay/OnlinePlayStyleSelect.cs
index d1fcf94152..22290f8fed 100644
--- a/osu.Game/Screens/OnlinePlay/OnlinePlayStyleSelect.cs
+++ b/osu.Game/Screens/OnlinePlay/OnlinePlayStyleSelect.cs
@@ -45,7 +45,7 @@ namespace osu.Game.Screens.OnlinePlay
protected override FilterControl CreateFilterControl() => new DifficultySelectFilterControl(item);
- protected override IEnumerable<(FooterButton, OverlayContainer?)> CreateSongSelectFooterButtons()
+ protected override IEnumerable<(FooterButton button, OverlayContainer? overlay)> CreateSongSelectFooterButtons()
{
// Required to create the drawable components.
base.CreateSongSelectFooterButtons();
diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs
index dda7b568d2..c20dcb8593 100644
--- a/osu.Game/Screens/Select/SongSelect.cs
+++ b/osu.Game/Screens/Select/SongSelect.cs
@@ -415,7 +415,7 @@ namespace osu.Game.Screens.Select
/// Creates the buttons to be displayed in the footer.
///
/// A set of and an optional which the button opens when pressed.
- protected virtual IEnumerable<(FooterButton, OverlayContainer?)> CreateSongSelectFooterButtons() => new (FooterButton, OverlayContainer?)[]
+ protected virtual IEnumerable<(FooterButton button, OverlayContainer? overlay)> CreateSongSelectFooterButtons() => new (FooterButton, OverlayContainer?)[]
{
(ModsFooterButton = new FooterButtonMods { Current = Mods }, ModSelect),
(new FooterButtonRandom