1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-21 18:07:23 +08:00

Refactor usage of object counts for mania key count lookup to be a bit safer

Protects against non-initialised values and also div-by-zero.
This commit is contained in:
Dean Herbert 2023-12-19 18:27:44 +09:00
parent f09c6b8c1b
commit 372f930f8b
No known key found for this signature in database

View File

@ -59,11 +59,13 @@ namespace osu.Game.Rulesets.Mania.Beatmaps
{
double roundedCircleSize = Math.Round(difficulty.CircleSize);
if (new ManiaRuleset().RulesetInfo.Equals(difficulty.SourceRuleset))
if (difficulty.SourceRuleset.ShortName == ManiaRuleset.SHORT_NAME)
return (int)Math.Max(1, roundedCircleSize);
double roundedOverallDifficulty = Math.Round(difficulty.OverallDifficulty);
if (difficulty.TotalObjectCount > 0 && difficulty.EndTimeObjectCount >= 0)
{
int countSliderOrSpinner = difficulty.EndTimeObjectCount;
// In osu!stable, this division appears as if it happens on floats, but due to release-mode
@ -76,6 +78,7 @@ namespace osu.Game.Rulesets.Mania.Beatmaps
return roundedOverallDifficulty > 5 ? 7 : 6;
if (percentSpecialObjects > 0.6)
return roundedOverallDifficulty > 4 ? 5 : 4;
}
return Math.Max(4, Math.Min((int)roundedOverallDifficulty + 1, 7));
}