From 0531c010ebeb17037059d34b21aa948849ca67d2 Mon Sep 17 00:00:00 2001
From: Walavouchey <36758269+Walavouchey@users.noreply.github.com>
Date: Tue, 7 Feb 2023 12:08:37 +0100
Subject: [PATCH] display `RankBadge`s on on their sector centres
the D `RankBadge` does this anyway. the A and S badges are slightly off
centre to prevent overlap with the SS badge
---
.../Ranking/Expanded/Accuracy/AccuracyCircle.cs | 12 ++++++------
.../Screens/Ranking/Expanded/Accuracy/RankBadge.cs | 11 +++++++++--
2 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/osu.Game/Screens/Ranking/Expanded/Accuracy/AccuracyCircle.cs b/osu.Game/Screens/Ranking/Expanded/Accuracy/AccuracyCircle.cs
index 3cb09734c5..9ee63b40dd 100644
--- a/osu.Game/Screens/Ranking/Expanded/Accuracy/AccuracyCircle.cs
+++ b/osu.Game/Screens/Ranking/Expanded/Accuracy/AccuracyCircle.cs
@@ -220,12 +220,12 @@ namespace osu.Game.Screens.Ranking.Expanded.Accuracy
Padding = new MarginPadding { Vertical = -15, Horizontal = -20 },
Children = new[]
{
- new RankBadge(1, getRank(ScoreRank.X)),
- new RankBadge(0.95, getRank(ScoreRank.S)),
- new RankBadge(0.9, getRank(ScoreRank.A)),
- new RankBadge(0.8, getRank(ScoreRank.B)),
- new RankBadge(0.7, getRank(ScoreRank.C)),
- new RankBadge(0.35, getRank(ScoreRank.D)),
+ new RankBadge(1, 1, getRank(ScoreRank.X)),
+ new RankBadge(0.95, 0.95 + (0.025 - virtual_ss_percentage) / 2, getRank(ScoreRank.S)),
+ new RankBadge(0.9, 0.9125, getRank(ScoreRank.A)),
+ new RankBadge(0.8, 0.85, getRank(ScoreRank.B)),
+ new RankBadge(0.7, 0.75, getRank(ScoreRank.C)),
+ new RankBadge(0, 0.35, getRank(ScoreRank.D)),
}
},
rankText = new RankText(score.Rank)
diff --git a/osu.Game/Screens/Ranking/Expanded/Accuracy/RankBadge.cs b/osu.Game/Screens/Ranking/Expanded/Accuracy/RankBadge.cs
index 5432b4cbeb..7af327828e 100644
--- a/osu.Game/Screens/Ranking/Expanded/Accuracy/RankBadge.cs
+++ b/osu.Game/Screens/Ranking/Expanded/Accuracy/RankBadge.cs
@@ -27,6 +27,11 @@ namespace osu.Game.Screens.Ranking.Expanded.Accuracy
///
public readonly double Accuracy;
+ ///
+ /// The position around the to display this badge.
+ ///
+ private readonly double displayPosition;
+
private readonly ScoreRank rank;
private Drawable rankContainer;
@@ -36,10 +41,12 @@ namespace osu.Game.Screens.Ranking.Expanded.Accuracy
/// Creates a new .
///
/// The accuracy value corresponding to .
+ /// The position around the to display this badge.
/// The to be displayed in this .
- public RankBadge(double accuracy, ScoreRank rank)
+ public RankBadge(double accuracy, double position, ScoreRank rank)
{
Accuracy = accuracy;
+ displayPosition = position;
this.rank = rank;
RelativeSizeAxes = Axes.Both;
@@ -92,7 +99,7 @@ namespace osu.Game.Screens.Ranking.Expanded.Accuracy
base.Update();
// Starts at -90deg (top) and moves counter-clockwise by the accuracy
- rankContainer.Position = circlePosition(-MathF.PI / 2 - (1 - (float)Accuracy) * MathF.PI * 2);
+ rankContainer.Position = circlePosition(-MathF.PI / 2 - (1 - (float)displayPosition) * MathF.PI * 2);
}
private Vector2 circlePosition(float t)