mirror of
https://github.com/osukey/osukey.git
synced 2025-08-03 14:46:38 +09:00
Add grouping of ControlPoints
This commit is contained in:
@ -369,31 +369,29 @@ namespace osu.Game.Beatmaps.Formats
|
||||
if (timingChange)
|
||||
{
|
||||
var controlPoint = CreateTimingControlPoint();
|
||||
controlPoint.Time = time;
|
||||
controlPoint.BeatLength = beatLength;
|
||||
controlPoint.TimeSignature = timeSignature;
|
||||
|
||||
handleTimingControlPoint(controlPoint);
|
||||
beatmap.ControlPointInfo.Add(time, controlPoint);
|
||||
}
|
||||
else
|
||||
{
|
||||
beatmap.ControlPointInfo.Add(time, new DifficultyControlPoint
|
||||
{
|
||||
SpeedMultiplier = speedMultiplier,
|
||||
AutoGenerated = timingChange
|
||||
});
|
||||
}
|
||||
|
||||
handleDifficultyControlPoint(new DifficultyControlPoint
|
||||
beatmap.ControlPointInfo.Add(time, new EffectControlPoint
|
||||
{
|
||||
Time = time,
|
||||
SpeedMultiplier = speedMultiplier,
|
||||
AutoGenerated = timingChange
|
||||
});
|
||||
|
||||
handleEffectControlPoint(new EffectControlPoint
|
||||
{
|
||||
Time = time,
|
||||
KiaiMode = kiaiMode,
|
||||
OmitFirstBarLine = omitFirstBarSignature,
|
||||
AutoGenerated = timingChange
|
||||
});
|
||||
|
||||
handleSampleControlPoint(new LegacySampleControlPoint
|
||||
beatmap.ControlPointInfo.Add(time, new LegacySampleControlPoint
|
||||
{
|
||||
Time = time,
|
||||
SampleBank = stringSampleSet,
|
||||
SampleVolume = sampleVolume,
|
||||
CustomSampleBank = customSampleBank,
|
||||
@ -401,74 +399,6 @@ namespace osu.Game.Beatmaps.Formats
|
||||
});
|
||||
}
|
||||
|
||||
private void handleTimingControlPoint(TimingControlPoint newPoint)
|
||||
{
|
||||
var existing = beatmap.ControlPointInfo.TimingPointAt(newPoint.Time);
|
||||
|
||||
if (existing.Time == newPoint.Time)
|
||||
{
|
||||
// autogenerated points should not replace non-autogenerated.
|
||||
// this allows for incorrectly ordered timing points to still be correctly handled.
|
||||
if (newPoint.AutoGenerated && !existing.AutoGenerated)
|
||||
return;
|
||||
|
||||
beatmap.ControlPointInfo.TimingPoints.Remove(existing);
|
||||
}
|
||||
|
||||
beatmap.ControlPointInfo.TimingPoints.Add(newPoint);
|
||||
}
|
||||
|
||||
private void handleDifficultyControlPoint(DifficultyControlPoint newPoint)
|
||||
{
|
||||
var existing = beatmap.ControlPointInfo.DifficultyPointAt(newPoint.Time);
|
||||
|
||||
if (existing.Time == newPoint.Time)
|
||||
{
|
||||
// autogenerated points should not replace non-autogenerated.
|
||||
// this allows for incorrectly ordered timing points to still be correctly handled.
|
||||
if (newPoint.AutoGenerated && !existing.AutoGenerated)
|
||||
return;
|
||||
|
||||
beatmap.ControlPointInfo.DifficultyPoints.Remove(existing);
|
||||
}
|
||||
|
||||
beatmap.ControlPointInfo.DifficultyPoints.Add(newPoint);
|
||||
}
|
||||
|
||||
private void handleEffectControlPoint(EffectControlPoint newPoint)
|
||||
{
|
||||
var existing = beatmap.ControlPointInfo.EffectPointAt(newPoint.Time);
|
||||
|
||||
if (existing.Time == newPoint.Time)
|
||||
{
|
||||
// autogenerated points should not replace non-autogenerated.
|
||||
// this allows for incorrectly ordered timing points to still be correctly handled.
|
||||
if (newPoint.AutoGenerated && !existing.AutoGenerated)
|
||||
return;
|
||||
|
||||
beatmap.ControlPointInfo.EffectPoints.Remove(existing);
|
||||
}
|
||||
|
||||
beatmap.ControlPointInfo.EffectPoints.Add(newPoint);
|
||||
}
|
||||
|
||||
private void handleSampleControlPoint(SampleControlPoint newPoint)
|
||||
{
|
||||
var existing = beatmap.ControlPointInfo.SamplePointAt(newPoint.Time);
|
||||
|
||||
if (existing.Time == newPoint.Time)
|
||||
{
|
||||
// autogenerated points should not replace non-autogenerated.
|
||||
// this allows for incorrectly ordered timing points to still be correctly handled.
|
||||
if (newPoint.AutoGenerated && !existing.AutoGenerated)
|
||||
return;
|
||||
|
||||
beatmap.ControlPointInfo.SamplePoints.Remove(existing);
|
||||
}
|
||||
|
||||
beatmap.ControlPointInfo.SamplePoints.Add(newPoint);
|
||||
}
|
||||
|
||||
private void handleHitObject(string line)
|
||||
{
|
||||
// If the ruleset wasn't specified, assume the osu!standard ruleset.
|
||||
|
Reference in New Issue
Block a user