mirror of
https://github.com/ppy/osu.git
synced 2024-12-14 18:33:20 +08:00
update to fix review issues
This commit is contained in:
parent
a6c3798491
commit
b05963cc50
@ -6,6 +6,7 @@ using osu.Game.Rulesets.Difficulty.Preprocessing;
|
|||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Osu.Difficulty.Preprocessing;
|
using osu.Game.Rulesets.Osu.Difficulty.Preprocessing;
|
||||||
using osu.Game.Rulesets.Osu.Objects;
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
|
using osu.Framework.Utils;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
||||||
{
|
{
|
||||||
@ -44,11 +45,6 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool isRatioEqual(double ratio, double a, double b)
|
|
||||||
{
|
|
||||||
return a + 15 > ratio * b && a - 15 < ratio * b;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Calculates a rhythm multiplier for the difficulty of the tap associated with historic data of the current <see cref="OsuDifficultyHitObject"/>.
|
/// Calculates a rhythm multiplier for the difficulty of the tap associated with historic data of the current <see cref="OsuDifficultyHitObject"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -65,15 +61,19 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
|
|
||||||
for (int i = Previous.Count - 2; i > 0; i--)
|
for (int i = Previous.Count - 2; i > 0; i--)
|
||||||
{
|
{
|
||||||
double currHistoricalDecay = Math.Max(0, (history_time_max - (current.StartTime - Previous[i - 1].StartTime))) / history_time_max; // scales note 0 to 1 from history to now
|
DifficultyHitObject currObj = Previous[i - 1];
|
||||||
|
DifficultyHitObject prevObj = Previous[i];
|
||||||
|
DifficultyHitObject prevPrevObj = Previous[i + 1];
|
||||||
|
|
||||||
|
double currHistoricalDecay = Math.Max(0, (history_time_max - (current.StartTime - currObj.StartTime))) / history_time_max; // scales note 0 to 1 from history to now
|
||||||
|
|
||||||
if (currHistoricalDecay != 0)
|
if (currHistoricalDecay != 0)
|
||||||
{
|
{
|
||||||
currHistoricalDecay = Math.Min(currHistoricalDecay, (double)(Previous.Count - i) / Previous.Count); // either we're limited by time or limited by object count.
|
currHistoricalDecay = Math.Min(currHistoricalDecay, (double)(Previous.Count - i) / Previous.Count); // either we're limited by time or limited by object count.
|
||||||
|
|
||||||
double currDelta = ((OsuDifficultyHitObject)Previous[i - 1]).StrainTime;
|
double currDelta = ((OsuDifficultyHitObject)currObj).StrainTime;
|
||||||
double prevDelta = ((OsuDifficultyHitObject)Previous[i]).StrainTime;
|
double prevDelta = ((OsuDifficultyHitObject)prevObj).StrainTime;
|
||||||
double prevPrevDelta = ((OsuDifficultyHitObject)Previous[i + 1]).StrainTime;
|
double prevPrevDelta = ((OsuDifficultyHitObject)prevPrevObj).StrainTime;
|
||||||
double effectiveRatio = Math.Min(prevDelta, currDelta) / Math.Max(prevDelta, currDelta);
|
double effectiveRatio = Math.Min(prevDelta, currDelta) / Math.Max(prevDelta, currDelta);
|
||||||
|
|
||||||
if (effectiveRatio > 0.5)
|
if (effectiveRatio > 0.5)
|
||||||
@ -83,7 +83,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
|
|
||||||
if (firstDeltaSwitch)
|
if (firstDeltaSwitch)
|
||||||
{
|
{
|
||||||
if (isRatioEqual(1.0, prevDelta, currDelta))
|
if (Precision.AlmostEquals(prevDelta, currDelta, 15))
|
||||||
{
|
{
|
||||||
islandSize++; // island is still progressing, count size.
|
islandSize++; // island is still progressing, count size.
|
||||||
}
|
}
|
||||||
@ -174,10 +174,12 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
|
|
||||||
currentRhythm = calculateRhythmBonus(current);
|
currentRhythm = calculateRhythmBonus(current);
|
||||||
|
|
||||||
currentTapStrain *= strainDecay(current.DeltaTime);
|
double decay = strainDecay(current.DeltaTime);
|
||||||
|
|
||||||
|
currentTapStrain *= decay;
|
||||||
currentTapStrain += tapStrainOf(current, speedBonus) * skillMultiplier;
|
currentTapStrain += tapStrainOf(current, speedBonus) * skillMultiplier;
|
||||||
|
|
||||||
currentMovementStrain *= strainDecay(current.DeltaTime);
|
currentMovementStrain *= decay;
|
||||||
currentMovementStrain += movementStrainOf(current, speedBonus) * skillMultiplier;
|
currentMovementStrain += movementStrainOf(current, speedBonus) * skillMultiplier;
|
||||||
|
|
||||||
return currentMovementStrain + currentTapStrain * currentRhythm;
|
return currentMovementStrain + currentTapStrain * currentRhythm;
|
||||||
|
Loading…
Reference in New Issue
Block a user