mirror of
https://github.com/ppy/osu.git
synced 2025-01-28 04:02:57 +08:00
Re-implement slider changes to FlashlightEvaluator
This commit is contained in:
parent
a0dd6cbab3
commit
a950deb7db
@ -4,6 +4,7 @@
|
|||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
using osu.Game.Rulesets.Difficulty.Preprocessing;
|
using osu.Game.Rulesets.Difficulty.Preprocessing;
|
||||||
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;
|
||||||
@ -15,6 +16,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
|
|||||||
private const double max_opacity_bonus = 0.4;
|
private const double max_opacity_bonus = 0.4;
|
||||||
private const double hidden_bonus = 0.2;
|
private const double hidden_bonus = 0.2;
|
||||||
|
|
||||||
|
private const double min_velocity = 0.5;
|
||||||
|
private const double slider_multiplier = 1.3;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Evaluates the difficulty of memorising and hitting an object, based on:
|
/// Evaluates the difficulty of memorising and hitting an object, based on:
|
||||||
/// <list type="bullet">
|
/// <list type="bullet">
|
||||||
@ -73,6 +77,24 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Evaluators
|
|||||||
if (hidden)
|
if (hidden)
|
||||||
result *= 1.0 + hidden_bonus;
|
result *= 1.0 + hidden_bonus;
|
||||||
|
|
||||||
|
double sliderBonus = 0.0;
|
||||||
|
|
||||||
|
if (osuCurrent.BaseObject is Slider)
|
||||||
|
{
|
||||||
|
Debug.Assert(osuCurrent.TravelTime > 0);
|
||||||
|
|
||||||
|
// Invert the scaling factor to determine the true travel distance independent of circle size.
|
||||||
|
double pixelTravelDistance = osuCurrent.TravelDistance / scalingFactor;
|
||||||
|
|
||||||
|
// Reward sliders based on velocity.
|
||||||
|
sliderBonus = Math.Pow(Math.Max(0.0, pixelTravelDistance / osuCurrent.TravelTime - min_velocity), 0.5);
|
||||||
|
|
||||||
|
// Longer sliders require more memorisation.
|
||||||
|
sliderBonus *= pixelTravelDistance;
|
||||||
|
}
|
||||||
|
|
||||||
|
result += sliderBonus * slider_multiplier;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Game.Rulesets.Difficulty.Preprocessing;
|
using osu.Game.Rulesets.Difficulty.Preprocessing;
|
||||||
using osu.Game.Rulesets.Difficulty.Skills;
|
using osu.Game.Rulesets.Difficulty.Skills;
|
||||||
|
Loading…
Reference in New Issue
Block a user