DWI read/write fixes
This commit is contained in:
@@ -300,7 +300,8 @@ bool DWILoader::LoadFromDWITokens(
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
int iTailRow = iHeadRow;
|
int iTailRow = iHeadRow;
|
||||||
while( newNoteData.GetNextTapNoteRowForTrack(t, iTailRow) )
|
bool bFound = false;
|
||||||
|
while( !bFound && newNoteData.GetNextTapNoteRowForTrack(t, iTailRow) )
|
||||||
{
|
{
|
||||||
const TapNote &TailTap = newNoteData.GetTapNote( t, iTailRow );
|
const TapNote &TailTap = newNoteData.GetTapNote( t, iTailRow );
|
||||||
if( TailTap.type == TapNote::empty )
|
if( TailTap.type == TapNote::empty )
|
||||||
@@ -309,7 +310,18 @@ bool DWILoader::LoadFromDWITokens(
|
|||||||
newNoteData.SetTapNote( t, iTailRow, TAP_EMPTY );
|
newNoteData.SetTapNote( t, iTailRow, TAP_EMPTY );
|
||||||
tn.iDuration = iTailRow - iHeadRow;
|
tn.iDuration = iTailRow - iHeadRow;
|
||||||
newNoteData.SetTapNote( t, iHeadRow, tn );
|
newNoteData.SetTapNote( t, iHeadRow, tn );
|
||||||
break;
|
bFound = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !bFound )
|
||||||
|
{
|
||||||
|
/* The hold was never closed. */
|
||||||
|
LOG->Warn( "File \"%s\":\"%s\" failed to close a hold note on track %i",
|
||||||
|
m_sLoadingFile.c_str(),
|
||||||
|
sDescription.c_str(),
|
||||||
|
t );
|
||||||
|
|
||||||
|
newNoteData.SetTapNote( t, iHeadRow, TAP_EMPTY );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,6 +190,7 @@ void NotesWriterDWI::WriteDWINotesField( RageFile &f, const Steps &out, int star
|
|||||||
{
|
{
|
||||||
NoteData notedata;
|
NoteData notedata;
|
||||||
out.GetNoteData( notedata );
|
out.GetNoteData( notedata );
|
||||||
|
NoteDataUtil::InsertHoldTails( notedata );
|
||||||
|
|
||||||
const int iLastMeasure = int( notedata.GetLastBeat()/BEATS_PER_MEASURE );
|
const int iLastMeasure = int( notedata.GetLastBeat()/BEATS_PER_MEASURE );
|
||||||
for( int m=0; m<=iLastMeasure; m++ ) // foreach measure
|
for( int m=0; m<=iLastMeasure; m++ ) // foreach measure
|
||||||
|
|||||||
Reference in New Issue
Block a user