1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-28 08:43:20 +08:00

Ensure spinners only handle input during their hittable time

While this was already being enforced inside of `CheckForResult`, the
internal tracking values of rotation were still being incremented as
long as the `DrawableSpinner` was present. This resulted in incorrect
SPM values being displayed if a user was to start spinning before the
object's `StartTime`.

Kind of annoying to write a test for (there's no setup for spinners yet)
but am willing to do so if that is deemed necessary.

Closes https://github.com/ppy/osu/issues/11600.
This commit is contained in:
Dean Herbert 2021-01-29 19:55:51 +09:00
parent cd8ef5373d
commit f25809d35f

View File

@ -18,6 +18,7 @@ using osu.Game.Rulesets.Osu.Judgements;
using osu.Game.Rulesets.Osu.Skinning;
using osu.Game.Rulesets.Osu.Skinning.Default;
using osu.Game.Rulesets.Scoring;
using osu.Game.Screens.Edit.Compose.Components;
using osu.Game.Screens.Ranking;
using osu.Game.Skinning;
@ -242,6 +243,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
{
base.Update();
HandleUserInput = Time.Current >= HitObject.StartTime && Time.Current <= HitObject.EndTime;
if (HandleUserInput)
RotationTracker.Tracking = !Result.HasResult && (OsuActionInputManager?.PressedActions.Any(x => x == OsuAction.LeftButton || x == OsuAction.RightButton) ?? false);
@ -255,6 +258,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
if (!SpmCounter.IsPresent && RotationTracker.Tracking)
SpmCounter.FadeIn(HitObject.TimeFadeIn);
SpmCounter.SetRotation(Result.RateAdjustedRotation);
updateBonusScore();