mirror of
https://github.com/ppy/osu.git
synced 2024-11-11 13:37:25 +08:00
Merge pull request #24661 from frenzibyte/stable-spinner-ticks-1
Update osu! spinner ticks calculation method to better match with osu!(stable)
This commit is contained in:
commit
7db4b3e83c
@ -286,7 +286,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
|
|
||||||
private static readonly int score_per_tick = new SpinnerBonusTick.OsuSpinnerBonusTickJudgement().MaxNumericResult;
|
private static readonly int score_per_tick = new SpinnerBonusTick.OsuSpinnerBonusTickJudgement().MaxNumericResult;
|
||||||
|
|
||||||
private int wholeSpins;
|
private int completedFullSpins;
|
||||||
|
|
||||||
private void updateBonusScore()
|
private void updateBonusScore()
|
||||||
{
|
{
|
||||||
@ -295,14 +295,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
|
|
||||||
int spins = (int)(Result.RateAdjustedRotation / 360);
|
int spins = (int)(Result.RateAdjustedRotation / 360);
|
||||||
|
|
||||||
if (spins < wholeSpins)
|
if (spins < completedFullSpins)
|
||||||
{
|
{
|
||||||
// rewinding, silently handle
|
// rewinding, silently handle
|
||||||
wholeSpins = spins;
|
completedFullSpins = spins;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (wholeSpins != spins)
|
while (completedFullSpins != spins)
|
||||||
{
|
{
|
||||||
var tick = ticks.FirstOrDefault(t => !t.Result.HasResult);
|
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);
|
gainedBonus.Value = score_per_tick * (spins - HitObject.SpinsRequired);
|
||||||
}
|
}
|
||||||
|
|
||||||
wholeSpins++;
|
completedFullSpins++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,15 +42,10 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
{
|
{
|
||||||
base.ApplyDefaultsToSelf(controlPointInfo, difficulty);
|
base.ApplyDefaultsToSelf(controlPointInfo, difficulty);
|
||||||
|
|
||||||
// spinning doesn't match 1:1 with stable, so let's fudge them easier for the time being.
|
const double maximum_rotations_per_second = 477f / 60f;
|
||||||
const double stable_matching_fudge = 0.6;
|
|
||||||
|
|
||||||
// close to 477rpm
|
|
||||||
const double maximum_rotations_per_second = 8;
|
|
||||||
|
|
||||||
double secondsDuration = Duration / 1000;
|
double secondsDuration = Duration / 1000;
|
||||||
|
double minimumRotationsPerSecond = IBeatmapDifficultyInfo.DifficultyRange(difficulty.OverallDifficulty, 1.5, 2.5, 3.75);
|
||||||
double minimumRotationsPerSecond = stable_matching_fudge * IBeatmapDifficultyInfo.DifficultyRange(difficulty.OverallDifficulty, 3, 5, 7.5);
|
|
||||||
|
|
||||||
SpinsRequired = (int)(secondsDuration * minimumRotationsPerSecond);
|
SpinsRequired = (int)(secondsDuration * minimumRotationsPerSecond);
|
||||||
MaximumBonusSpins = (int)((maximum_rotations_per_second - minimumRotationsPerSecond) * secondsDuration);
|
MaximumBonusSpins = (int)((maximum_rotations_per_second - minimumRotationsPerSecond) * secondsDuration);
|
||||||
|
Loading…
Reference in New Issue
Block a user