diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneStarRatingDisplay.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneStarRatingDisplay.cs
index a8bc5664f3..7883049df2 100644
--- a/osu.Game.Tests/Visual/UserInterface/TestSceneStarRatingDisplay.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestSceneStarRatingDisplay.cs
@@ -8,17 +8,15 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Utils;
using osu.Game.Beatmaps;
using osu.Game.Beatmaps.Drawables;
-using osu.Game.Graphics.Containers;
using osuTK;
namespace osu.Game.Tests.Visual.UserInterface
{
public class TestSceneStarRatingDisplay : OsuTestScene
{
- [TestCase(52f, 20f)]
- [TestCase(52f, 16f)]
- [TestCase(50f, 14f)]
- public void TestDisplay(float width, float height)
+ [TestCase(StarRatingDisplaySize.Regular)]
+ [TestCase(StarRatingDisplaySize.Small)]
+ public void TestDisplay(StarRatingDisplaySize size)
{
AddStep("load displays", () =>
{
@@ -36,11 +34,10 @@ namespace osu.Game.Tests.Visual.UserInterface
AutoSizeAxes = Axes.Both,
Spacing = new Vector2(2f),
Direction = FillDirection.Vertical,
- ChildrenEnumerable = Enumerable.Range(0, 10).Select(j => new StarRatingDisplay(new StarDifficulty(i * (i >= 11 ? 25f : 1f) + j * 0.1f, 0))
+ ChildrenEnumerable = Enumerable.Range(0, 10).Select(j => new StarRatingDisplay(new StarDifficulty(i * (i >= 11 ? 25f : 1f) + j * 0.1f, 0), size)
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Size = new Vector2(width, height),
}),
})
};
diff --git a/osu.Game/Beatmaps/Drawables/StarRatingDisplay.cs b/osu.Game/Beatmaps/Drawables/StarRatingDisplay.cs
index 2c40aebbe1..ed2fee23d5 100644
--- a/osu.Game/Beatmaps/Drawables/StarRatingDisplay.cs
+++ b/osu.Game/Beatmaps/Drawables/StarRatingDisplay.cs
@@ -44,40 +44,63 @@ namespace osu.Game.Beatmaps.Drawables
/// Creates a new using an already computed .
///
/// The already computed to display.
- public StarRatingDisplay(StarDifficulty starDifficulty)
+ /// The size of the star rating display.
+ public StarRatingDisplay(StarDifficulty starDifficulty, StarRatingDisplaySize size = StarRatingDisplaySize.Regular)
{
Current.Value = starDifficulty;
- Size = new Vector2(52f, 20f);
+ AutoSizeAxes = Axes.Both;
InternalChild = new CircularContainer
{
Masking = true,
- RelativeSizeAxes = Axes.Both,
+ AutoSizeAxes = Axes.Both,
Children = new Drawable[]
{
background = new Box
{
RelativeSizeAxes = Axes.Both,
},
- starIcon = new SpriteIcon
+ new GridContainer
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Margin = new MarginPadding { Right = 30f },
- Icon = FontAwesome.Solid.Star,
- Size = new Vector2(8f),
+ AutoSizeAxes = Axes.Both,
+ Margin = size == StarRatingDisplaySize.Small
+ ? new MarginPadding { Horizontal = 7f }
+ : new MarginPadding { Horizontal = 8f, Vertical = 2f },
+ ColumnDimensions = new[]
+ {
+ new Dimension(GridSizeMode.AutoSize),
+ new Dimension(GridSizeMode.Absolute, 3f),
+ new Dimension(GridSizeMode.AutoSize, minSize: 25f),
+ },
+ RowDimensions = new[] { new Dimension(GridSizeMode.AutoSize) },
+ Content = new[]
+ {
+ new[]
+ {
+ starIcon = new SpriteIcon
+ {
+ Anchor = Anchor.Centre,
+ Origin = Anchor.Centre,
+ Icon = FontAwesome.Solid.Star,
+ Size = new Vector2(8f),
+ },
+ Empty(),
+ starsText = new OsuSpriteText
+ {
+ Anchor = Anchor.CentreLeft,
+ Origin = Anchor.CentreLeft,
+ Margin = new MarginPadding { Bottom = 1.5f },
+ // todo: this should be size: 12f, but to match up with the design, it needs to be 14.4f
+ // see https://github.com/ppy/osu-framework/issues/3271.
+ Font = OsuFont.Torus.With(size: 14.4f, weight: FontWeight.Bold),
+ Shadow = false,
+ }
+ }
+ }
},
- starsText = new OsuSpriteText
- {
- Anchor = Anchor.Centre,
- Origin = Anchor.Centre,
- Margin = new MarginPadding { Left = 10f, Bottom = 2f },
- // todo: this should be size: 12f, but to match up with the design, it needs to be 14.4f
- // see https://github.com/ppy/osu-framework/issues/3271.
- Font = OsuFont.Torus.With(size: 14.4f, weight: FontWeight.Bold),
- Shadow = false,
- }
}
};
}
@@ -97,4 +120,10 @@ namespace osu.Game.Beatmaps.Drawables
}, true);
}
}
+
+ public enum StarRatingDisplaySize
+ {
+ Small,
+ Regular,
+ }
}