1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-12 07:12:54 +08:00

Update Speed.cs

This commit is contained in:
Dark98 2025-01-10 23:38:23 +01:00 committed by GitHub
parent cb4c07fe7f
commit 1e55654ad5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,4 +1,4 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// 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 System;
@ -15,18 +15,24 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
/// </summary>
public class Speed : OsuStrainSkill
{
public Speed(Mod[] mods)
: base(mods)
{
}
public static double MaxDifficulty; //Max difficulty of a single object
public static double SumDifficulty; //Summed difficulty of a single object
protected override int ReducedSectionCount => 5;
private double skillMultiplier => 1.430;
private double strainDecayBase => 0.3;
private double currentStrain;
private double currentRhythm;
protected override int ReducedSectionCount => 5;
private double maxDifficulty;
public Speed(Mod[] mods)
: base(mods)
{
}
private double sumDifficulty;
private double strainDecay(double ms) => Math.Pow(strainDecayBase, ms / 1000);
@ -35,12 +41,26 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
protected override double StrainValueAt(DifficultyHitObject current)
{
currentStrain *= strainDecay(((OsuDifficultyHitObject)current).StrainTime);
currentStrain += SpeedEvaluator.EvaluateDifficultyOf(current) * skillMultiplier;
double currentHitObjectStrain = SpeedEvaluator.EvaluateDifficultyOf(current) * skillMultiplier;
currentStrain += currentHitObjectStrain;
currentRhythm = RhythmEvaluator.EvaluateDifficultyOf(current);
double totalStrain = currentStrain * currentRhythm;
sumDifficulty += currentHitObjectStrain * currentRhythm;
if (maxDifficulty < currentHitObjectStrain)
maxDifficulty = currentHitObjectStrain;
if (current.Next(1) is null)
{
MaxDifficulty = maxDifficulty;
SumDifficulty = sumDifficulty;
}
return totalStrain;
}