1
0
mirror of https://github.com/ppy/osu.git synced 2026-06-06 21:24:15 +08:00

Move control point modification to ConvertBeatmap method

This commit is contained in:
Dean Herbert
2021-09-09 23:45:32 +09:00
Unverified
parent 1952ebece9
commit b16e0cda3d
@@ -49,26 +49,6 @@ namespace osu.Game.Rulesets.Mania.Beatmaps
if (IsForCurrentRuleset)
{
if (beatmap.ControlPointInfo is LegacyControlPointInfo legacyControlPoints)
{
// convert all slider velocity adjustments to scroll speed adjustments.
foreach (var controlPoint in legacyControlPoints.DifficultyPoints.ToArray())
{
double time = controlPoint.Time;
var reference = legacyControlPoints.EffectPointAt(time);
var scrollControlPoint = new EffectControlPoint();
scrollControlPoint.CopyFrom(reference);
scrollControlPoint.ScrollSpeed = controlPoint.SliderVelocity;
legacyControlPoints.Add(time, scrollControlPoint);
// remove the DifficultyControlPoint as we don't need them any more.
legacyControlPoints.GroupAt(time).Remove(controlPoint);
}
}
TargetColumns = GetColumnCountForNonConvert(beatmap.BeatmapInfo);
if (TargetColumns > ManiaRuleset.MAX_STAGE_KEYS)
@@ -105,6 +85,36 @@ namespace osu.Game.Rulesets.Mania.Beatmaps
{
BeatmapDifficulty difficulty = original.BeatmapInfo.BaseDifficulty;
if (IsForCurrentRuleset && original.ControlPointInfo is LegacyControlPointInfo originalLegacyControlPoints)
{
// original is cloned so we're safe to replace control point storage at this point.
original.ControlPointInfo = new LegacyControlPointInfo();
// convert all slider velocity adjustments to scroll speed adjustments.
foreach (var controlPoint in originalLegacyControlPoints.AllControlPoints)
{
double time = controlPoint.Time;
switch (controlPoint)
{
default:
original.ControlPointInfo.Add(time, controlPoint);
break;
case DifficultyControlPoint difficultyPoint:
var reference = originalLegacyControlPoints.EffectPointAt(time);
var scrollControlPoint = new EffectControlPoint();
scrollControlPoint.CopyFrom(reference);
scrollControlPoint.ScrollSpeed = difficultyPoint.SliderVelocity;
original.ControlPointInfo.Add(time, scrollControlPoint);
break;
}
}
}
int seed = (int)MathF.Round(difficulty.DrainRate + difficulty.CircleSize) * 20 + (int)(difficulty.OverallDifficulty * 41.2) + (int)MathF.Round(difficulty.ApproachRate);
Random = new FastRandom(seed);