mirror of
https://github.com/ppy/osu
synced 2025-02-20 20:47:09 +00:00
Merge pull request #26700 from peppy/accuracy-circle-crash
Fix crash at results screen when hidden is enabled and S rank becomes A due to miss
This commit is contained in:
commit
3e13fb87f2
@ -46,6 +46,16 @@ namespace osu.Game.Tests.Visual.Ranking
|
||||
addCircleStep(createScore(1, new OsuRuleset()));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestOsuRankHidden()
|
||||
{
|
||||
addCircleStep(createScore(0, new OsuRuleset(), 20, true));
|
||||
addCircleStep(createScore(0.8, new OsuRuleset(), 5, true));
|
||||
addCircleStep(createScore(0.95, new OsuRuleset(), 0, true));
|
||||
addCircleStep(createScore(0.97, new OsuRuleset(), 1, true));
|
||||
addCircleStep(createScore(1, new OsuRuleset(), 0, true));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCatchRank()
|
||||
{
|
||||
@ -66,7 +76,7 @@ namespace osu.Game.Tests.Visual.Ranking
|
||||
addCircleStep(createScore(1, new CatchRuleset()));
|
||||
}
|
||||
|
||||
private void addCircleStep(ScoreInfo score) => AddStep($"add panel ({score.DisplayAccuracy})", () =>
|
||||
private void addCircleStep(ScoreInfo score) => AddStep($"add panel ({score.DisplayAccuracy}, {score.Statistics.GetValueOrDefault(HitResult.Miss)} miss)", () =>
|
||||
{
|
||||
Children = new Drawable[]
|
||||
{
|
||||
@ -93,18 +103,22 @@ namespace osu.Game.Tests.Visual.Ranking
|
||||
};
|
||||
});
|
||||
|
||||
private ScoreInfo createScore(double accuracy, Ruleset ruleset)
|
||||
private ScoreInfo createScore(double accuracy, Ruleset ruleset, int missCount = 0, bool hidden = false)
|
||||
{
|
||||
var scoreProcessor = ruleset.CreateScoreProcessor();
|
||||
|
||||
var statistics = new Dictionary<HitResult, int>
|
||||
{
|
||||
{ HitResult.Miss, 1 },
|
||||
{ HitResult.Miss, missCount },
|
||||
{ HitResult.Meh, 50 },
|
||||
{ HitResult.Good, 100 },
|
||||
{ HitResult.Great, 300 },
|
||||
};
|
||||
|
||||
var mods = hidden
|
||||
? new[] { new OsuModHidden() }
|
||||
: new Mod[] { new OsuModHardRock(), new OsuModDoubleTime() };
|
||||
|
||||
return new ScoreInfo
|
||||
{
|
||||
User = new APIUser
|
||||
@ -114,7 +128,7 @@ namespace osu.Game.Tests.Visual.Ranking
|
||||
},
|
||||
BeatmapInfo = new TestBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo,
|
||||
Ruleset = ruleset.RulesetInfo,
|
||||
Mods = new Mod[] { new OsuModHardRock(), new OsuModDoubleTime() },
|
||||
Mods = mods,
|
||||
TotalScore = 2845370,
|
||||
Accuracy = accuracy,
|
||||
MaxCombo = 999,
|
||||
|
@ -417,7 +417,7 @@ namespace osu.Game.Screens.Ranking.Expanded.Accuracy
|
||||
accuracyCircle
|
||||
.FillTo(accuracyS - NOTCH_WIDTH_PERCENTAGE / 2 - visual_alignment_offset, 70, Easing.OutQuint);
|
||||
|
||||
badges.Single(b => b.Rank == ScoreRank.S)
|
||||
badges.Single(b => b.Rank == getRank(ScoreRank.S))
|
||||
.FadeOut(70, Easing.OutQuint);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user