Fix maps with only bonus score having NaN scores

This commit is contained in:
smoogipoo 2020-09-11 01:13:55 +09:00
parent 58186fc476
commit 447fd07b4e
2 changed files with 33 additions and 1 deletions

View File

@ -28,6 +28,20 @@ public void TestNoScoreIncreaseFromMiss()
Assert.That(scoreProcessor.TotalScore.Value, Is.EqualTo(0.0));
}
[Test]
public void TestOnlyBonusScore()
{
var beatmap = new Beatmap<TestBonusHitObject> { HitObjects = { new TestBonusHitObject() } };
var scoreProcessor = new ScoreProcessor();
scoreProcessor.ApplyBeatmap(beatmap);
// Apply a judgement
scoreProcessor.ApplyResult(new JudgementResult(new TestBonusHitObject(), new TestBonusJudgement()) { Type = HitResult.Perfect });
Assert.That(scoreProcessor.TotalScore.Value, Is.EqualTo(100));
}
private class TestHitObject : HitObject
{
public override Judgement CreateJudgement() => new TestJudgement();
@ -37,5 +51,17 @@ private class TestJudgement : Judgement
{
protected override int NumericResultFor(HitResult result) => 100;
}
private class TestBonusHitObject : HitObject
{
public override Judgement CreateJudgement() => new TestBonusJudgement();
}
private class TestBonusJudgement : Judgement
{
public override bool AffectsCombo => false;
protected override int NumericResultFor(HitResult result) => 100;
}
}
}

View File

@ -202,7 +202,13 @@ private void updateScore()
TotalScore.Value = getScore(Mode.Value);
}
private double getScore(ScoringMode mode) => GetScore(mode, maxHighestCombo, baseScore / maxBaseScore, (double)HighestCombo.Value / maxHighestCombo, bonusScore);
private double getScore(ScoringMode mode)
{
return GetScore(mode, maxHighestCombo,
maxBaseScore > 0 ? baseScore / maxBaseScore : 0,
maxHighestCombo > 0 ? (double)HighestCombo.Value / maxHighestCombo : 0,
bonusScore);
}
/// <summary>
/// Computes the total score.