Change difficulty cache storage type to nullable

The recent changes related to adding support for working beatmap load
cancellation exposed a flaw in the beatmap difficulty cache. With the
way the difficulty computation logic was written, any error in the
calculation process (including beatmap load timeout, or cancellation)
would result in a 0.00 star rating being permanently cached in memory
for the given beatmap.

To resolve, change the difficulty cache's return type to nullable.
In failure scenarios, `null` is returned, rather than
`default(StarDifficulty)` as done previously.
This commit is contained in:
Bartłomiej Dach
2021-11-20 16:54:58 +01:00
parent b1fcb840a9
commit 15feb17da8
7 changed files with 40 additions and 25 deletions

View File

@ -143,14 +143,6 @@ namespace osu.Game.Screens.Ranking.Expanded
Origin = Anchor.TopCentre,
AutoSizeAxes = Axes.Both,
Spacing = new Vector2(5, 0),
Children = new Drawable[]
{
new StarRatingDisplay(starDifficulty)
{
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft
},
}
},
new FillFlowContainer
{
@ -231,6 +223,15 @@ namespace osu.Game.Screens.Ranking.Expanded
if (score.Date != default)
AddInternal(new PlayedOnText(score.Date));
if (starDifficulty != null)
{
starAndModDisplay.Add(new StarRatingDisplay(starDifficulty.Value)
{
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft
});
}
if (score.Mods.Any())
{
starAndModDisplay.Add(new ModDisplay