Fix NotesLoaderDWI.cpp

This resolves the following issues with DWI format simfiles:

- DWI files containing valid charts may fail to load and appear to have 0 or 1 notes
- DWI files opened in the editor would not save the original contents of the chart into a new file
This commit is contained in:
sukibaby
2024-06-08 16:18:01 -07:00
committed by teejusb
parent 12ceb7fc7c
commit 829f49f622
+11 -1
View File
@@ -190,6 +190,12 @@ static StepsType GetTypeFromMode(const RString &mode)
static NoteData ParseNoteData(RString &step1, RString &step2,
Steps &out, const RString &path)
{
if (step1.size() < 2 && step2.size() < 2)
{
LOG->Warn("Didn't get enough data when attempting to load a DWI file");
// Handle the error by returning an empty NoteData object
return NoteData();
}
g_mapDanceNoteToNoteDataColumn.clear();
switch( out.m_StepsType )
{
@@ -300,7 +306,7 @@ static NoteData ParseNoteData(RString &step1, RString &step2,
/* It's a jump.
* We need to keep reading notes until we hit a >. */
jump = true;
i++;
c = sStepData[i++];
}
const int iIndex = BeatToNoteRow( (float)fCurrentBeat );
@@ -355,6 +361,10 @@ static NoteData ParseNoteData(RString &step1, RString &step2,
iIndex,
TAP_ORIGINAL_HOLD_HEAD);
}
if (jump && i < sStepData.size()) {
c = sStepData[i++];
}
}
while( jump );
fCurrentBeat += fCurrentIncrementer;