mirror of
https://github.com/osukey/osukey.git
synced 2025-06-05 21:07:18 +09:00
Handle timingpoint FormatException
This commit is contained in:
parent
d24d81d8a9
commit
fd9480cfb6
@ -277,87 +277,93 @@ namespace osu.Game.Beatmaps.Formats
|
|||||||
|
|
||||||
private void handleTimingPoint(string line)
|
private void handleTimingPoint(string line)
|
||||||
{
|
{
|
||||||
string[] split = line.Split(',');
|
try
|
||||||
|
|
||||||
double time = getOffsetTime(double.Parse(split[0].Trim(), NumberFormatInfo.InvariantInfo));
|
|
||||||
double beatLength = double.Parse(split[1].Trim(), NumberFormatInfo.InvariantInfo);
|
|
||||||
double speedMultiplier = beatLength < 0 ? 100.0 / -beatLength : 1;
|
|
||||||
|
|
||||||
TimeSignatures timeSignature = TimeSignatures.SimpleQuadruple;
|
|
||||||
if (split.Length >= 3)
|
|
||||||
timeSignature = split[2][0] == '0' ? TimeSignatures.SimpleQuadruple : (TimeSignatures)int.Parse(split[2]);
|
|
||||||
|
|
||||||
LegacySampleBank sampleSet = defaultSampleBank;
|
|
||||||
if (split.Length >= 4)
|
|
||||||
sampleSet = (LegacySampleBank)int.Parse(split[3]);
|
|
||||||
|
|
||||||
//SampleBank sampleBank = SampleBank.Default;
|
|
||||||
//if (split.Length >= 5)
|
|
||||||
// sampleBank = (SampleBank)int.Parse(split[4]);
|
|
||||||
|
|
||||||
int sampleVolume = defaultSampleVolume;
|
|
||||||
if (split.Length >= 6)
|
|
||||||
sampleVolume = int.Parse(split[5]);
|
|
||||||
|
|
||||||
bool timingChange = true;
|
|
||||||
if (split.Length >= 7)
|
|
||||||
timingChange = split[6][0] == '1';
|
|
||||||
|
|
||||||
bool kiaiMode = false;
|
|
||||||
bool omitFirstBarSignature = false;
|
|
||||||
if (split.Length >= 8)
|
|
||||||
{
|
{
|
||||||
int effectFlags = int.Parse(split[7]);
|
string[] split = line.Split(',');
|
||||||
kiaiMode = (effectFlags & 1) > 0;
|
|
||||||
omitFirstBarSignature = (effectFlags & 8) > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
string stringSampleSet = sampleSet.ToString().ToLower();
|
double time = getOffsetTime(double.Parse(split[0].Trim(), NumberFormatInfo.InvariantInfo));
|
||||||
if (stringSampleSet == @"none")
|
double beatLength = double.Parse(split[1].Trim(), NumberFormatInfo.InvariantInfo);
|
||||||
stringSampleSet = @"normal";
|
double speedMultiplier = beatLength < 0 ? 100.0 / -beatLength : 1;
|
||||||
|
|
||||||
DifficultyControlPoint difficultyPoint = beatmap.ControlPointInfo.DifficultyPointAt(time);
|
TimeSignatures timeSignature = TimeSignatures.SimpleQuadruple;
|
||||||
SampleControlPoint samplePoint = beatmap.ControlPointInfo.SamplePointAt(time);
|
if (split.Length >= 3)
|
||||||
EffectControlPoint effectPoint = beatmap.ControlPointInfo.EffectPointAt(time);
|
timeSignature = split[2][0] == '0' ? TimeSignatures.SimpleQuadruple : (TimeSignatures)int.Parse(split[2]);
|
||||||
|
|
||||||
if (timingChange)
|
LegacySampleBank sampleSet = defaultSampleBank;
|
||||||
{
|
if (split.Length >= 4)
|
||||||
beatmap.ControlPointInfo.TimingPoints.Add(new TimingControlPoint
|
sampleSet = (LegacySampleBank)int.Parse(split[3]);
|
||||||
|
|
||||||
|
//SampleBank sampleBank = SampleBank.Default;
|
||||||
|
//if (split.Length >= 5)
|
||||||
|
// sampleBank = (SampleBank)int.Parse(split[4]);
|
||||||
|
|
||||||
|
int sampleVolume = defaultSampleVolume;
|
||||||
|
if (split.Length >= 6)
|
||||||
|
sampleVolume = int.Parse(split[5]);
|
||||||
|
|
||||||
|
bool timingChange = true;
|
||||||
|
if (split.Length >= 7)
|
||||||
|
timingChange = split[6][0] == '1';
|
||||||
|
|
||||||
|
bool kiaiMode = false;
|
||||||
|
bool omitFirstBarSignature = false;
|
||||||
|
if (split.Length >= 8)
|
||||||
{
|
{
|
||||||
Time = time,
|
int effectFlags = int.Parse(split[7]);
|
||||||
BeatLength = beatLength,
|
kiaiMode = (effectFlags & 1) > 0;
|
||||||
TimeSignature = timeSignature
|
omitFirstBarSignature = (effectFlags & 8) > 0;
|
||||||
});
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (speedMultiplier != difficultyPoint.SpeedMultiplier)
|
string stringSampleSet = sampleSet.ToString().ToLower();
|
||||||
{
|
if (stringSampleSet == @"none")
|
||||||
beatmap.ControlPointInfo.DifficultyPoints.RemoveAll(x => x.Time == time);
|
stringSampleSet = @"normal";
|
||||||
beatmap.ControlPointInfo.DifficultyPoints.Add(new DifficultyControlPoint
|
|
||||||
{
|
|
||||||
Time = time,
|
|
||||||
SpeedMultiplier = speedMultiplier
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stringSampleSet != samplePoint.SampleBank || sampleVolume != samplePoint.SampleVolume)
|
DifficultyControlPoint difficultyPoint = beatmap.ControlPointInfo.DifficultyPointAt(time);
|
||||||
{
|
SampleControlPoint samplePoint = beatmap.ControlPointInfo.SamplePointAt(time);
|
||||||
beatmap.ControlPointInfo.SamplePoints.Add(new SampleControlPoint
|
EffectControlPoint effectPoint = beatmap.ControlPointInfo.EffectPointAt(time);
|
||||||
{
|
|
||||||
Time = time,
|
|
||||||
SampleBank = stringSampleSet,
|
|
||||||
SampleVolume = sampleVolume
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (kiaiMode != effectPoint.KiaiMode || omitFirstBarSignature != effectPoint.OmitFirstBarLine)
|
if (timingChange)
|
||||||
{
|
|
||||||
beatmap.ControlPointInfo.EffectPoints.Add(new EffectControlPoint
|
|
||||||
{
|
{
|
||||||
Time = time,
|
beatmap.ControlPointInfo.TimingPoints.Add(new TimingControlPoint
|
||||||
KiaiMode = kiaiMode,
|
{
|
||||||
OmitFirstBarLine = omitFirstBarSignature
|
Time = time,
|
||||||
});
|
BeatLength = beatLength,
|
||||||
|
TimeSignature = timeSignature
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (speedMultiplier != difficultyPoint.SpeedMultiplier)
|
||||||
|
{
|
||||||
|
beatmap.ControlPointInfo.DifficultyPoints.RemoveAll(x => x.Time == time);
|
||||||
|
beatmap.ControlPointInfo.DifficultyPoints.Add(new DifficultyControlPoint
|
||||||
|
{
|
||||||
|
Time = time,
|
||||||
|
SpeedMultiplier = speedMultiplier
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stringSampleSet != samplePoint.SampleBank || sampleVolume != samplePoint.SampleVolume)
|
||||||
|
{
|
||||||
|
beatmap.ControlPointInfo.SamplePoints.Add(new SampleControlPoint
|
||||||
|
{
|
||||||
|
Time = time,
|
||||||
|
SampleBank = stringSampleSet,
|
||||||
|
SampleVolume = sampleVolume
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (kiaiMode != effectPoint.KiaiMode || omitFirstBarSignature != effectPoint.OmitFirstBarLine)
|
||||||
|
{
|
||||||
|
beatmap.ControlPointInfo.EffectPoints.Add(new EffectControlPoint
|
||||||
|
{
|
||||||
|
Time = time,
|
||||||
|
KiaiMode = kiaiMode,
|
||||||
|
OmitFirstBarLine = omitFirstBarSignature
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (FormatException e)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user