mirror of
https://github.com/ppy/osu.git
synced 2024-11-11 12:57:36 +08:00
Merge pull request #16409 from smoogipoo/fix-most-common-beatlength
Ensure first control point starts at 0 in most common beat length calculation
This commit is contained in:
commit
070903f5e6
@ -93,8 +93,12 @@ namespace osu.Game.Beatmaps
|
|||||||
if (t.Time > lastTime)
|
if (t.Time > lastTime)
|
||||||
return (beatLength: t.BeatLength, 0);
|
return (beatLength: t.BeatLength, 0);
|
||||||
|
|
||||||
|
// osu-stable forced the first control point to start at 0.
|
||||||
|
// This is reproduced here to maintain compatibility around osu!mania scroll speed and song select display.
|
||||||
|
double currentTime = i == 0 ? 0 : t.Time;
|
||||||
double nextTime = i == ControlPointInfo.TimingPoints.Count - 1 ? lastTime : ControlPointInfo.TimingPoints[i + 1].Time;
|
double nextTime = i == ControlPointInfo.TimingPoints.Count - 1 ? lastTime : ControlPointInfo.TimingPoints[i + 1].Time;
|
||||||
return (beatLength: t.BeatLength, duration: nextTime - t.Time);
|
|
||||||
|
return (beatLength: t.BeatLength, duration: nextTime - currentTime);
|
||||||
})
|
})
|
||||||
// Aggregate durations into a set of (beatLength, duration) tuples for each beat length
|
// Aggregate durations into a set of (beatLength, duration) tuples for each beat length
|
||||||
.GroupBy(t => Math.Round(t.beatLength * 1000) / 1000)
|
.GroupBy(t => Math.Round(t.beatLength * 1000) / 1000)
|
||||||
|
Loading…
Reference in New Issue
Block a user