Path: blob/master/osu.Game.Rulesets.Mania/Difficulty/Evaluators/IndividualStrainEvaluator.cs
5329 views
// Copyright (c) ppy Pty Ltd <[email protected]>. Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using osu.Framework.Utils; using osu.Game.Rulesets.Difficulty.Preprocessing; using osu.Game.Rulesets.Mania.Difficulty.Preprocessing; namespace osu.Game.Rulesets.Mania.Difficulty.Evaluators { public class IndividualStrainEvaluator { public static double EvaluateDifficultyOf(DifficultyHitObject current) { var maniaCurrent = (ManiaDifficultyHitObject)current; double startTime = maniaCurrent.StartTime; double endTime = maniaCurrent.EndTime; double holdFactor = 1.0; // Factor to all additional strains in case something else is held // We award a bonus if this note starts and ends before the end of another hold note. foreach (var maniaPrevious in maniaCurrent.PreviousHitObjects) { if (maniaPrevious is null) continue; if (Precision.DefinitelyBigger(maniaPrevious.EndTime, endTime, 1) && Precision.DefinitelyBigger(startTime, maniaPrevious.StartTime, 1)) { holdFactor = 1.25; break; } } return 2.0 * holdFactor; } } }