mirror of
https://github.com/osukey/osukey.git
synced 2025-07-02 08:49:59 +09:00
Apply mod score multipliers
This commit is contained in:
@ -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)
|
||||||
|
Reference in New Issue
Block a user