Merge remote-tracking branch 'remotes/original/master' into upstream
# Conflicts: # src/itdelatrisu/opsu/Container.java # src/itdelatrisu/opsu/GameData.java # src/itdelatrisu/opsu/Options.java # src/itdelatrisu/opsu/audio/MusicController.java # src/itdelatrisu/opsu/objects/Circle.java # src/itdelatrisu/opsu/objects/Slider.java # src/itdelatrisu/opsu/render/CurveRenderState.java # src/itdelatrisu/opsu/states/Game.java # src/itdelatrisu/opsu/states/MainMenu.java # src/itdelatrisu/opsu/states/SongMenu.java # src/itdelatrisu/opsu/ui/Colors.java # src/itdelatrisu/opsu/ui/MenuButton.java
This commit is contained in:
@@ -112,6 +112,7 @@ public class BeatmapParser {
|
||||
|
||||
// parse directories
|
||||
BeatmapSetNode lastNode = null;
|
||||
long timestamp = System.currentTimeMillis();
|
||||
for (File dir : dirs) {
|
||||
currentDirectoryIndex++;
|
||||
if (!dir.isDirectory())
|
||||
@@ -160,6 +161,7 @@ public class BeatmapParser {
|
||||
|
||||
// add to parsed beatmap list
|
||||
if (beatmap != null) {
|
||||
beatmap.dateAdded = timestamp;
|
||||
beatmaps.add(beatmap);
|
||||
parsedBeatmaps.add(beatmap);
|
||||
}
|
||||
@@ -547,21 +549,7 @@ public class BeatmapParser {
|
||||
break;
|
||||
|
||||
try {
|
||||
// parse timing point
|
||||
TimingPoint timingPoint = new TimingPoint(line);
|
||||
|
||||
// calculate BPM
|
||||
if (!timingPoint.isInherited()) {
|
||||
int bpm = Math.round(60000 / timingPoint.getBeatLength());
|
||||
if (beatmap.bpmMin == 0)
|
||||
beatmap.bpmMin = beatmap.bpmMax = bpm;
|
||||
else if (bpm < beatmap.bpmMin)
|
||||
beatmap.bpmMin = bpm;
|
||||
else if (bpm > beatmap.bpmMax)
|
||||
beatmap.bpmMax = bpm;
|
||||
}
|
||||
|
||||
beatmap.timingPoints.add(timingPoint);
|
||||
parseTimingPoint(beatmap, line);
|
||||
} catch (Exception e) {
|
||||
Log.warn(String.format("Failed to read timing point '%s' for file '%s'.",
|
||||
line, file.getAbsolutePath()), e);
|
||||
@@ -678,6 +666,71 @@ public class BeatmapParser {
|
||||
return beatmap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses a timing point and adds it to the beatmap.
|
||||
* @param beatmap the beatmap
|
||||
* @param line the line containing the unparsed timing point
|
||||
*/
|
||||
private static void parseTimingPoint(Beatmap beatmap, String line) {
|
||||
// parse timing point
|
||||
TimingPoint timingPoint = new TimingPoint(line);
|
||||
beatmap.timingPoints.add(timingPoint);
|
||||
|
||||
// calculate BPM
|
||||
if (!timingPoint.isInherited()) {
|
||||
int bpm = Math.round(60000 / timingPoint.getBeatLength());
|
||||
if (beatmap.bpmMin == 0) {
|
||||
beatmap.bpmMin = beatmap.bpmMax = bpm;
|
||||
} else if (bpm < beatmap.bpmMin) {
|
||||
beatmap.bpmMin = bpm;
|
||||
} else if (bpm > beatmap.bpmMax) {
|
||||
beatmap.bpmMax = bpm;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses all timing points in a beatmap.
|
||||
* @param beatmap the beatmap to parse
|
||||
*/
|
||||
public static void parseTimingPoints(Beatmap beatmap) {
|
||||
if (beatmap.timingPoints != null) // already parsed
|
||||
return;
|
||||
|
||||
beatmap.timingPoints = new ArrayList<TimingPoint>();
|
||||
|
||||
try (BufferedReader in = new BufferedReader(new FileReader(beatmap.getFile()))) {
|
||||
String line = in.readLine();
|
||||
while (line != null) {
|
||||
line = line.trim();
|
||||
if (!line.equals("[TimingPoints]"))
|
||||
line = in.readLine();
|
||||
else
|
||||
break;
|
||||
}
|
||||
if (line == null) // no timing points
|
||||
return;
|
||||
|
||||
while ((line = in.readLine()) != null) {
|
||||
line = line.trim();
|
||||
if (!isValidLine(line))
|
||||
continue;
|
||||
if (line.charAt(0) == '[')
|
||||
break;
|
||||
|
||||
try {
|
||||
parseTimingPoint(beatmap, line);
|
||||
} catch (Exception e) {
|
||||
Log.warn(String.format("Failed to read timing point '%s' for file '%s'.",
|
||||
line, beatmap.getFile().getAbsolutePath()), e);
|
||||
}
|
||||
}
|
||||
beatmap.timingPoints.trimToSize();
|
||||
} catch (IOException e) {
|
||||
ErrorHandler.error(String.format("Failed to read file '%s'.", beatmap.getFile().getAbsolutePath()), e, false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses all hit objects in a beatmap.
|
||||
* @param beatmap the beatmap to parse
|
||||
|
||||
Reference in New Issue
Block a user