From 7eb0edf0464c75a78caa07f6075f75d4c6db52af Mon Sep 17 00:00:00 2001 From: Xexxar Date: Wed, 3 Nov 2021 17:59:09 +0000 Subject: [PATCH] added stanrs requested changes --- .../Preprocessing/OsuDifficultyHitObject.cs | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Difficulty/Preprocessing/OsuDifficultyHitObject.cs b/osu.Game.Rulesets.Osu/Difficulty/Preprocessing/OsuDifficultyHitObject.cs index 9be61ba506..46237f732f 100644 --- a/osu.Game.Rulesets.Osu/Difficulty/Preprocessing/OsuDifficultyHitObject.cs +++ b/osu.Game.Rulesets.Osu/Difficulty/Preprocessing/OsuDifficultyHitObject.cs @@ -100,21 +100,23 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Preprocessing for (int i = 1; i < lastSlider.NestedHitObjects.Count; i++) { - Vector2 currSlider = Vector2.Subtract(((OsuHitObject)lastSlider.NestedHitObjects[i]).StackedPosition, currSliderPosition); + var currSliderObj = (OsuHitObject)lastSlider.NestedHitObjects[i]; + + Vector2 currSlider = Vector2.Subtract(currSliderObj.StackedPosition, currSliderPosition); double currSliderLength = currSlider.Length * scalingFactor; - if ((OsuHitObject)lastSlider.NestedHitObjects[i] is SliderEndCircle && !((OsuHitObject)lastSlider.NestedHitObjects[i] is SliderRepeat)) + if (currSliderObj is SliderEndCircle && !(currSliderObj is SliderRepeat)) { - Vector2 possSlider = Vector2.Subtract((Vector2)lastSlider.LazyEndPosition, currSliderPosition); - if (possSlider.Length < currSlider.Length) - currSlider = possSlider; // Take the least distance from slider end vs lazy end. + Vector2 lazySlider = Vector2.Subtract((Vector2)lastSlider.LazyEndPosition, currSliderPosition); + if (lazySlider.Length < currSlider.Length) + currSlider = lazySlider; // Take the least distance from slider end vs lazy end. currSliderLength = currSlider.Length * scalingFactor; } - if ((OsuHitObject)lastSlider.NestedHitObjects[i] is SliderTick) + if (currSliderObj is SliderTick) { - if (currSliderLength > 120) + if (currSliderLength > 120) // 120 is used here as 120 = 2.4 * radius, which means that the cursor assumes the position of least movement required to reach the active tick window. { currSliderPosition = Vector2.Add(currSliderPosition, Vector2.Multiply(currSlider, (float)((currSliderLength - 120) / currSliderLength))); currSliderLength *= (currSliderLength - 120) / currSliderLength; @@ -122,9 +124,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Preprocessing else currSliderLength = 0; } - else if ((OsuHitObject)lastSlider.NestedHitObjects[i] is SliderRepeat) + else if (currSliderObj is SliderRepeat) { - if (currSliderLength > 50) + if (currSliderLength > 50) // 50 is used here as 50 = radius. This is a way to reward motion of back and forths sliders where we assume the player moves to atleast the rim of the hitcircle. { currSliderPosition = Vector2.Add(currSliderPosition, Vector2.Multiply(currSlider, (float)((currSliderLength - 50) / currSliderLength))); currSliderLength *= (currSliderLength - 50) / currSliderLength; @@ -134,16 +136,10 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Preprocessing } else { - if (currSliderLength > 0) - { - currSliderPosition = Vector2.Add(currSliderPosition, Vector2.Multiply(currSlider, (float)((currSliderLength - 0) / currSliderLength))); - currSliderLength *= (currSliderLength - 0) / currSliderLength; - } - else - currSliderLength = 0; + currSliderPosition = Vector2.Add(currSliderPosition, currSlider); } - if ((OsuHitObject)lastSlider.NestedHitObjects[i] is SliderRepeat) + if (currSliderObj is SliderRepeat) repeatCount++; TravelDistance += currSliderLength;