mirror of
https://github.com/osukey/osukey.git
synced 2025-06-17 17:28:01 +09:00
Fix halfCatchWidth not being reset between runs
This commit is contained in:
parent
57727ac184
commit
dd60e3f1c4
@ -23,8 +23,6 @@ namespace osu.Game.Rulesets.Catch.Difficulty
|
|||||||
|
|
||||||
protected override int SectionLength => 750;
|
protected override int SectionLength => 750;
|
||||||
|
|
||||||
private float? halfCatchWidth;
|
|
||||||
|
|
||||||
public CatchDifficultyCalculator(Ruleset ruleset, WorkingBeatmap beatmap)
|
public CatchDifficultyCalculator(Ruleset ruleset, WorkingBeatmap beatmap)
|
||||||
: base(ruleset, beatmap)
|
: base(ruleset, beatmap)
|
||||||
{
|
{
|
||||||
@ -49,15 +47,15 @@ namespace osu.Game.Rulesets.Catch.Difficulty
|
|||||||
|
|
||||||
protected override IEnumerable<DifficultyHitObject> CreateDifficultyHitObjects(IBeatmap beatmap, double clockRate)
|
protected override IEnumerable<DifficultyHitObject> CreateDifficultyHitObjects(IBeatmap beatmap, double clockRate)
|
||||||
{
|
{
|
||||||
if (halfCatchWidth == null)
|
float halfCatchWidth;
|
||||||
{
|
|
||||||
var catcher = new CatcherArea.Catcher(beatmap.BeatmapInfo.BaseDifficulty);
|
|
||||||
halfCatchWidth = catcher.CatchWidth * 0.5f;
|
|
||||||
|
|
||||||
// We're only using 80% of the catcher's width to simulate imperfect gameplay.
|
using (var catcher = new CatcherArea.Catcher(beatmap.BeatmapInfo.BaseDifficulty))
|
||||||
halfCatchWidth *= 0.8f;
|
{
|
||||||
|
halfCatchWidth = catcher.CatchWidth * 0.5f;
|
||||||
|
halfCatchWidth *= 0.8f; // We're only using 80% of the catcher's width to simulate imperfect gameplay.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CatchHitObject lastObject = null;
|
CatchHitObject lastObject = null;
|
||||||
|
|
||||||
foreach (var hitObject in beatmap.HitObjects.OfType<CatchHitObject>())
|
foreach (var hitObject in beatmap.HitObjects.OfType<CatchHitObject>())
|
||||||
@ -72,14 +70,14 @@ namespace osu.Game.Rulesets.Catch.Difficulty
|
|||||||
{
|
{
|
||||||
// We want to only consider fruits that contribute to the combo. Droplets are addressed as accuracy and spinners are not relevant for "skill" calculations.
|
// We want to only consider fruits that contribute to the combo. Droplets are addressed as accuracy and spinners are not relevant for "skill" calculations.
|
||||||
case Fruit fruit:
|
case Fruit fruit:
|
||||||
yield return new CatchDifficultyHitObject(fruit, lastObject, clockRate, halfCatchWidth.Value);
|
yield return new CatchDifficultyHitObject(fruit, lastObject, clockRate, halfCatchWidth);
|
||||||
|
|
||||||
lastObject = hitObject;
|
lastObject = hitObject;
|
||||||
break;
|
break;
|
||||||
case JuiceStream _:
|
case JuiceStream _:
|
||||||
foreach (var nested in hitObject.NestedHitObjects.OfType<CatchHitObject>().Where(o => !(o is TinyDroplet)))
|
foreach (var nested in hitObject.NestedHitObjects.OfType<CatchHitObject>().Where(o => !(o is TinyDroplet)))
|
||||||
{
|
{
|
||||||
yield return new CatchDifficultyHitObject(nested, lastObject, clockRate, halfCatchWidth.Value);
|
yield return new CatchDifficultyHitObject(nested, lastObject, clockRate, halfCatchWidth);
|
||||||
|
|
||||||
lastObject = nested;
|
lastObject = nested;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user