1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-12 21:52:55 +08:00

Fix osu!taiko drum rolls not getting correct tick rate after placement in the editor

This commit is contained in:
Dean Herbert 2023-06-06 16:54:33 +09:00
parent b096e03a57
commit 3db080fad2
2 changed files with 3 additions and 6 deletions

View File

@ -133,7 +133,6 @@ namespace osu.Game.Rulesets.Taiko.Beatmaps
StartTime = obj.StartTime,
Samples = obj.Samples,
Duration = taikoDuration,
TickRate = beatmap.Difficulty.SliderTickRate == 3 ? 3 : 4,
SliderVelocity = obj is IHasSliderVelocity velocityData ? velocityData.SliderVelocity : 1
};
}

View File

@ -4,7 +4,6 @@
using osu.Game.Rulesets.Objects.Types;
using System.Threading;
using osu.Framework.Bindables;
using osu.Framework.Utils;
using osu.Game.Beatmaps;
using osu.Game.Beatmaps.ControlPoints;
using osu.Game.Beatmaps.Formats;
@ -68,6 +67,8 @@ namespace osu.Game.Rulesets.Taiko.Objects
double scoringDistance = base_distance * difficulty.SliderMultiplier * SliderVelocity;
Velocity = scoringDistance / timingPoint.BeatLength;
TickRate = difficulty.SliderTickRate == 3 ? 3 : 4;
tickSpacing = timingPoint.BeatLength / TickRate;
}
@ -85,10 +86,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
bool first = true;
// TODO: this implementation of drum roll tick does not match stable.
// Stable uses next-object intrinsics to decide whether the end of a drum roll gets a tick.
// It also changes the rate of ticks based on BPM. This is quite important.
for (double t = StartTime; Precision.AlmostBigger(EndTime, t, 1); t += tickSpacing)
for (double t = StartTime; t < EndTime + tickSpacing; t += tickSpacing)
{
cancellationToken.ThrowIfCancellationRequested();