Enums for TapNoteType, TapNoteSubType, and TapNoteSource

I intend to make additional useful information available on judgments,
such as TapNoteType and TapNoteSubType( for hold judgments ).

I am submitting this part as a separate pull request because it is more
generally applicable to anything TapNote related.
This commit is contained in:
sigatrev
2014-07-25 18:45:02 -05:00
committed by Jonathan Payne
parent 3945a4a34b
commit 82cb4a198d
28 changed files with 462 additions and 427 deletions
+92 -92
View File
@@ -181,7 +181,7 @@ static void LoadFromSMNoteDataStringWithPlayer( NoteData& out, const RString &sS
float fDurationSeconds = 0;
if( sscanf( p, "%255[^:]:%f}", szModifiers, &fDurationSeconds ) == 2 ) // not fatal if this fails due to malformed data
{
tn.type = TapNote::attack;
tn.type = TapNoteType_Attack;
tn.sAttackModifiers = szModifiers;
tn.fAttackDurationSeconds = fDurationSeconds;
}
@@ -231,7 +231,7 @@ static void LoadFromSMNoteDataStringWithPlayer( NoteData& out, const RString &sS
/* Optimization: if we pass TAP_EMPTY, NoteData will do a search
* to remove anything in this position. We know that there's nothing
* there, so avoid the search. */
if( tn.type != TapNote::empty && ch != '3' )
if( tn.type != TapNoteType_Empty && ch != '3' )
{
tn.pn = pn;
out.SetTapNote( iTrack, iIndex, tn );
@@ -251,7 +251,7 @@ static void LoadFromSMNoteDataStringWithPlayer( NoteData& out, const RString &sS
{
NoteData::iterator next = Increment( begin );
const TapNote &tn = begin->second;
if( tn.type == TapNote::hold_head && tn.iDuration == MAX_NOTE_ROW )
if( tn.type == TapNoteType_HoldHead && tn.iDuration == MAX_NOTE_ROW )
{
int iRow = begin->first;
LOG->UserLog( "", "", "While loading .sm/.ssc note data, there was an unmatched 2 at beat %f", NoteRowToBeat(iRow) );
@@ -325,11 +325,11 @@ void NoteDataUtil::InsertHoldTails( NoteData &inout )
{
int iRow = begin->first;
const TapNote &tn = begin->second;
if( tn.type != TapNote::hold_head )
if( tn.type != TapNoteType_HoldHead )
continue;
TapNote tail = tn;
tail.type = TapNote::hold_tail;
tail.type = TapNoteType_HoldTail;
/* If iDuration is 0, we'd end up overwriting the head with the tail
* (and invalidating our iterator). Empty hold notes aren't valid. */
@@ -387,36 +387,36 @@ void NoteDataUtil::GetSMNoteDataString( const NoteData &in, RString &sRet )
char c;
switch( tn.type )
{
case TapNote::empty: c = '0'; break;
case TapNote::tap: c = '1'; break;
case TapNote::hold_head:
case TapNoteType_Empty: c = '0'; break;
case TapNoteType_Tap: c = '1'; break;
case TapNoteType_HoldHead:
switch( tn.subType )
{
case TapNote::hold_head_hold: c = '2'; break;
case TapNote::hold_head_roll: c = '4'; break;
//case TapNote::hold_head_mine: c = 'N'; break;
case TapNoteSubType_Hold: c = '2'; break;
case TapNoteSubType_Roll: c = '4'; break;
//case TapNoteSubType_Mine: c = 'N'; break;
default:
FAIL_M(ssprintf("Invalid tap note subtype: %i", tn.subType));
}
break;
case TapNote::hold_tail: c = '3'; break;
case TapNote::mine: c = 'M'; break;
case TapNote::attack: c = 'A'; break;
case TapNote::autoKeysound: c = 'K'; break;
case TapNote::lift: c = 'L'; break;
case TapNote::fake: c = 'F'; break;
case TapNoteType_HoldTail: c = '3'; break;
case TapNoteType_Mine: c = 'M'; break;
case TapNoteType_Attack: c = 'A'; break;
case TapNoteType_AutoKeysound: c = 'K'; break;
case TapNoteType_Lift: c = 'L'; break;
case TapNoteType_Fake: c = 'F'; break;
default:
c = '\0';
FAIL_M(ssprintf("Invalid tap note type: %i", tn.type));
}
sRet.append( 1, c );
if( tn.type == TapNote::attack )
if( tn.type == TapNoteType_Attack )
{
sRet.append( ssprintf("{%s:%.2f}", tn.sAttackModifiers.c_str(),
tn.fAttackDurationSeconds) );
}
// hey maybe if we have TapNote::item we can do things here.
// hey maybe if we have TapNoteType_Item we can do things here.
if( tn.iKeysoundIndex >= 0 )
sRet.append( ssprintf("[%d]",tn.iKeysoundIndex) );
}
@@ -482,7 +482,7 @@ void NoteDataUtil::CombineCompositeNoteData( NoteData &out, const vector<NoteDat
int row = i->first;
if( out.IsHoldNoteAtRow(track, i->first) )
continue;
if( i->second.type == TapNote::hold_head )
if( i->second.type == TapNoteType_HoldHead )
out.AddHoldNote( track, row, row + i->second.iDuration, i->second );
else
out.SetTapNote( track, row, i->second );
@@ -592,7 +592,7 @@ void PlaceAutoKeysound( NoteData &out, int row, TapNote akTap )
if( iEmptyTrack != -1 )
{
akTap.type = TapNote::autoKeysound;
akTap.type = TapNoteType_AutoKeysound;
out.SetTapNote( iEmptyTrack, iEmptyRow, akTap );
}
}
@@ -623,12 +623,12 @@ void NoteDataUtil::LoadOverlapped( const NoteData &in, NoteData &out, int iNewNu
for( int iTrackFrom = 0; iTrackFrom < in.GetNumTracks(); ++iTrackFrom )
{
const TapNote &tnFrom = in.GetTapNote( iTrackFrom, row );
if( tnFrom.type == TapNote::empty || tnFrom.type == TapNote::autoKeysound )
if( tnFrom.type == TapNoteType_Empty || tnFrom.type == TapNoteType_AutoKeysound )
continue;
// If this is a hold note, find the end.
int iEndIndex = row;
if( tnFrom.type == TapNote::hold_head )
if( tnFrom.type == TapNoteType_HoldHead )
iEndIndex = row + tnFrom.iDuration;
int &iTrackTo = DestRow[iTrackFrom];
@@ -659,7 +659,7 @@ void NoteDataUtil::LoadOverlapped( const NoteData &in, NoteData &out, int iNewNu
LastSourceTrack[iTrackTo] = iTrackFrom;
LastSourceRow[iTrackTo] = iEndIndex;
out.SetTapNote( iTrackTo, row, tnFrom );
if( tnFrom.type == TapNote::hold_head )
if( tnFrom.type == TapNoteType_HoldHead )
{
const TapNote &tnTail = in.GetTapNote( iTrackFrom, iEndIndex );
out.SetTapNote( iTrackTo, iEndIndex, tnTail );
@@ -670,7 +670,7 @@ void NoteDataUtil::LoadOverlapped( const NoteData &in, NoteData &out, int iNewNu
for( int iTrackFrom = 0; iTrackFrom < in.GetNumTracks(); ++iTrackFrom )
{
const TapNote &tnFrom = in.GetTapNote( iTrackFrom, row );
if( tnFrom.type != TapNote::autoKeysound )
if( tnFrom.type != TapNoteType_AutoKeysound )
continue;
PlaceAutoKeysound( out, row, tnFrom );
@@ -685,7 +685,7 @@ int FindLongestOverlappingHoldNoteForAnyTrack( const NoteData &in, int iRow )
for( int t=0; t<in.GetNumTracks(); t++ )
{
const TapNote &tn = in.GetTapNote( t, iRow );
if( tn.type == TapNote::hold_head )
if( tn.type == TapNoteType_HoldHead )
iMaxTailRow = max( iMaxTailRow, iRow + tn.iDuration );
}
@@ -803,10 +803,10 @@ RadarStats CalculateRadarStatsFast( const NoteData &in, RadarStats &out )
const TapNote &tn = in.GetTapNote(t, r);
switch( tn.type )
{
case TapNote::mine:
case TapNote::empty:
case TapNote::fake:
case TapNote::autoKeysound:
case TapNoteType_Mine:
case TapNoteType_Empty:
case TapNoteType_Fake:
case TapNoteType_AutoKeysound:
continue; // skip these types - they don't count
default: break;
}
@@ -821,12 +821,12 @@ RadarStats CalculateRadarStatsFast( const NoteData &in, RadarStats &out )
else
itr->second++;
if( tn.type == TapNote::tap || tn.type == TapNote::lift || tn.type == TapNote::hold_head )
if( tn.type == TapNoteType_Tap || tn.type == TapNoteType_Lift || tn.type == TapNoteType_HoldHead )
{
simultaneousMapTapHoldHead[r] = 1;
}
if( tn.type == TapNote::hold_head )
if( tn.type == TapNoteType_HoldHead )
{
int searchStartRow = r + 1;
int searchEndRow = r + tn.iDuration;
@@ -834,9 +834,9 @@ RadarStats CalculateRadarStatsFast( const NoteData &in, RadarStats &out )
{
switch( in.GetTapNote(t, rr).type )
{
case TapNote::mine:
case TapNote::empty:
case TapNote::fake:
case TapNoteType_Mine:
case TapNoteType_Empty:
case TapNoteType_Fake:
continue; // skip these types - they don't count
default: break;
}
@@ -980,10 +980,10 @@ void NoteDataUtil::RemoveHoldNotes( NoteData &in, int iStartIndex, int iEndIndex
in.GetTapNoteRangeInclusive( t, iStartIndex, iEndIndex, begin, end );
for( ; begin != end; ++begin )
{
if( begin->second.type != TapNote::hold_head ||
begin->second.subType != TapNote::hold_head_hold )
if( begin->second.type != TapNoteType_HoldHead ||
begin->second.subType != TapNoteSubType_Hold )
continue;
begin->second.type = TapNote::tap;
begin->second.type = TapNoteType_Tap;
}
}
in.RevalidateATIs(vector<int>(), false);
@@ -997,10 +997,10 @@ void NoteDataUtil::ChangeRollsToHolds( NoteData &in, int iStartIndex, int iEndIn
in.GetTapNoteRangeInclusive( t, iStartIndex, iEndIndex, begin, end );
for( ; begin != end; ++begin )
{
if( begin->second.type != TapNote::hold_head ||
begin->second.subType != TapNote::hold_head_roll )
if( begin->second.type != TapNoteType_HoldHead ||
begin->second.subType != TapNoteSubType_Roll )
continue;
begin->second.subType = TapNote::hold_head_hold;
begin->second.subType = TapNoteSubType_Hold;
}
}
in.RevalidateATIs(vector<int>(), false);
@@ -1014,10 +1014,10 @@ void NoteDataUtil::ChangeHoldsToRolls( NoteData &in, int iStartIndex, int iEndIn
in.GetTapNoteRangeInclusive( t, iStartIndex, iEndIndex, begin, end );
for( ; begin != end; ++begin )
{
if( begin->second.type != TapNote::hold_head ||
begin->second.subType != TapNote::hold_head_hold )
if( begin->second.type != TapNoteType_HoldHead ||
begin->second.subType != TapNoteSubType_Hold )
continue;
begin->second.subType = TapNote::hold_head_roll;
begin->second.subType = TapNoteSubType_Roll;
}
}
in.RevalidateATIs(vector<int>(), false);
@@ -1052,7 +1052,7 @@ void NoteDataUtil::RemoveSimultaneousNotes( NoteData &in, int iMaxSimultaneous,
for( int t=0; iTracksToRemove>0 && t<in.GetNumTracks(); t++ )
{
const TapNote &tn = in.GetTapNote(t,r);
if( tn.type == TapNote::tap || tn.type == TapNote::hold_head )
if( tn.type == TapNoteType_Tap || tn.type == TapNoteType_HoldHead )
{
in.SetTapNote( t, r, TAP_EMPTY );
iTracksToRemove--;
@@ -1077,7 +1077,7 @@ void NoteDataUtil::RemoveQuads( NoteData &inout, int iStartIndex, int iEndIndex
RemoveSimultaneousNotes( inout, 3, iStartIndex, iEndIndex );
}
void NoteDataUtil::RemoveSpecificTapNotes( NoteData &inout, TapNote::Type tn, int iStartIndex, int iEndIndex )
void NoteDataUtil::RemoveSpecificTapNotes( NoteData &inout, TapNoteType tn, int iStartIndex, int iEndIndex )
{
for( int t=0; t<inout.GetNumTracks(); t++ )
FOREACH_NONEMPTY_ROW_IN_TRACK_RANGE( inout, t, r, iStartIndex, iEndIndex )
@@ -1088,17 +1088,17 @@ void NoteDataUtil::RemoveSpecificTapNotes( NoteData &inout, TapNote::Type tn, in
void NoteDataUtil::RemoveMines( NoteData &inout, int iStartIndex, int iEndIndex )
{
RemoveSpecificTapNotes( inout, TapNote::mine, iStartIndex, iEndIndex );
RemoveSpecificTapNotes( inout, TapNoteType_Mine, iStartIndex, iEndIndex );
}
void NoteDataUtil::RemoveLifts( NoteData &inout, int iStartIndex, int iEndIndex )
{
RemoveSpecificTapNotes( inout, TapNote::lift, iStartIndex, iEndIndex );
RemoveSpecificTapNotes( inout, TapNoteType_Lift, iStartIndex, iEndIndex );
}
void NoteDataUtil::RemoveFakes( NoteData &inout, int iStartIndex, int iEndIndex )
{
RemoveSpecificTapNotes( inout, TapNote::fake, iStartIndex, iEndIndex );
RemoveSpecificTapNotes( inout, TapNoteType_Fake, iStartIndex, iEndIndex );
}
void NoteDataUtil::RemoveAllButOneTap( NoteData &inout, int row )
@@ -1108,7 +1108,7 @@ void NoteDataUtil::RemoveAllButOneTap( NoteData &inout, int row )
int track;
for( track = 0; track < inout.GetNumTracks(); ++track )
{
if( inout.GetTapNote(track, row).type == TapNote::tap )
if( inout.GetTapNote(track, row).type == TapNoteType_Tap )
break;
}
@@ -1117,7 +1117,7 @@ void NoteDataUtil::RemoveAllButOneTap( NoteData &inout, int row )
for( ; track < inout.GetNumTracks(); ++track )
{
NoteData::iterator iter = inout.FindTapNote( track, row );
if( iter != inout.end(track) && iter->second.type == TapNote::tap )
if( iter != inout.end(track) && iter->second.type == TapNoteType_Tap )
inout.RemoveTapNote( track, iter );
}
inout.RevalidateATIs(vector<int>(), false);
@@ -1474,16 +1474,16 @@ static void SuperShuffleTaps( NoteData &inout, int iStartIndex, int iEndIndex )
const TapNote &tn1 = inout.GetTapNote( t1, r );
switch( tn1.type )
{
case TapNote::empty:
case TapNote::hold_head:
case TapNote::hold_tail:
case TapNote::autoKeysound:
case TapNoteType_Empty:
case TapNoteType_HoldHead:
case TapNoteType_HoldTail:
case TapNoteType_AutoKeysound:
continue; // skip
case TapNote::tap:
case TapNote::mine:
case TapNote::attack:
case TapNote::lift:
case TapNote::fake:
case TapNoteType_Tap:
case TapNoteType_Mine:
case TapNoteType_Attack:
case TapNoteType_Lift:
case TapNoteType_Fake:
break; // shuffle this
DEFAULT_FAIL( tn1.type );
}
@@ -1506,16 +1506,16 @@ static void SuperShuffleTaps( NoteData &inout, int iStartIndex, int iEndIndex )
const TapNote &tn2 = inout.GetTapNote( t2, r );
switch( tn2.type )
{
case TapNote::hold_head:
case TapNote::hold_tail:
case TapNote::autoKeysound:
case TapNoteType_HoldHead:
case TapNoteType_HoldTail:
case TapNoteType_AutoKeysound:
continue; // don't swap with these
case TapNote::empty:
case TapNote::tap:
case TapNote::mine:
case TapNote::attack:
case TapNote::lift:
case TapNote::fake:
case TapNoteType_Empty:
case TapNoteType_Tap:
case TapNoteType_Mine:
case TapNoteType_Attack:
case TapNoteType_Lift:
case TapNoteType_Fake:
break; // ok to swap with this
DEFAULT_FAIL( tn2.type );
}
@@ -1565,7 +1565,7 @@ void NoteDataUtil::Backwards( NoteData &inout )
int iRowLater = max_row-r;
const TapNote &tnEarlier = inout.GetTapNote( t, iRowEarlier );
if( tnEarlier.type == TapNote::hold_head )
if( tnEarlier.type == TapNoteType_HoldHead )
iRowLater -= tnEarlier.iDuration;
out.SetTapNote( t, iRowLater, tnEarlier );
@@ -1651,7 +1651,7 @@ void NoteDataUtil::Wide( NoteData &inout, int iStartIndex, int iEndIndex )
iTrackToAdd--;
CLAMP( iTrackToAdd, 0, inout.GetNumTracks()-1 );
if( inout.GetTapNote(iTrackToAdd, i).type != TapNote::empty && inout.GetTapNote(iTrackToAdd, i).type != TapNote::fake )
if( inout.GetTapNote(iTrackToAdd, i).type != TapNoteType_Empty && inout.GetTapNote(iTrackToAdd, i).type != TapNoteType_Fake )
{
iTrackToAdd = (iTrackToAdd+1) % inout.GetNumTracks();
}
@@ -1850,7 +1850,7 @@ void NoteDataUtil::AddMines( NoteData &inout, int iStartIndex, int iEndIndex )
if( iRowCount>=iPlaceEveryRows )
{
for( int t=0; t<inout.GetNumTracks(); t++ )
if( inout.GetTapNote(t,r).type == TapNote::tap )
if( inout.GetTapNote(t,r).type == TapNoteType_Tap )
inout.SetTapNote(t,r,TAP_ADDITION_MINE);
iRowCount = 0;
@@ -1867,7 +1867,7 @@ void NoteDataUtil::AddMines( NoteData &inout, int iStartIndex, int iEndIndex )
FOREACH_NONEMPTY_ROW_IN_TRACK_RANGE( inout, iTrack, r, iStartIndex, iEndIndex )
{
const TapNote &tn = inout.GetTapNote( iTrack, r );
if( tn.type != TapNote::hold_head )
if( tn.type != TapNoteType_HoldHead )
continue;
int iMineRow = r + tn.iDuration + BeatToNoteRow(0.5f);
@@ -1885,7 +1885,7 @@ void NoteDataUtil::AddMines( NoteData &inout, int iStartIndex, int iEndIndex )
// Convert all notes in this row to mines.
for( int t=0; t<inout.GetNumTracks(); t++ )
if( inout.GetTapNote(t,iMineRow).type == TapNote::tap )
if( inout.GetTapNote(t,iMineRow).type == TapNoteType_Tap )
inout.SetTapNote(t,iMineRow,TAP_ADDITION_MINE);
iRowCount = 0;
@@ -1972,7 +1972,7 @@ void NoteDataUtil::ConvertTapsToHolds( NoteData &inout, int iSimultaneousHolds,
if( iTrackAddedThisRow > iSimultaneousHolds )
break;
if( inout.GetTapNote(t,r).type == TapNote::tap )
if( inout.GetTapNote(t,r).type == TapNoteType_Tap )
{
// Find the ending row for this hold
int iTapsLeft = iSimultaneousHolds;
@@ -1985,7 +1985,7 @@ void NoteDataUtil::ConvertTapsToHolds( NoteData &inout, int iSimultaneousHolds,
// If there are two taps in a row on the same track,
// don't convert the earlier one to a hold.
if( inout.GetTapNote(t,r2).type != TapNote::empty )
if( inout.GetTapNote(t,r2).type != TapNoteType_Empty )
{
addHold = false;
break;
@@ -2035,7 +2035,7 @@ void NoteDataUtil::Stomp( NoteData &inout, StepsType st, int iStartIndex, int iE
for( int t=0; t<inout.GetNumTracks(); t++ )
{
if( inout.GetTapNote(t, r).type == TapNote::tap ) // there is a tap here
if( inout.GetTapNote(t, r).type == TapNoteType_Tap ) // there is a tap here
{
// Look to see if there is enough empty space on either side of the note
// to turn this into a jump.
@@ -2086,15 +2086,15 @@ void NoteDataUtil::SnapToNearestNoteType( NoteData &inout, NoteType nt1, NoteTyp
for( int c=0; c<inout.GetNumTracks(); c++ )
{
TapNote tnNew = inout.GetTapNote(c, iOldIndex);
if( tnNew.type == TapNote::empty )
if( tnNew.type == TapNoteType_Empty )
continue;
inout.SetTapNote(c, iOldIndex, TAP_EMPTY);
if( tnNew.type == TapNote::tap && inout.IsHoldNoteAtRow(c, iNewIndex) )
if( tnNew.type == TapNoteType_Tap && inout.IsHoldNoteAtRow(c, iNewIndex) )
continue; // HoldNotes override TapNotes
if( tnNew.type == TapNote::hold_head )
if( tnNew.type == TapNoteType_HoldHead )
{
/* Quantize the duration. If the result is empty, just discard the hold. */
tnNew.iDuration = Quantize( tnNew.iDuration, BeatToNoteRow(fSnapInterval1) );
@@ -2183,7 +2183,7 @@ void NoteDataUtil::CollapseLeft( NoteData &inout )
int iNumTracksFilled = 0;
for( int t=0; t<inout.GetNumTracks(); t++ )
{
if( inout.GetTapNote(t,r).type != TapNote::empty )
if( inout.GetTapNote(t,r).type != TapNoteType_Empty )
{
TapNote tn = inout.GetTapNote(t,r);
inout.SetTapNote(t, r, TAP_EMPTY);
@@ -2283,7 +2283,7 @@ bool NoteDataUtil::RowPassesValidMask( NoteData &inout, int row, const bool bVal
{
for( int t=0; t<inout.GetNumTracks(); t++ )
{
if( !bValidMask[t] && inout.GetTapNote(t,row).type != TapNote::empty )
if( !bValidMask[t] && inout.GetTapNote(t,row).type != TapNoteType_Empty )
return false;
}
@@ -2294,10 +2294,10 @@ void NoteDataUtil::ConvertAdditionsToRegular( NoteData &inout )
{
for( int t=0; t<inout.GetNumTracks(); t++ )
FOREACH_NONEMPTY_ROW_IN_TRACK( inout, t, r )
if( inout.GetTapNote(t,r).source == TapNote::addition )
if( inout.GetTapNote(t,r).source == TapNoteSource_Addition )
{
TapNote tn = inout.GetTapNote(t,r);
tn.source = TapNote::original;
tn.source = TapNoteSource_Original;
inout.SetTapNote( t, r, tn );
}
inout.RevalidateATIs(vector<int>(), false);
@@ -2389,9 +2389,9 @@ void NoteDataUtil::AddTapAttacks( NoteData &nd, Song* pSong )
int iBeat = (int)fBeat;
int iTrack = iBeat % nd.GetNumTracks(); // deterministically calculates track
TapNote tn(
TapNote::attack,
TapNote::SubType_Invalid,
TapNote::original,
TapNoteType_Attack,
TapNoteSubType_Invalid,
TapNoteSource_Original,
szAttacks[RandomInt(ARRAYLEN(szAttacks))],
15.0f,
-1 );
@@ -2483,7 +2483,7 @@ void NoteDataUtil::DeleteRows( NoteData &nd, int iStartIndex, int iRowsToDelete
nd.RevalidateATIs(vector<int>(), false);
}
void NoteDataUtil::RemoveAllTapsOfType( NoteData& ndInOut, TapNote::Type typeToRemove )
void NoteDataUtil::RemoveAllTapsOfType( NoteData& ndInOut, TapNoteType typeToRemove )
{
/* Be very careful when deleting the tap notes. Erasing elements from maps using
* iterators invalidates only the iterator that is being erased. To that end,
@@ -2502,7 +2502,7 @@ void NoteDataUtil::RemoveAllTapsOfType( NoteData& ndInOut, TapNote::Type typeToR
ndInOut.RevalidateATIs(vector<int>(), false);
}
void NoteDataUtil::RemoveAllTapsExceptForType( NoteData& ndInOut, TapNote::Type typeToKeep )
void NoteDataUtil::RemoveAllTapsExceptForType( NoteData& ndInOut, TapNoteType typeToKeep )
{
/* Same as in RemoveAllTapsOfType(). */
for( int t=0; t<ndInOut.GetNumTracks(); t++ )
@@ -2536,8 +2536,8 @@ bool NoteDataUtil::AnyTapsAndHoldsInTrackRange( const NoteData& in, int iTrack,
{
switch( in.GetTapNote( iTrack, r ).type )
{
case TapNote::empty:
case TapNote::mine:
case TapNoteType_Empty:
case TapNoteType_Mine:
continue;
default:
return true;
@@ -2596,7 +2596,7 @@ bool NoteDataUtil::GetPrevEditorPosition( const NoteData& in, int &rowInOut )
continue;
const TapNote &tn = in.GetTapNote( t, iHeadRow );
if( tn.type != TapNote::hold_head )
if( tn.type != TapNoteType_HoldHead )
continue;
int iEndRow = iHeadRow + tn.iDuration;