mirror of
https://github.com/ppy/osu.git
synced 2025-01-26 21:03:21 +08:00
Fix osu!taiko drum rolls not getting correct tick rate after placement in the editor
This commit is contained in:
parent
b096e03a57
commit
3db080fad2
@ -133,7 +133,6 @@ namespace osu.Game.Rulesets.Taiko.Beatmaps
|
|||||||
StartTime = obj.StartTime,
|
StartTime = obj.StartTime,
|
||||||
Samples = obj.Samples,
|
Samples = obj.Samples,
|
||||||
Duration = taikoDuration,
|
Duration = taikoDuration,
|
||||||
TickRate = beatmap.Difficulty.SliderTickRate == 3 ? 3 : 4,
|
|
||||||
SliderVelocity = obj is IHasSliderVelocity velocityData ? velocityData.SliderVelocity : 1
|
SliderVelocity = obj is IHasSliderVelocity velocityData ? velocityData.SliderVelocity : 1
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
using osu.Game.Rulesets.Objects.Types;
|
using osu.Game.Rulesets.Objects.Types;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Utils;
|
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Beatmaps.ControlPoints;
|
using osu.Game.Beatmaps.ControlPoints;
|
||||||
using osu.Game.Beatmaps.Formats;
|
using osu.Game.Beatmaps.Formats;
|
||||||
@ -68,6 +67,8 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
|||||||
double scoringDistance = base_distance * difficulty.SliderMultiplier * SliderVelocity;
|
double scoringDistance = base_distance * difficulty.SliderMultiplier * SliderVelocity;
|
||||||
Velocity = scoringDistance / timingPoint.BeatLength;
|
Velocity = scoringDistance / timingPoint.BeatLength;
|
||||||
|
|
||||||
|
TickRate = difficulty.SliderTickRate == 3 ? 3 : 4;
|
||||||
|
|
||||||
tickSpacing = timingPoint.BeatLength / TickRate;
|
tickSpacing = timingPoint.BeatLength / TickRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,10 +86,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
|||||||
|
|
||||||
bool first = true;
|
bool first = true;
|
||||||
|
|
||||||
// TODO: this implementation of drum roll tick does not match stable.
|
for (double t = StartTime; t < EndTime + tickSpacing; t += tickSpacing)
|
||||||
// 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)
|
|
||||||
{
|
{
|
||||||
cancellationToken.ThrowIfCancellationRequested();
|
cancellationToken.ThrowIfCancellationRequested();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user