diff --git a/osu.Game/Rulesets/Ruleset.cs b/osu.Game/Rulesets/Ruleset.cs
index 52784e354f..a325e641a4 100644
--- a/osu.Game/Rulesets/Ruleset.cs
+++ b/osu.Game/Rulesets/Ruleset.cs
@@ -210,6 +210,11 @@ namespace osu.Game.Rulesets
/// An empty frame for the current ruleset, or null if unsupported.
public virtual IConvertibleReplayFrame CreateConvertibleReplayFrame() => null;
+ ///
+ /// Creates the statistics for a to be displayed in the results screen.
+ ///
+ /// The to create the statistics for. The score is guaranteed to have populated.
+ /// The s to display. Each may contain 0 or more .
[NotNull]
public virtual StatisticRow[] CreateStatistics(ScoreInfo score) => Array.Empty();
}
diff --git a/osu.Game/Screens/Ranking/Statistics/StatisticContainer.cs b/osu.Game/Screens/Ranking/Statistics/StatisticContainer.cs
index b8dde8f85e..b063893633 100644
--- a/osu.Game/Screens/Ranking/Statistics/StatisticContainer.cs
+++ b/osu.Game/Screens/Ranking/Statistics/StatisticContainer.cs
@@ -19,9 +19,13 @@ namespace osu.Game.Screens.Ranking.Statistics
public StatisticContainer(string name)
{
+ RelativeSizeAxes = Axes.X;
+ AutoSizeAxes = Axes.Y;
+
InternalChild = new GridContainer
{
- RelativeSizeAxes = Axes.Both,
+ RelativeSizeAxes = Axes.X,
+ AutoSizeAxes = Axes.Y,
Content = new[]
{
new Drawable[]
@@ -56,13 +60,15 @@ namespace osu.Game.Screens.Ranking.Statistics
{
content = new Container
{
- RelativeSizeAxes = Axes.Both
+ RelativeSizeAxes = Axes.X,
+ AutoSizeAxes = Axes.Y,
}
},
},
RowDimensions = new[]
{
new Dimension(GridSizeMode.AutoSize),
+ new Dimension(GridSizeMode.AutoSize),
}
};
}
diff --git a/osu.Game/Screens/Ranking/Statistics/StatisticItem.cs b/osu.Game/Screens/Ranking/Statistics/StatisticItem.cs
index 2605ae9f1b..a3ef5bf99e 100644
--- a/osu.Game/Screens/Ranking/Statistics/StatisticItem.cs
+++ b/osu.Game/Screens/Ranking/Statistics/StatisticItem.cs
@@ -7,12 +7,32 @@ using osu.Framework.Graphics.Containers;
namespace osu.Game.Screens.Ranking.Statistics
{
+ ///
+ /// An item to be displayed in a row of statistics inside the results screen.
+ ///
public class StatisticItem
{
+ ///
+ /// The name of this item.
+ ///
public readonly string Name;
+
+ ///
+ /// The content to be displayed.
+ ///
public readonly Drawable Content;
+
+ ///
+ /// The of this row. This can be thought of as the column dimension of an encompassing .
+ ///
public readonly Dimension Dimension;
+ ///
+ /// Creates a new , to be displayed inside a in the results screen.
+ ///
+ /// The name of this item.
+ /// The content to be displayed.
+ /// The of this row. This can be thought of as the column dimension of an encompassing .
public StatisticItem([NotNull] string name, [NotNull] Drawable content, [CanBeNull] Dimension dimension = null)
{
Name = name;
diff --git a/osu.Game/Screens/Ranking/Statistics/StatisticRow.cs b/osu.Game/Screens/Ranking/Statistics/StatisticRow.cs
index ebab148fc2..e1ca9799a3 100644
--- a/osu.Game/Screens/Ranking/Statistics/StatisticRow.cs
+++ b/osu.Game/Screens/Ranking/Statistics/StatisticRow.cs
@@ -5,12 +5,15 @@ using JetBrains.Annotations;
namespace osu.Game.Screens.Ranking.Statistics
{
+ ///
+ /// A row of statistics to be displayed in the results screen.
+ ///
public class StatisticRow
{
///
/// The columns of this .
///
- [ItemCanBeNull]
+ [ItemNotNull]
public StatisticItem[] Columns;
}
}
diff --git a/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs b/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs
index 3d81229ac3..328b6933a0 100644
--- a/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs
+++ b/osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs
@@ -81,8 +81,15 @@ namespace osu.Game.Screens.Ranking.Statistics
{
RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y,
- Content = new[] { row.Columns?.Select(c => c?.Content).ToArray() },
- ColumnDimensions = Enumerable.Range(0, row.Columns?.Length ?? 0).Select(i => row.Columns[i]?.Dimension ?? new Dimension()).ToArray(),
+ Content = new[]
+ {
+ row.Columns?.Select(c => new StatisticContainer(c.Name)
+ {
+ Child = c.Content
+ }).Cast().ToArray()
+ },
+ ColumnDimensions = Enumerable.Range(0, row.Columns?.Length ?? 0)
+ .Select(i => row.Columns[i].Dimension ?? new Dimension()).ToArray(),
RowDimensions = new[] { new Dimension(GridSizeMode.AutoSize) }
});
}