diff --git a/osu.Game/Beatmaps/BeatmapMetrics.cs b/osu.Game/Beatmaps/BeatmapMetrics.cs
index 730cf635da..e0cd5f10e7 100644
--- a/osu.Game/Beatmaps/BeatmapMetrics.cs
+++ b/osu.Game/Beatmaps/BeatmapMetrics.cs
@@ -12,7 +12,7 @@ namespace osu.Game.Beatmaps
public class BeatmapMetrics
{
///
- /// Total vote counts of user ratings on a scale of 0..length.
+ /// Total vote counts of user ratings on a scale of 0..10 where 0 is unused (probably will be fixed at API?).
///
public IEnumerable Ratings { get; set; }
diff --git a/osu.Game/Graphics/UserInterface/Bar.cs b/osu.Game/Graphics/UserInterface/Bar.cs
index 20df553142..c25a9bf5e9 100644
--- a/osu.Game/Graphics/UserInterface/Bar.cs
+++ b/osu.Game/Graphics/UserInterface/Bar.cs
@@ -20,6 +20,7 @@ namespace osu.Game.Graphics.UserInterface
private const Easing easing = Easing.InOutCubic;
private float length;
+
///
/// Length of the bar, ranges from 0 to 1
///
@@ -134,4 +135,4 @@ namespace osu.Game.Graphics.UserInterface
Vertical = TopToBottom | BottomToTop,
Horizontal = LeftToRight | RightToLeft,
}
-}
\ No newline at end of file
+}
diff --git a/osu.Game/Screens/Select/Details/UserRatings.cs b/osu.Game/Screens/Select/Details/UserRatings.cs
index 2153eb150c..997e0baec3 100644
--- a/osu.Game/Screens/Select/Details/UserRatings.cs
+++ b/osu.Game/Screens/Select/Details/UserRatings.cs
@@ -29,11 +29,17 @@ namespace osu.Game.Screens.Select.Details
if (value == metrics) return;
metrics = value;
- var ratings = Metrics.Ratings.ToList();
- negativeRatings.Text = ratings.GetRange(0, ratings.Count / 2 + 1).Sum().ToString();
- positiveRatings.Text = ratings.GetRange(ratings.Count / 2 + 1, ratings.Count / 2).Sum().ToString();
- ratingsBar.Length = (float)ratings.GetRange(0, ratings.Count / 2 + 1).Sum() / ratings.Sum();
- graph.Values = Metrics.Ratings.Select(r => (float)r);
+ const int rating_range = 10;
+
+ var ratings = Metrics.Ratings.ToList().GetRange(1, rating_range); // adjust for API returning weird empty data at 0.
+
+ var negativeCount = ratings.GetRange(0, rating_range / 2).Sum();
+ var totalCount = ratings.Sum();
+
+ negativeRatings.Text = negativeCount.ToString();
+ positiveRatings.Text = (totalCount - negativeCount).ToString();
+ ratingsBar.Length = totalCount == 0 ? 0 : (float)negativeCount / totalCount;
+ graph.Values = ratings.GetRange(0, rating_range).Select(r => (float)r);
}
}