From e77581f64134f7c75b36776d223d7812bb9e4b42 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sun, 27 Aug 2023 01:25:50 +0300 Subject: [PATCH 1/3] `wholeSpins` -> `currentSpins` --- .../Objects/Drawables/DrawableSpinner.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs index 0ceda1d4b0..2d2a4a05ac 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs @@ -286,7 +286,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables private static readonly int score_per_tick = new SpinnerBonusTick.OsuSpinnerBonusTickJudgement().MaxNumericResult; - private int wholeSpins; + private int currentSpins; private void updateBonusScore() { @@ -295,14 +295,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables int spins = (int)(Result.RateAdjustedRotation / 360); - if (spins < wholeSpins) + if (spins < currentSpins) { // rewinding, silently handle - wholeSpins = spins; + currentSpins = spins; return; } - while (wholeSpins != spins) + while (currentSpins != spins) { var tick = ticks.FirstOrDefault(t => !t.Result.HasResult); @@ -315,7 +315,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables gainedBonus.Value = score_per_tick * (spins - HitObject.SpinsRequired); } - wholeSpins++; + currentSpins++; } } } From d614e745b8ff9e45bd46093741d810b18d255203 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Sun, 27 Aug 2023 01:27:19 +0300 Subject: [PATCH 2/3] Calculate spinner ticks as "whole spins" without arbitrary factors --- osu.Game.Rulesets.Osu/Objects/Spinner.cs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Spinner.cs b/osu.Game.Rulesets.Osu/Objects/Spinner.cs index b800b03c92..f32c6ae979 100644 --- a/osu.Game.Rulesets.Osu/Objects/Spinner.cs +++ b/osu.Game.Rulesets.Osu/Objects/Spinner.cs @@ -42,15 +42,10 @@ namespace osu.Game.Rulesets.Osu.Objects { base.ApplyDefaultsToSelf(controlPointInfo, difficulty); - // spinning doesn't match 1:1 with stable, so let's fudge them easier for the time being. - const double stable_matching_fudge = 0.6; - - // close to 477rpm - const double maximum_rotations_per_second = 8; + const double maximum_rotations_per_second = 477f / 60f; double secondsDuration = Duration / 1000; - - double minimumRotationsPerSecond = stable_matching_fudge * IBeatmapDifficultyInfo.DifficultyRange(difficulty.OverallDifficulty, 3, 5, 7.5); + double minimumRotationsPerSecond = IBeatmapDifficultyInfo.DifficultyRange(difficulty.OverallDifficulty, 1.5, 2.5, 3.75); SpinsRequired = (int)(secondsDuration * minimumRotationsPerSecond); MaximumBonusSpins = (int)((maximum_rotations_per_second - minimumRotationsPerSecond) * secondsDuration); From 912c8b0901aba37b5d99eb06a4fa57d0e4267b83 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Wed, 6 Sep 2023 00:10:41 +0300 Subject: [PATCH 3/3] `currentSpins` -> `completedFullSpins` --- .../Objects/Drawables/DrawableSpinner.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs index 2d2a4a05ac..6611cca2bd 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSpinner.cs @@ -286,7 +286,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables private static readonly int score_per_tick = new SpinnerBonusTick.OsuSpinnerBonusTickJudgement().MaxNumericResult; - private int currentSpins; + private int completedFullSpins; private void updateBonusScore() { @@ -295,14 +295,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables int spins = (int)(Result.RateAdjustedRotation / 360); - if (spins < currentSpins) + if (spins < completedFullSpins) { // rewinding, silently handle - currentSpins = spins; + completedFullSpins = spins; return; } - while (currentSpins != spins) + while (completedFullSpins != spins) { var tick = ticks.FirstOrDefault(t => !t.Result.HasResult); @@ -315,7 +315,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables gainedBonus.Value = score_per_tick * (spins - HitObject.SpinsRequired); } - currentSpins++; + completedFullSpins++; } } }