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:
parent
cb4c07fe7f
commit
1e55654ad5
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user