Apply mod score multipliers

This commit is contained in:
smoogipoo
2019-07-31 17:55:22 +09:00
parent 6bfac9f8e4
commit e57663b39c

View File

@ -217,6 +217,8 @@ namespace osu.Game.Rulesets.Scoring
private double baseScore; private double baseScore;
private double bonusScore; private double bonusScore;
private double scoreMultiplier = 1;
public ScoreProcessor(DrawableRuleset<TObject> drawableRuleset) public ScoreProcessor(DrawableRuleset<TObject> drawableRuleset)
{ {
Debug.Assert(base_portion + combo_portion == 1.0); Debug.Assert(base_portion + combo_portion == 1.0);
@ -235,6 +237,15 @@ namespace osu.Game.Rulesets.Scoring
} }
Mode.ValueChanged += _ => updateScore(); Mode.ValueChanged += _ => updateScore();
Mods.ValueChanged += mods =>
{
scoreMultiplier = 1;
foreach (var m in mods.NewValue)
scoreMultiplier *= m.ScoreMultiplier;
updateScore();
};
} }
/// <summary> /// <summary>
@ -384,7 +395,7 @@ namespace osu.Game.Rulesets.Scoring
if (rollingMaxBaseScore != 0) if (rollingMaxBaseScore != 0)
Accuracy.Value = baseScore / rollingMaxBaseScore; Accuracy.Value = baseScore / rollingMaxBaseScore;
TotalScore.Value = getScore(Mode.Value); TotalScore.Value = getScore(Mode.Value) * scoreMultiplier;
} }
private double getScore(ScoringMode mode) private double getScore(ScoringMode mode)