mirror of
https://github.com/SK-la/Ez2Lazer.git
synced 2026-03-13 11:20:28 +00:00
38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. 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;
|
|
}
|
|
}
|
|
}
|