From 3b58f6a7e78d8244a6e60bf8b27078c84845fb3c Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Thu, 21 Dec 2023 21:07:12 -0500
Subject: [PATCH 01/21] Implement difficulty statistics
---
global.json | 8 +-
.../Drawables/DifficultyIconTooltip.cs | 100 +++++++++++++++++-
2 files changed, 103 insertions(+), 5 deletions(-)
diff --git a/global.json b/global.json
index 5dcd5f425a..7835999220 100644
--- a/global.json
+++ b/global.json
@@ -1,7 +1,7 @@
{
"sdk": {
- "version": "6.0.100",
- "rollForward": "latestFeature"
+ "version": "6.0.0",
+ "rollForward": "latestFeature",
+ "allowPrerelease": true
}
-}
-
+}
\ No newline at end of file
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index 3fa24bcc3e..7ea2c6a0a2 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -3,6 +3,7 @@
#nullable disable
+using System;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
@@ -19,6 +20,13 @@ namespace osu.Game.Beatmaps.Drawables
{
private OsuSpriteText difficultyName;
private StarRatingDisplay starRating;
+ private OsuSpriteText overallDifficulty;
+ private OsuSpriteText drainRate;
+ private OsuSpriteText circleSize;
+ private OsuSpriteText approachRate;
+ private OsuSpriteText BPM;
+ private OsuSpriteText maxCombo;
+ private OsuSpriteText length;
[BackgroundDependencyLoader]
private void load(OsuColour colours)
@@ -35,6 +43,7 @@ namespace osu.Game.Beatmaps.Drawables
Colour = colours.Gray3,
RelativeSizeAxes = Axes.Both
},
+ // Headers
new FillFlowContainer
{
AutoSizeAxes = Axes.Both,
@@ -55,6 +64,84 @@ namespace osu.Game.Beatmaps.Drawables
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
+ },
+ // Difficulty stats
+ new FillFlowContainer()
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ AutoSizeAxes = Axes.Both,
+ Direction = FillDirection.Horizontal,
+ Spacing = new Vector2(5),
+ Children = new Drawable[]
+ {
+ new OsuSpriteText
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold),
+ },
+ overallDifficulty = new OsuSpriteText
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Font = OsuFont.GetFont(size: 14),
+ },
+ drainRate = new OsuSpriteText
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Font = OsuFont.GetFont(size: 14),
+ },
+ circleSize = new OsuSpriteText
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Font = OsuFont.GetFont(size: 14),
+ },
+ approachRate = new OsuSpriteText
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Font = OsuFont.GetFont(size: 14),
+ },
+ }
+ },
+ // Misc stats
+ new FillFlowContainer()
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ AutoSizeAxes = Axes.Both,
+ Direction = FillDirection.Horizontal,
+ Spacing = new Vector2(5),
+ Children = new Drawable[]
+ {
+ new OsuSpriteText
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold),
+ },
+ length = new OsuSpriteText
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Font = OsuFont.GetFont(size: 14),
+ },
+ BPM = new OsuSpriteText
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Font = OsuFont.GetFont(size: 14),
+ },
+ maxCombo = new OsuSpriteText
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Font = OsuFont.GetFont(size: 14),
+ },
+ }
}
}
}
@@ -68,10 +155,21 @@ namespace osu.Game.Beatmaps.Drawables
if (displayedContent != null)
starRating.Current.UnbindFrom(displayedContent.Difficulty);
+ // Header row
displayedContent = content;
-
starRating.Current.BindTarget = displayedContent.Difficulty;
difficultyName.Text = displayedContent.BeatmapInfo.DifficultyName;
+
+ // Difficulty row
+ overallDifficulty.Text = "OD: " + displayedContent.BeatmapInfo.Difficulty.OverallDifficulty.ToString("0.##");
+ drainRate.Text = "| HP: " + displayedContent.BeatmapInfo.Difficulty.DrainRate.ToString("0.##");
+ circleSize.Text = "| CS: " + displayedContent.BeatmapInfo.Difficulty.CircleSize.ToString("0.##");
+ approachRate.Text = "| AR: " + displayedContent.BeatmapInfo.Difficulty.ApproachRate.ToString("0.##");
+
+ // Misc row
+ length.Text = "Length: " + TimeSpan.FromMilliseconds(displayedContent.BeatmapInfo.Length).ToString("mm\\:ss");
+ BPM.Text = "| BPM: " + displayedContent.BeatmapInfo.BPM;
+ maxCombo.Text = "| Max Combo: " + displayedContent.BeatmapInfo.TotalObjectCount;
}
public void Move(Vector2 pos) => Position = pos;
From 803329c5d8aa3a73ef9a58875adb8255f241a0ec Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Fri, 22 Dec 2023 15:58:41 -0500
Subject: [PATCH 02/21] rollback my accidental global.json change
---
global.json | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/global.json b/global.json
index 7835999220..d6c2c37f77 100644
--- a/global.json
+++ b/global.json
@@ -1,7 +1,6 @@
{
"sdk": {
- "version": "6.0.0",
- "rollForward": "latestFeature",
- "allowPrerelease": true
+ "version": "6.0.100",
+ "rollForward": "latestFeature"
}
}
\ No newline at end of file
From f7c1e66165b5415a3779961f852677fca073c3d5 Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Fri, 22 Dec 2023 17:28:02 -0500
Subject: [PATCH 03/21] Make the difficulty stats change based on the currently
applied mods
---
osu.Game/Beatmaps/Drawables/DifficultyIcon.cs | 10 ++-
.../Drawables/DifficultyIconTooltip.cs | 61 ++++++++++++++-----
.../OnlinePlay/DrawableRoomPlaylistItem.cs | 2 +-
3 files changed, 55 insertions(+), 18 deletions(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
index 1665ec52fa..44981003f2 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
@@ -14,6 +14,7 @@ using osu.Framework.Graphics.UserInterface;
using osu.Game.Graphics;
using osu.Game.Graphics.Containers;
using osu.Game.Rulesets;
+using osu.Game.Rulesets.Mods;
using osuTK;
using osuTK.Graphics;
@@ -39,6 +40,8 @@ namespace osu.Game.Beatmaps.Drawables
private readonly IRulesetInfo ruleset;
+ private readonly Mod[]? mods;
+
private Drawable background = null!;
private readonly Container iconContainer;
@@ -58,11 +61,14 @@ namespace osu.Game.Beatmaps.Drawables
/// Creates a new . Will use provided beatmap's for initial value.
///
/// The beatmap to be displayed in the tooltip, and to be used for the initial star rating value.
+ /// The mods type beat
/// An optional ruleset to be used for the icon display, in place of the beatmap's ruleset.
- public DifficultyIcon(IBeatmapInfo beatmap, IRulesetInfo? ruleset = null)
+ public DifficultyIcon(IBeatmapInfo beatmap, IRulesetInfo? ruleset = null, Mod[]? mods = null)
: this(ruleset ?? beatmap.Ruleset)
{
this.beatmap = beatmap;
+ this.mods = mods;
+
Current.Value = new StarDifficulty(beatmap.StarRating, 0);
}
@@ -128,6 +134,6 @@ namespace osu.Game.Beatmaps.Drawables
GetCustomTooltip() => new DifficultyIconTooltip();
DifficultyIconTooltipContent IHasCustomTooltip.
- TooltipContent => (ShowTooltip && beatmap != null ? new DifficultyIconTooltipContent(beatmap, Current) : null)!;
+ TooltipContent => (ShowTooltip && beatmap != null ? new DifficultyIconTooltipContent(beatmap, Current, ruleset, mods) : null)!;
}
}
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index 7ea2c6a0a2..0f5c94ac1d 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -4,6 +4,7 @@
#nullable disable
using System;
+using System.Linq;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
@@ -12,6 +13,8 @@ using osu.Framework.Graphics.Cursor;
using osu.Framework.Graphics.Shapes;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
+using osu.Game.Rulesets;
+using osu.Game.Rulesets.Mods;
using osuTK;
namespace osu.Game.Beatmaps.Drawables
@@ -24,7 +27,7 @@ namespace osu.Game.Beatmaps.Drawables
private OsuSpriteText drainRate;
private OsuSpriteText circleSize;
private OsuSpriteText approachRate;
- private OsuSpriteText BPM;
+ private OsuSpriteText bpm;
private OsuSpriteText maxCombo;
private OsuSpriteText length;
@@ -66,7 +69,7 @@ namespace osu.Game.Beatmaps.Drawables
Origin = Anchor.Centre,
},
// Difficulty stats
- new FillFlowContainer()
+ new FillFlowContainer
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
@@ -81,7 +84,7 @@ namespace osu.Game.Beatmaps.Drawables
Origin = Anchor.Centre,
Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold),
},
- overallDifficulty = new OsuSpriteText
+ circleSize = new OsuSpriteText
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
@@ -93,13 +96,13 @@ namespace osu.Game.Beatmaps.Drawables
Origin = Anchor.Centre,
Font = OsuFont.GetFont(size: 14),
},
- circleSize = new OsuSpriteText
+ approachRate = new OsuSpriteText
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Font = OsuFont.GetFont(size: 14),
},
- approachRate = new OsuSpriteText
+ overallDifficulty = new OsuSpriteText
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
@@ -108,7 +111,7 @@ namespace osu.Game.Beatmaps.Drawables
}
},
// Misc stats
- new FillFlowContainer()
+ new FillFlowContainer
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
@@ -129,7 +132,7 @@ namespace osu.Game.Beatmaps.Drawables
Origin = Anchor.Centre,
Font = OsuFont.GetFont(size: 14),
},
- BPM = new OsuSpriteText
+ bpm = new OsuSpriteText
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
@@ -155,20 +158,44 @@ namespace osu.Game.Beatmaps.Drawables
if (displayedContent != null)
starRating.Current.UnbindFrom(displayedContent.Difficulty);
- // Header row
displayedContent = content;
+
+ // Header row
starRating.Current.BindTarget = displayedContent.Difficulty;
difficultyName.Text = displayedContent.BeatmapInfo.DifficultyName;
+ double rate = 1;
+
+ if (displayedContent.Mods != null)
+ {
+ foreach (var mod in displayedContent.Mods.OfType())
+ rate = mod.ApplyToRate(0, rate);
+ }
+
+ double bpmAdjusted = displayedContent.BeatmapInfo.BPM * rate;
+
+ BeatmapDifficulty originalDifficulty = new BeatmapDifficulty(displayedContent.BeatmapInfo.Difficulty);
+
+ if (displayedContent.Mods != null)
+ {
+ foreach (var mod in displayedContent.Mods.OfType())
+ {
+ mod.ApplyToDifficulty(originalDifficulty);
+ }
+ }
+
+ Ruleset ruleset = displayedContent.Ruleset.CreateInstance();
+ BeatmapDifficulty adjustedDifficulty = ruleset.GetRateAdjustedDisplayDifficulty(originalDifficulty, rate);
+
// Difficulty row
- overallDifficulty.Text = "OD: " + displayedContent.BeatmapInfo.Difficulty.OverallDifficulty.ToString("0.##");
- drainRate.Text = "| HP: " + displayedContent.BeatmapInfo.Difficulty.DrainRate.ToString("0.##");
- circleSize.Text = "| CS: " + displayedContent.BeatmapInfo.Difficulty.CircleSize.ToString("0.##");
- approachRate.Text = "| AR: " + displayedContent.BeatmapInfo.Difficulty.ApproachRate.ToString("0.##");
+ circleSize.Text = "CS: " + adjustedDifficulty.CircleSize.ToString("0.##");
+ drainRate.Text = "| HP: " + adjustedDifficulty.DrainRate.ToString("0.##");
+ approachRate.Text = "| AR: " + adjustedDifficulty.ApproachRate.ToString("0.##");
+ overallDifficulty.Text = "| OD: " + adjustedDifficulty.OverallDifficulty.ToString("0.##");
// Misc row
- length.Text = "Length: " + TimeSpan.FromMilliseconds(displayedContent.BeatmapInfo.Length).ToString("mm\\:ss");
- BPM.Text = "| BPM: " + displayedContent.BeatmapInfo.BPM;
+ length.Text = "Length: " + TimeSpan.FromMilliseconds(displayedContent.BeatmapInfo.Length / rate).ToString("mm\\:ss");
+ bpm.Text = "| BPM: " + bpmAdjusted;
maxCombo.Text = "| Max Combo: " + displayedContent.BeatmapInfo.TotalObjectCount;
}
@@ -183,11 +210,15 @@ namespace osu.Game.Beatmaps.Drawables
{
public readonly IBeatmapInfo BeatmapInfo;
public readonly IBindable Difficulty;
+ public readonly IRulesetInfo Ruleset;
+ public readonly Mod[] Mods;
- public DifficultyIconTooltipContent(IBeatmapInfo beatmapInfo, IBindable difficulty)
+ public DifficultyIconTooltipContent(IBeatmapInfo beatmapInfo, IBindable difficulty, IRulesetInfo rulesetInfo, Mod[] mods)
{
BeatmapInfo = beatmapInfo;
Difficulty = difficulty;
+ Ruleset = rulesetInfo;
+ Mods = mods;
}
}
}
diff --git a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
index 8f405399a7..eb23ed6f8f 100644
--- a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
+++ b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
@@ -283,7 +283,7 @@ namespace osu.Game.Screens.OnlinePlay
}
if (beatmap != null)
- difficultyIconContainer.Child = new DifficultyIcon(beatmap, ruleset) { Size = new Vector2(icon_height) };
+ difficultyIconContainer.Child = new DifficultyIcon(beatmap, ruleset, requiredMods) { Size = new Vector2(icon_height) };
else
difficultyIconContainer.Clear();
From d2efa2e56a34a28a2656ca30885046aa33cd06f7 Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Sun, 14 Jan 2024 15:47:50 -0500
Subject: [PATCH 04/21] peppy said he prefers the version without pipes so ill
remove the pipes
---
osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index 0f5c94ac1d..a4ba2a27f6 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -189,14 +189,14 @@ namespace osu.Game.Beatmaps.Drawables
// Difficulty row
circleSize.Text = "CS: " + adjustedDifficulty.CircleSize.ToString("0.##");
- drainRate.Text = "| HP: " + adjustedDifficulty.DrainRate.ToString("0.##");
- approachRate.Text = "| AR: " + adjustedDifficulty.ApproachRate.ToString("0.##");
- overallDifficulty.Text = "| OD: " + adjustedDifficulty.OverallDifficulty.ToString("0.##");
+ drainRate.Text = " HP: " + adjustedDifficulty.DrainRate.ToString("0.##");
+ approachRate.Text = " AR: " + adjustedDifficulty.ApproachRate.ToString("0.##");
+ overallDifficulty.Text = " OD: " + adjustedDifficulty.OverallDifficulty.ToString("0.##");
// Misc row
length.Text = "Length: " + TimeSpan.FromMilliseconds(displayedContent.BeatmapInfo.Length / rate).ToString("mm\\:ss");
- bpm.Text = "| BPM: " + bpmAdjusted;
- maxCombo.Text = "| Max Combo: " + displayedContent.BeatmapInfo.TotalObjectCount;
+ bpm.Text = " BPM: " + bpmAdjusted;
+ maxCombo.Text = " Max Combo: " + displayedContent.BeatmapInfo.TotalObjectCount;
}
public void Move(Vector2 pos) => Position = pos;
From 0237c9c6d712ee07a9f877b589e80bcf53591045 Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Sun, 14 Jan 2024 15:57:16 -0500
Subject: [PATCH 05/21] peppy said he prefers the version without pipes so ill
remove the pipes
---
global.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/global.json b/global.json
index d6c2c37f77..5dcd5f425a 100644
--- a/global.json
+++ b/global.json
@@ -3,4 +3,5 @@
"version": "6.0.100",
"rollForward": "latestFeature"
}
-}
\ No newline at end of file
+}
+
From b6422bc8bdb88a5b19b41992fb90bec6a966368d Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Wed, 17 Jan 2024 09:07:17 -0500
Subject: [PATCH 06/21] Apply suggested changes
- Change difficultyicon mods parameter docstring to be more professional
- Add a parameter for controlling whether the difficulty statistics show or not. Defaults to false
- Round the BPM in the tooltip to make sure it displays correctly
---
osu.Game/Beatmaps/Drawables/DifficultyIcon.cs | 10 ++++--
.../Drawables/DifficultyIconTooltip.cs | 34 ++++++++++---------
.../OnlinePlay/DrawableRoomPlaylistItem.cs | 2 +-
3 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
index 44981003f2..9c2a435cb0 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
@@ -42,6 +42,8 @@ namespace osu.Game.Beatmaps.Drawables
private readonly Mod[]? mods;
+ private readonly bool showTooltip;
+
private Drawable background = null!;
private readonly Container iconContainer;
@@ -61,13 +63,15 @@ namespace osu.Game.Beatmaps.Drawables
/// Creates a new . Will use provided beatmap's for initial value.
///
/// The beatmap to be displayed in the tooltip, and to be used for the initial star rating value.
- /// The mods type beat
+ /// An array of mods to account for in the calculations
/// An optional ruleset to be used for the icon display, in place of the beatmap's ruleset.
- public DifficultyIcon(IBeatmapInfo beatmap, IRulesetInfo? ruleset = null, Mod[]? mods = null)
+ /// Whether to display a tooltip on hover. Defaults to false.
+ public DifficultyIcon(IBeatmapInfo beatmap, IRulesetInfo? ruleset = null, Mod[]? mods = null, bool showTooltip = false)
: this(ruleset ?? beatmap.Ruleset)
{
this.beatmap = beatmap;
this.mods = mods;
+ this.showTooltip = showTooltip;
Current.Value = new StarDifficulty(beatmap.StarRating, 0);
}
@@ -134,6 +138,6 @@ namespace osu.Game.Beatmaps.Drawables
GetCustomTooltip() => new DifficultyIconTooltip();
DifficultyIconTooltipContent IHasCustomTooltip.
- TooltipContent => (ShowTooltip && beatmap != null ? new DifficultyIconTooltipContent(beatmap, Current, ruleset, mods) : null)!;
+ TooltipContent => (ShowTooltip && beatmap != null ? new DifficultyIconTooltipContent(beatmap, Current, ruleset, mods, showTooltip) : null)!;
}
}
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index a4ba2a27f6..c5e276e6b4 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -31,6 +31,9 @@ namespace osu.Game.Beatmaps.Drawables
private OsuSpriteText maxCombo;
private OsuSpriteText length;
+ private FillFlowContainer difficultyFillFlowContainer;
+ private FillFlowContainer miscFillFlowContainer;
+
[BackgroundDependencyLoader]
private void load(OsuColour colours)
{
@@ -69,21 +72,16 @@ namespace osu.Game.Beatmaps.Drawables
Origin = Anchor.Centre,
},
// Difficulty stats
- new FillFlowContainer
+ difficultyFillFlowContainer = new FillFlowContainer
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
+ Alpha = 0,
AutoSizeAxes = Axes.Both,
Direction = FillDirection.Horizontal,
Spacing = new Vector2(5),
Children = new Drawable[]
{
- new OsuSpriteText
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold),
- },
circleSize = new OsuSpriteText
{
Anchor = Anchor.Centre,
@@ -111,21 +109,16 @@ namespace osu.Game.Beatmaps.Drawables
}
},
// Misc stats
- new FillFlowContainer
+ miscFillFlowContainer = new FillFlowContainer
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
+ Alpha = 0,
AutoSizeAxes = Axes.Both,
Direction = FillDirection.Horizontal,
Spacing = new Vector2(5),
Children = new Drawable[]
{
- new OsuSpriteText
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold),
- },
length = new OsuSpriteText
{
Anchor = Anchor.Centre,
@@ -164,6 +157,13 @@ namespace osu.Game.Beatmaps.Drawables
starRating.Current.BindTarget = displayedContent.Difficulty;
difficultyName.Text = displayedContent.BeatmapInfo.DifficultyName;
+ // Don't show difficulty stats if showTooltip is false
+ if (!displayedContent.ShowTooltip) return;
+
+ // Show the difficulty stats if showTooltip is true
+ difficultyFillFlowContainer.Show();
+ miscFillFlowContainer.Show();
+
double rate = 1;
if (displayedContent.Mods != null)
@@ -195,7 +195,7 @@ namespace osu.Game.Beatmaps.Drawables
// Misc row
length.Text = "Length: " + TimeSpan.FromMilliseconds(displayedContent.BeatmapInfo.Length / rate).ToString("mm\\:ss");
- bpm.Text = " BPM: " + bpmAdjusted;
+ bpm.Text = " BPM: " + Math.Round(bpmAdjusted, 0);
maxCombo.Text = " Max Combo: " + displayedContent.BeatmapInfo.TotalObjectCount;
}
@@ -212,13 +212,15 @@ namespace osu.Game.Beatmaps.Drawables
public readonly IBindable Difficulty;
public readonly IRulesetInfo Ruleset;
public readonly Mod[] Mods;
+ public readonly bool ShowTooltip;
- public DifficultyIconTooltipContent(IBeatmapInfo beatmapInfo, IBindable difficulty, IRulesetInfo rulesetInfo, Mod[] mods)
+ public DifficultyIconTooltipContent(IBeatmapInfo beatmapInfo, IBindable difficulty, IRulesetInfo rulesetInfo, Mod[] mods, bool showTooltip = false)
{
BeatmapInfo = beatmapInfo;
Difficulty = difficulty;
Ruleset = rulesetInfo;
Mods = mods;
+ ShowTooltip = showTooltip;
}
}
}
diff --git a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
index eb23ed6f8f..2a6387871f 100644
--- a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
+++ b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
@@ -283,7 +283,7 @@ namespace osu.Game.Screens.OnlinePlay
}
if (beatmap != null)
- difficultyIconContainer.Child = new DifficultyIcon(beatmap, ruleset, requiredMods) { Size = new Vector2(icon_height) };
+ difficultyIconContainer.Child = new DifficultyIcon(beatmap, ruleset, requiredMods, true) { Size = new Vector2(icon_height) };
else
difficultyIconContainer.Clear();
From 9a6541356eb32899ffc54bd1db2a151e3db5b42e Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Wed, 17 Jan 2024 13:31:23 -0500
Subject: [PATCH 07/21] Refactor the extended tooltip variables to be more
descriptive
---
osu.Game/Beatmaps/Drawables/DifficultyIcon.cs | 10 +++++-----
osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs | 12 ++++++------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
index 9c2a435cb0..7a9b2fe389 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
@@ -42,7 +42,7 @@ namespace osu.Game.Beatmaps.Drawables
private readonly Mod[]? mods;
- private readonly bool showTooltip;
+ private readonly bool showExtendedTooltip;
private Drawable background = null!;
@@ -65,13 +65,13 @@ namespace osu.Game.Beatmaps.Drawables
/// The beatmap to be displayed in the tooltip, and to be used for the initial star rating value.
/// An array of mods to account for in the calculations
/// An optional ruleset to be used for the icon display, in place of the beatmap's ruleset.
- /// Whether to display a tooltip on hover. Defaults to false.
- public DifficultyIcon(IBeatmapInfo beatmap, IRulesetInfo? ruleset = null, Mod[]? mods = null, bool showTooltip = false)
+ /// Whether to include the difficulty stats in the tooltip or not. Defaults to false
+ public DifficultyIcon(IBeatmapInfo beatmap, IRulesetInfo? ruleset = null, Mod[]? mods = null, bool showExtendedTooltip = false)
: this(ruleset ?? beatmap.Ruleset)
{
this.beatmap = beatmap;
this.mods = mods;
- this.showTooltip = showTooltip;
+ this.showExtendedTooltip = showExtendedTooltip;
Current.Value = new StarDifficulty(beatmap.StarRating, 0);
}
@@ -138,6 +138,6 @@ namespace osu.Game.Beatmaps.Drawables
GetCustomTooltip() => new DifficultyIconTooltip();
DifficultyIconTooltipContent IHasCustomTooltip.
- TooltipContent => (ShowTooltip && beatmap != null ? new DifficultyIconTooltipContent(beatmap, Current, ruleset, mods, showTooltip) : null)!;
+ TooltipContent => (ShowTooltip && beatmap != null ? new DifficultyIconTooltipContent(beatmap, Current, ruleset, mods, showExtendedTooltip) : null)!;
}
}
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index c5e276e6b4..fae4100473 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -157,10 +157,10 @@ namespace osu.Game.Beatmaps.Drawables
starRating.Current.BindTarget = displayedContent.Difficulty;
difficultyName.Text = displayedContent.BeatmapInfo.DifficultyName;
- // Don't show difficulty stats if showTooltip is false
- if (!displayedContent.ShowTooltip) return;
+ // Don't show difficulty stats if showExtendedTooltip is false
+ if (!displayedContent.ShowExtendedTooltip) return;
- // Show the difficulty stats if showTooltip is true
+ // Show the difficulty stats if showExtendedTooltip is true
difficultyFillFlowContainer.Show();
miscFillFlowContainer.Show();
@@ -212,15 +212,15 @@ namespace osu.Game.Beatmaps.Drawables
public readonly IBindable Difficulty;
public readonly IRulesetInfo Ruleset;
public readonly Mod[] Mods;
- public readonly bool ShowTooltip;
+ public readonly bool ShowExtendedTooltip;
- public DifficultyIconTooltipContent(IBeatmapInfo beatmapInfo, IBindable difficulty, IRulesetInfo rulesetInfo, Mod[] mods, bool showTooltip = false)
+ public DifficultyIconTooltipContent(IBeatmapInfo beatmapInfo, IBindable difficulty, IRulesetInfo rulesetInfo, Mod[] mods, bool showExtendedTooltip = false)
{
BeatmapInfo = beatmapInfo;
Difficulty = difficulty;
Ruleset = rulesetInfo;
Mods = mods;
- ShowTooltip = showTooltip;
+ ShowExtendedTooltip = showExtendedTooltip;
}
}
}
From 060ea1d4fd82899991eae7b9cdd8468c18dc551c Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Wed, 17 Jan 2024 14:04:13 -0500
Subject: [PATCH 08/21] Switch from using a constructor argument to using a
public field for ShowExtendedTooltip
---
osu.Game/Beatmaps/Drawables/DifficultyIcon.cs | 13 +++++++------
.../Screens/OnlinePlay/DrawableRoomPlaylistItem.cs | 8 +++++++-
2 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
index 7a9b2fe389..fc78d6f322 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
@@ -36,14 +36,17 @@ namespace osu.Game.Beatmaps.Drawables
///
public bool ShowTooltip { get; set; } = true;
+ ///
+ /// Whether to include the difficulty stats in the tooltip or not. Defaults to false. Has no effect if is false.
+ ///
+ public bool ShowExtendedTooltip { get; set; }
+
private readonly IBeatmapInfo? beatmap;
private readonly IRulesetInfo ruleset;
private readonly Mod[]? mods;
- private readonly bool showExtendedTooltip;
-
private Drawable background = null!;
private readonly Container iconContainer;
@@ -65,13 +68,11 @@ namespace osu.Game.Beatmaps.Drawables
/// The beatmap to be displayed in the tooltip, and to be used for the initial star rating value.
/// An array of mods to account for in the calculations
/// An optional ruleset to be used for the icon display, in place of the beatmap's ruleset.
- /// Whether to include the difficulty stats in the tooltip or not. Defaults to false
- public DifficultyIcon(IBeatmapInfo beatmap, IRulesetInfo? ruleset = null, Mod[]? mods = null, bool showExtendedTooltip = false)
+ public DifficultyIcon(IBeatmapInfo beatmap, IRulesetInfo? ruleset = null, Mod[]? mods = null)
: this(ruleset ?? beatmap.Ruleset)
{
this.beatmap = beatmap;
this.mods = mods;
- this.showExtendedTooltip = showExtendedTooltip;
Current.Value = new StarDifficulty(beatmap.StarRating, 0);
}
@@ -138,6 +139,6 @@ namespace osu.Game.Beatmaps.Drawables
GetCustomTooltip() => new DifficultyIconTooltip();
DifficultyIconTooltipContent IHasCustomTooltip.
- TooltipContent => (ShowTooltip && beatmap != null ? new DifficultyIconTooltipContent(beatmap, Current, ruleset, mods, showExtendedTooltip) : null)!;
+ TooltipContent => (ShowTooltip && beatmap != null ? new DifficultyIconTooltipContent(beatmap, Current, ruleset, mods, ShowExtendedTooltip) : null)!;
}
}
diff --git a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
index 2a6387871f..8cfdc2e0e2 100644
--- a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
+++ b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
@@ -283,7 +283,13 @@ namespace osu.Game.Screens.OnlinePlay
}
if (beatmap != null)
- difficultyIconContainer.Child = new DifficultyIcon(beatmap, ruleset, requiredMods, true) { Size = new Vector2(icon_height) };
+ {
+ difficultyIconContainer.Child = new DifficultyIcon(beatmap, ruleset, requiredMods)
+ {
+ Size = new Vector2(icon_height),
+ ShowExtendedTooltip = true
+ };
+ }
else
difficultyIconContainer.Clear();
From d80a5d44eedca57e8be969d771152edb4fe4b229 Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Thu, 18 Jan 2024 03:17:37 -0500
Subject: [PATCH 09/21] Add tests for DifficultyIcon
---
.../Beatmaps/TestSceneDifficultyIcon.cs | 42 +++++++++++++++++++
1 file changed, 42 insertions(+)
create mode 100644 osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
diff --git a/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
new file mode 100644
index 0000000000..aa2543eea1
--- /dev/null
+++ b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
@@ -0,0 +1,42 @@
+// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
+// See the LICENCE file in the repository root for full licence text.
+
+#nullable disable
+
+using NUnit.Framework;
+using osu.Framework.Allocation;
+using osu.Framework.Audio;
+using osu.Framework.Platform;
+using osu.Game.Beatmaps.Drawables;
+using osu.Game.Rulesets;
+using osu.Game.Rulesets.Osu;
+using osu.Game.Tests.Beatmaps;
+
+namespace osu.Game.Tests.Visual.Beatmaps
+{
+ public partial class TestSceneDifficultyIcon : OsuTestScene
+ {
+ [Test]
+ public void createDifficultyIcon()
+ {
+ DifficultyIcon difficultyIcon = null;
+
+ AddStep("create difficulty icon", () =>
+ {
+ Child = difficultyIcon = new DifficultyIcon(new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo, new OsuRuleset().RulesetInfo)
+ {
+ ShowTooltip = true,
+ ShowExtendedTooltip = true
+ };
+ });
+
+ AddStep("hide extended tooltip", () => difficultyIcon.ShowExtendedTooltip = false);
+
+ AddStep("hide tooltip", () => difficultyIcon.ShowTooltip = false);
+
+ AddStep("show tooltip", () => difficultyIcon.ShowTooltip = true);
+
+ AddStep("show extended tooltip", () => difficultyIcon.ShowExtendedTooltip = true);
+ }
+ }
+}
From 5c70c786b4581d91c5b2d069e04b9d774cf79351 Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Thu, 18 Jan 2024 03:18:44 -0500
Subject: [PATCH 10/21] Fix extended tooltip content still being shown despite
ShowExtendedTooltip being false
---
osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index fae4100473..fe23b49346 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -158,7 +158,12 @@ namespace osu.Game.Beatmaps.Drawables
difficultyName.Text = displayedContent.BeatmapInfo.DifficultyName;
// Don't show difficulty stats if showExtendedTooltip is false
- if (!displayedContent.ShowExtendedTooltip) return;
+ if (!displayedContent.ShowExtendedTooltip)
+ {
+ difficultyFillFlowContainer.Hide();
+ miscFillFlowContainer.Hide();
+ return;
+ }
// Show the difficulty stats if showExtendedTooltip is true
difficultyFillFlowContainer.Show();
From 87369f8a808b29e3da0bde82027a439e763532dc Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Thu, 18 Jan 2024 11:16:03 -0500
Subject: [PATCH 11/21] Conform to code style & remove unused imports
---
osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
index aa2543eea1..79f9aec2e3 100644
--- a/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
+++ b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
@@ -4,11 +4,7 @@
#nullable disable
using NUnit.Framework;
-using osu.Framework.Allocation;
-using osu.Framework.Audio;
-using osu.Framework.Platform;
using osu.Game.Beatmaps.Drawables;
-using osu.Game.Rulesets;
using osu.Game.Rulesets.Osu;
using osu.Game.Tests.Beatmaps;
@@ -17,7 +13,7 @@ namespace osu.Game.Tests.Visual.Beatmaps
public partial class TestSceneDifficultyIcon : OsuTestScene
{
[Test]
- public void createDifficultyIcon()
+ public void CreateDifficultyIcon()
{
DifficultyIcon difficultyIcon = null;
From f12be60d8d33471fc8acb4ee54c369f4f4e928e8 Mon Sep 17 00:00:00 2001
From: Dean Herbert
Date: Mon, 22 Jan 2024 17:18:22 +0900
Subject: [PATCH 12/21] Make test actually test multiple icons
---
.../Beatmaps/TestSceneDifficultyIcon.cs | 39 +++++++++++++++++--
1 file changed, 35 insertions(+), 4 deletions(-)
diff --git a/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
index 79f9aec2e3..80320c138b 100644
--- a/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
+++ b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
@@ -4,27 +4,58 @@
#nullable disable
using NUnit.Framework;
+using osu.Framework.Graphics;
+using osu.Framework.Graphics.Containers;
+using osu.Framework.Utils;
using osu.Game.Beatmaps.Drawables;
using osu.Game.Rulesets.Osu;
using osu.Game.Tests.Beatmaps;
+using osuTK;
namespace osu.Game.Tests.Visual.Beatmaps
{
public partial class TestSceneDifficultyIcon : OsuTestScene
{
+ private FillFlowContainer fill;
+
+ protected override void LoadComplete()
+ {
+ base.LoadComplete();
+
+ Child = fill = new FillFlowContainer
+ {
+ AutoSizeAxes = Axes.Y,
+ Width = 300,
+ Direction = FillDirection.Full,
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ };
+ }
+
[Test]
public void CreateDifficultyIcon()
{
DifficultyIcon difficultyIcon = null;
- AddStep("create difficulty icon", () =>
+ AddRepeatStep("create difficulty icon", () =>
{
- Child = difficultyIcon = new DifficultyIcon(new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo, new OsuRuleset().RulesetInfo)
+ var rulesetInfo = new OsuRuleset().RulesetInfo;
+ var beatmapInfo = new TestBeatmap(rulesetInfo).BeatmapInfo;
+
+ beatmapInfo.Difficulty.ApproachRate = RNG.Next(0, 10);
+ beatmapInfo.Difficulty.CircleSize = RNG.Next(0, 10);
+ beatmapInfo.Difficulty.OverallDifficulty = RNG.Next(0, 10);
+ beatmapInfo.Difficulty.DrainRate = RNG.Next(0, 10);
+ beatmapInfo.StarRating = RNG.NextSingle(0, 10);
+ beatmapInfo.BPM = RNG.Next(60, 300);
+
+ fill.Add(difficultyIcon = new DifficultyIcon(beatmapInfo, rulesetInfo)
{
+ Scale = new Vector2(2),
ShowTooltip = true,
ShowExtendedTooltip = true
- };
- });
+ });
+ }, 10);
AddStep("hide extended tooltip", () => difficultyIcon.ShowExtendedTooltip = false);
From 2305a53a02b23185d83a9740ce876350adc711cc Mon Sep 17 00:00:00 2001
From: smallketchup82 <69545310+smallketchup82@users.noreply.github.com>
Date: Mon, 22 Jan 2024 08:59:37 -0500
Subject: [PATCH 13/21] Remove max combo reading & remove unnecessary commas
---
.../Drawables/DifficultyIconTooltip.cs | 26 +++++++------------
1 file changed, 9 insertions(+), 17 deletions(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index fe23b49346..7fe0080e89 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -28,7 +28,6 @@ namespace osu.Game.Beatmaps.Drawables
private OsuSpriteText circleSize;
private OsuSpriteText approachRate;
private OsuSpriteText bpm;
- private OsuSpriteText maxCombo;
private OsuSpriteText length;
private FillFlowContainer difficultyFillFlowContainer;
@@ -64,12 +63,12 @@ namespace osu.Game.Beatmaps.Drawables
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 16, weight: FontWeight.Bold),
+ Font = OsuFont.GetFont(size: 16, weight: FontWeight.Bold)
},
starRating = new StarRatingDisplay(default, StarRatingDisplaySize.Small)
{
Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
+ Origin = Anchor.Centre
},
// Difficulty stats
difficultyFillFlowContainer = new FillFlowContainer
@@ -86,26 +85,26 @@ namespace osu.Game.Beatmaps.Drawables
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14),
+ Font = OsuFont.GetFont(size: 14)
},
drainRate = new OsuSpriteText
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14),
+ Font = OsuFont.GetFont(size: 14)
},
approachRate = new OsuSpriteText
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14),
+ Font = OsuFont.GetFont(size: 14)
},
overallDifficulty = new OsuSpriteText
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14),
- },
+ Font = OsuFont.GetFont(size: 14)
+ }
}
},
// Misc stats
@@ -123,19 +122,13 @@ namespace osu.Game.Beatmaps.Drawables
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14),
+ Font = OsuFont.GetFont(size: 14)
},
bpm = new OsuSpriteText
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14),
- },
- maxCombo = new OsuSpriteText
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14),
+ Font = OsuFont.GetFont(size: 14)
},
}
}
@@ -201,7 +194,6 @@ namespace osu.Game.Beatmaps.Drawables
// Misc row
length.Text = "Length: " + TimeSpan.FromMilliseconds(displayedContent.BeatmapInfo.Length / rate).ToString("mm\\:ss");
bpm.Text = " BPM: " + Math.Round(bpmAdjusted, 0);
- maxCombo.Text = " Max Combo: " + displayedContent.BeatmapInfo.TotalObjectCount;
}
public void Move(Vector2 pos) => Position = pos;
From 64ba95bbd664964409224a8f589b473af7d6ca1e Mon Sep 17 00:00:00 2001
From: Dean Herbert
Date: Thu, 25 Jan 2024 21:11:33 +0900
Subject: [PATCH 14/21] Remove pointless comments
---
osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs | 8 --------
1 file changed, 8 deletions(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index 7fe0080e89..6caaab1508 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -48,7 +48,6 @@ namespace osu.Game.Beatmaps.Drawables
Colour = colours.Gray3,
RelativeSizeAxes = Axes.Both
},
- // Headers
new FillFlowContainer
{
AutoSizeAxes = Axes.Both,
@@ -70,7 +69,6 @@ namespace osu.Game.Beatmaps.Drawables
Anchor = Anchor.Centre,
Origin = Anchor.Centre
},
- // Difficulty stats
difficultyFillFlowContainer = new FillFlowContainer
{
Anchor = Anchor.Centre,
@@ -107,7 +105,6 @@ namespace osu.Game.Beatmaps.Drawables
}
}
},
- // Misc stats
miscFillFlowContainer = new FillFlowContainer
{
Anchor = Anchor.Centre,
@@ -146,11 +143,9 @@ namespace osu.Game.Beatmaps.Drawables
displayedContent = content;
- // Header row
starRating.Current.BindTarget = displayedContent.Difficulty;
difficultyName.Text = displayedContent.BeatmapInfo.DifficultyName;
- // Don't show difficulty stats if showExtendedTooltip is false
if (!displayedContent.ShowExtendedTooltip)
{
difficultyFillFlowContainer.Hide();
@@ -158,7 +153,6 @@ namespace osu.Game.Beatmaps.Drawables
return;
}
- // Show the difficulty stats if showExtendedTooltip is true
difficultyFillFlowContainer.Show();
miscFillFlowContainer.Show();
@@ -185,13 +179,11 @@ namespace osu.Game.Beatmaps.Drawables
Ruleset ruleset = displayedContent.Ruleset.CreateInstance();
BeatmapDifficulty adjustedDifficulty = ruleset.GetRateAdjustedDisplayDifficulty(originalDifficulty, rate);
- // Difficulty row
circleSize.Text = "CS: " + adjustedDifficulty.CircleSize.ToString("0.##");
drainRate.Text = " HP: " + adjustedDifficulty.DrainRate.ToString("0.##");
approachRate.Text = " AR: " + adjustedDifficulty.ApproachRate.ToString("0.##");
overallDifficulty.Text = " OD: " + adjustedDifficulty.OverallDifficulty.ToString("0.##");
- // Misc row
length.Text = "Length: " + TimeSpan.FromMilliseconds(displayedContent.BeatmapInfo.Length / rate).ToString("mm\\:ss");
bpm.Text = " BPM: " + Math.Round(bpmAdjusted, 0);
}
From 3c18efed0530c362ae363c84f5a5321c7e60eb3e Mon Sep 17 00:00:00 2001
From: Dean Herbert
Date: Thu, 25 Jan 2024 21:13:25 +0900
Subject: [PATCH 15/21] Remove transparency
---
osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs | 1 -
1 file changed, 1 deletion(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index 6caaab1508..fa07b150d5 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -44,7 +44,6 @@ namespace osu.Game.Beatmaps.Drawables
{
new Box
{
- Alpha = 0.9f,
Colour = colours.Gray3,
RelativeSizeAxes = Axes.Both
},
From aeac0a2a9d83c741b65c81e04ab445061d94324d Mon Sep 17 00:00:00 2001
From: Dean Herbert
Date: Thu, 25 Jan 2024 21:16:12 +0900
Subject: [PATCH 16/21] Nullability
---
.../Drawables/DifficultyIconTooltip.cs | 38 +++++++++----------
1 file changed, 18 insertions(+), 20 deletions(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index fa07b150d5..803618f15e 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -1,8 +1,6 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
-#nullable disable
-
using System;
using System.Linq;
using osu.Framework.Allocation;
@@ -21,17 +19,17 @@ namespace osu.Game.Beatmaps.Drawables
{
internal partial class DifficultyIconTooltip : VisibilityContainer, ITooltip
{
- private OsuSpriteText difficultyName;
- private StarRatingDisplay starRating;
- private OsuSpriteText overallDifficulty;
- private OsuSpriteText drainRate;
- private OsuSpriteText circleSize;
- private OsuSpriteText approachRate;
- private OsuSpriteText bpm;
- private OsuSpriteText length;
+ private OsuSpriteText difficultyName = null!;
+ private StarRatingDisplay starRating = null!;
+ private OsuSpriteText overallDifficulty = null!;
+ private OsuSpriteText drainRate = null!;
+ private OsuSpriteText circleSize = null!;
+ private OsuSpriteText approachRate = null!;
+ private OsuSpriteText bpm = null!;
+ private OsuSpriteText length = null!;
- private FillFlowContainer difficultyFillFlowContainer;
- private FillFlowContainer miscFillFlowContainer;
+ private FillFlowContainer difficultyFillFlowContainer = null!;
+ private FillFlowContainer miscFillFlowContainer = null!;
[BackgroundDependencyLoader]
private void load(OsuColour colours)
@@ -133,7 +131,7 @@ namespace osu.Game.Beatmaps.Drawables
};
}
- private DifficultyIconTooltipContent displayedContent;
+ private DifficultyIconTooltipContent? displayedContent;
public void SetContent(DifficultyIconTooltipContent content)
{
@@ -178,12 +176,12 @@ namespace osu.Game.Beatmaps.Drawables
Ruleset ruleset = displayedContent.Ruleset.CreateInstance();
BeatmapDifficulty adjustedDifficulty = ruleset.GetRateAdjustedDisplayDifficulty(originalDifficulty, rate);
- circleSize.Text = "CS: " + adjustedDifficulty.CircleSize.ToString("0.##");
- drainRate.Text = " HP: " + adjustedDifficulty.DrainRate.ToString("0.##");
- approachRate.Text = " AR: " + adjustedDifficulty.ApproachRate.ToString("0.##");
- overallDifficulty.Text = " OD: " + adjustedDifficulty.OverallDifficulty.ToString("0.##");
+ circleSize.Text = @"CS: " + adjustedDifficulty.CircleSize.ToString(@"0.##");
+ drainRate.Text = @" HP: " + adjustedDifficulty.DrainRate.ToString(@"0.##");
+ approachRate.Text = @" AR: " + adjustedDifficulty.ApproachRate.ToString(@"0.##");
+ overallDifficulty.Text = @" OD: " + adjustedDifficulty.OverallDifficulty.ToString(@"0.##");
- length.Text = "Length: " + TimeSpan.FromMilliseconds(displayedContent.BeatmapInfo.Length / rate).ToString("mm\\:ss");
+ length.Text = "Length: " + TimeSpan.FromMilliseconds(displayedContent.BeatmapInfo.Length / rate).ToString(@"mm\:ss");
bpm.Text = " BPM: " + Math.Round(bpmAdjusted, 0);
}
@@ -199,10 +197,10 @@ namespace osu.Game.Beatmaps.Drawables
public readonly IBeatmapInfo BeatmapInfo;
public readonly IBindable Difficulty;
public readonly IRulesetInfo Ruleset;
- public readonly Mod[] Mods;
+ public readonly Mod[]? Mods;
public readonly bool ShowExtendedTooltip;
- public DifficultyIconTooltipContent(IBeatmapInfo beatmapInfo, IBindable difficulty, IRulesetInfo rulesetInfo, Mod[] mods, bool showExtendedTooltip = false)
+ public DifficultyIconTooltipContent(IBeatmapInfo beatmapInfo, IBindable difficulty, IRulesetInfo rulesetInfo, Mod[]? mods, bool showExtendedTooltip = false)
{
BeatmapInfo = beatmapInfo;
Difficulty = difficulty;
From 50300adef86222ed1554f512dafe857cf25d2cf3 Mon Sep 17 00:00:00 2001
From: Dean Herbert
Date: Thu, 25 Jan 2024 21:17:29 +0900
Subject: [PATCH 17/21] Tidy things up
---
.../Drawables/DifficultyIconTooltip.cs | 44 +++----------------
1 file changed, 6 insertions(+), 38 deletions(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index 803618f15e..71366de654 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -76,30 +76,10 @@ namespace osu.Game.Beatmaps.Drawables
Spacing = new Vector2(5),
Children = new Drawable[]
{
- circleSize = new OsuSpriteText
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14)
- },
- drainRate = new OsuSpriteText
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14)
- },
- approachRate = new OsuSpriteText
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14)
- },
- overallDifficulty = new OsuSpriteText
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14)
- }
+ circleSize = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) },
+ drainRate = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) },
+ approachRate = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) },
+ overallDifficulty = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) }
}
},
miscFillFlowContainer = new FillFlowContainer
@@ -112,18 +92,8 @@ namespace osu.Game.Beatmaps.Drawables
Spacing = new Vector2(5),
Children = new Drawable[]
{
- length = new OsuSpriteText
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14)
- },
- bpm = new OsuSpriteText
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- Font = OsuFont.GetFont(size: 14)
- },
+ length = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) },
+ bpm = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) },
}
}
}
@@ -168,9 +138,7 @@ namespace osu.Game.Beatmaps.Drawables
if (displayedContent.Mods != null)
{
foreach (var mod in displayedContent.Mods.OfType())
- {
mod.ApplyToDifficulty(originalDifficulty);
- }
}
Ruleset ruleset = displayedContent.Ruleset.CreateInstance();
From 47db317df84862a68947c20e71dcfe87c552830f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bart=C5=82omiej=20Dach?=
Date: Thu, 22 Feb 2024 11:45:57 +0100
Subject: [PATCH 18/21] Enable NRT in `TestSceneDifficultyIcon`
---
osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
index 80320c138b..e544177d50 100644
--- a/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
+++ b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
@@ -1,8 +1,6 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
-#nullable disable
-
using NUnit.Framework;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
@@ -16,7 +14,7 @@ namespace osu.Game.Tests.Visual.Beatmaps
{
public partial class TestSceneDifficultyIcon : OsuTestScene
{
- private FillFlowContainer fill;
+ private FillFlowContainer fill = null!;
protected override void LoadComplete()
{
@@ -35,7 +33,7 @@ namespace osu.Game.Tests.Visual.Beatmaps
[Test]
public void CreateDifficultyIcon()
{
- DifficultyIcon difficultyIcon = null;
+ DifficultyIcon difficultyIcon = null!;
AddRepeatStep("create difficulty icon", () =>
{
From d06c67ad8f921b02990b954256c95c22c5e70f22 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bart=C5=82omiej=20Dach?=
Date: Thu, 22 Feb 2024 11:57:40 +0100
Subject: [PATCH 19/21] Substitute two jank interdependent bool flags for
single tri-state enums
---
.../Beatmaps/TestSceneDifficultyIcon.cs | 12 ++------
osu.Game/Beatmaps/Drawables/DifficultyIcon.cs | 29 ++++++++++++++-----
.../Drawables/DifficultyIconTooltip.cs | 11 ++++---
osu.Game/Overlays/BeatmapSet/BeatmapPicker.cs | 2 +-
.../OnlinePlay/DrawableRoomPlaylistItem.cs | 2 +-
.../Carousel/DrawableCarouselBeatmap.cs | 2 +-
6 files changed, 34 insertions(+), 24 deletions(-)
diff --git a/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
index e544177d50..6a226c2b8c 100644
--- a/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
+++ b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
@@ -50,18 +50,12 @@ namespace osu.Game.Tests.Visual.Beatmaps
fill.Add(difficultyIcon = new DifficultyIcon(beatmapInfo, rulesetInfo)
{
Scale = new Vector2(2),
- ShowTooltip = true,
- ShowExtendedTooltip = true
});
}, 10);
- AddStep("hide extended tooltip", () => difficultyIcon.ShowExtendedTooltip = false);
-
- AddStep("hide tooltip", () => difficultyIcon.ShowTooltip = false);
-
- AddStep("show tooltip", () => difficultyIcon.ShowTooltip = true);
-
- AddStep("show extended tooltip", () => difficultyIcon.ShowExtendedTooltip = true);
+ AddStep("no tooltip", () => difficultyIcon.TooltipType = DifficultyIconTooltipType.None);
+ AddStep("basic tooltip", () => difficultyIcon.TooltipType = DifficultyIconTooltipType.StarRating);
+ AddStep("extended tooltip", () => difficultyIcon.TooltipType = DifficultyIconTooltipType.Extended);
}
}
}
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
index 73073a8286..2e7f894d12 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs
@@ -32,14 +32,9 @@ namespace osu.Game.Beatmaps.Drawables
}
///
- /// Whether to display a tooltip on hover. Only works if a beatmap was provided at construction time.
+ /// Which type of tooltip to show. Only works if a beatmap was provided at construction time.
///
- public bool ShowTooltip { get; set; } = true;
-
- ///
- /// Whether to include the difficulty stats in the tooltip or not. Defaults to false. Has no effect if is false.
- ///
- public bool ShowExtendedTooltip { get; set; }
+ public DifficultyIconTooltipType TooltipType { get; set; } = DifficultyIconTooltipType.StarRating;
private readonly IBeatmapInfo? beatmap;
@@ -138,6 +133,24 @@ namespace osu.Game.Beatmaps.Drawables
GetCustomTooltip() => new DifficultyIconTooltip();
DifficultyIconTooltipContent IHasCustomTooltip.
- TooltipContent => (ShowTooltip && beatmap != null ? new DifficultyIconTooltipContent(beatmap, Current, ruleset, mods, ShowExtendedTooltip) : null)!;
+ TooltipContent => (TooltipType != DifficultyIconTooltipType.None && beatmap != null ? new DifficultyIconTooltipContent(beatmap, Current, ruleset, mods, TooltipType) : null)!;
+ }
+
+ public enum DifficultyIconTooltipType
+ {
+ ///
+ /// No tooltip.
+ ///
+ None,
+
+ ///
+ /// Star rating only.
+ ///
+ StarRating,
+
+ ///
+ /// Star rating, OD, HP, CS, AR, length, BPM, and max combo.
+ ///
+ Extended,
}
}
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index 71366de654..952f71332f 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -113,7 +113,7 @@ namespace osu.Game.Beatmaps.Drawables
starRating.Current.BindTarget = displayedContent.Difficulty;
difficultyName.Text = displayedContent.BeatmapInfo.DifficultyName;
- if (!displayedContent.ShowExtendedTooltip)
+ if (displayedContent.TooltipType == DifficultyIconTooltipType.StarRating)
{
difficultyFillFlowContainer.Hide();
miscFillFlowContainer.Hide();
@@ -166,15 +166,18 @@ namespace osu.Game.Beatmaps.Drawables
public readonly IBindable Difficulty;
public readonly IRulesetInfo Ruleset;
public readonly Mod[]? Mods;
- public readonly bool ShowExtendedTooltip;
+ public readonly DifficultyIconTooltipType TooltipType;
- public DifficultyIconTooltipContent(IBeatmapInfo beatmapInfo, IBindable difficulty, IRulesetInfo rulesetInfo, Mod[]? mods, bool showExtendedTooltip = false)
+ public DifficultyIconTooltipContent(IBeatmapInfo beatmapInfo, IBindable difficulty, IRulesetInfo rulesetInfo, Mod[]? mods, DifficultyIconTooltipType tooltipType)
{
+ if (tooltipType == DifficultyIconTooltipType.None)
+ throw new ArgumentOutOfRangeException(nameof(tooltipType), tooltipType, "Cannot instantiate a tooltip without a type");
+
BeatmapInfo = beatmapInfo;
Difficulty = difficulty;
Ruleset = rulesetInfo;
Mods = mods;
- ShowExtendedTooltip = showExtendedTooltip;
+ TooltipType = tooltipType;
}
}
}
diff --git a/osu.Game/Overlays/BeatmapSet/BeatmapPicker.cs b/osu.Game/Overlays/BeatmapSet/BeatmapPicker.cs
index 1f38e2ed6c..5f021803b0 100644
--- a/osu.Game/Overlays/BeatmapSet/BeatmapPicker.cs
+++ b/osu.Game/Overlays/BeatmapSet/BeatmapPicker.cs
@@ -297,7 +297,7 @@ namespace osu.Game.Overlays.BeatmapSet
},
icon = new DifficultyIcon(beatmapInfo, ruleset)
{
- ShowTooltip = false,
+ TooltipType = DifficultyIconTooltipType.None,
Current = { Value = new StarDifficulty(beatmapInfo.StarRating, 0) },
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
diff --git a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
index 44e91c6975..1b8e2d8be6 100644
--- a/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
+++ b/osu.Game/Screens/OnlinePlay/DrawableRoomPlaylistItem.cs
@@ -285,7 +285,7 @@ namespace osu.Game.Screens.OnlinePlay
difficultyIconContainer.Child = new DifficultyIcon(beatmap, ruleset, requiredMods)
{
Size = new Vector2(icon_height),
- ShowExtendedTooltip = true
+ TooltipType = DifficultyIconTooltipType.Extended,
};
}
else
diff --git a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs
index baf0a14062..01e58d4ab2 100644
--- a/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs
+++ b/osu.Game/Screens/Select/Carousel/DrawableCarouselBeatmap.cs
@@ -122,7 +122,7 @@ namespace osu.Game.Screens.Select.Carousel
{
difficultyIcon = new DifficultyIcon(beatmapInfo)
{
- ShowTooltip = false,
+ TooltipType = DifficultyIconTooltipType.None,
Scale = new Vector2(1.8f),
},
new FillFlowContainer
From 37400643605426647eb80097401002828ff0d7ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bart=C5=82omiej=20Dach?=
Date: Thu, 22 Feb 2024 11:59:55 +0100
Subject: [PATCH 20/21] Fix test scene not properly setting tooltip type on all
icons
---
.../Visual/Beatmaps/TestSceneDifficultyIcon.cs | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
index 6a226c2b8c..fb6bebe50d 100644
--- a/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
+++ b/osu.Game.Tests/Visual/Beatmaps/TestSceneDifficultyIcon.cs
@@ -2,6 +2,7 @@
// See the LICENCE file in the repository root for full licence text.
using NUnit.Framework;
+using osu.Framework.Extensions.IEnumerableExtensions;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Utils;
@@ -14,13 +15,13 @@ namespace osu.Game.Tests.Visual.Beatmaps
{
public partial class TestSceneDifficultyIcon : OsuTestScene
{
- private FillFlowContainer fill = null!;
+ private FillFlowContainer fill = null!;
protected override void LoadComplete()
{
base.LoadComplete();
- Child = fill = new FillFlowContainer
+ Child = fill = new FillFlowContainer
{
AutoSizeAxes = Axes.Y,
Width = 300,
@@ -33,8 +34,6 @@ namespace osu.Game.Tests.Visual.Beatmaps
[Test]
public void CreateDifficultyIcon()
{
- DifficultyIcon difficultyIcon = null!;
-
AddRepeatStep("create difficulty icon", () =>
{
var rulesetInfo = new OsuRuleset().RulesetInfo;
@@ -47,15 +46,15 @@ namespace osu.Game.Tests.Visual.Beatmaps
beatmapInfo.StarRating = RNG.NextSingle(0, 10);
beatmapInfo.BPM = RNG.Next(60, 300);
- fill.Add(difficultyIcon = new DifficultyIcon(beatmapInfo, rulesetInfo)
+ fill.Add(new DifficultyIcon(beatmapInfo, rulesetInfo)
{
Scale = new Vector2(2),
});
}, 10);
- AddStep("no tooltip", () => difficultyIcon.TooltipType = DifficultyIconTooltipType.None);
- AddStep("basic tooltip", () => difficultyIcon.TooltipType = DifficultyIconTooltipType.StarRating);
- AddStep("extended tooltip", () => difficultyIcon.TooltipType = DifficultyIconTooltipType.Extended);
+ AddStep("no tooltip", () => fill.ForEach(icon => icon.TooltipType = DifficultyIconTooltipType.None));
+ AddStep("basic tooltip", () => fill.ForEach(icon => icon.TooltipType = DifficultyIconTooltipType.StarRating));
+ AddStep("extended tooltip", () => fill.ForEach(icon => icon.TooltipType = DifficultyIconTooltipType.Extended));
}
}
}
From 7861125e7ac1dcd48c06f5ab005870b5c111c31c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bart=C5=82omiej=20Dach?=
Date: Thu, 22 Feb 2024 12:11:49 +0100
Subject: [PATCH 21/21] Swap AR and OD on tooltips
Matches everything else.
---
osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
index 952f71332f..1f3dcfee8c 100644
--- a/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
+++ b/osu.Game/Beatmaps/Drawables/DifficultyIconTooltip.cs
@@ -78,8 +78,8 @@ namespace osu.Game.Beatmaps.Drawables
{
circleSize = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) },
drainRate = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) },
+ overallDifficulty = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) },
approachRate = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) },
- overallDifficulty = new OsuSpriteText { Font = OsuFont.GetFont(size: 14) }
}
},
miscFillFlowContainer = new FillFlowContainer