diff --git a/stepmania/src/NoteData.cpp b/stepmania/src/NoteData.cpp index 5a3f4523ae..3e33f3164c 100644 --- a/stepmania/src/NoteData.cpp +++ b/stepmania/src/NoteData.cpp @@ -925,18 +925,7 @@ void NoteData::_all_tracks_iterator::Find( bool bReverse ) for( int iTrack = m_pNoteData->GetNumTracks() - 1; iTrack >= 0; --iTrack ) { iter &i( m_vCurrentIters[iTrack] ); - const iter &begin = m_vBeginIters[iTrack]; const iter &end = m_vEndIters[iTrack]; - if( m_Cond ) - { - while( i != end && i->first > iMaxRow && !m_Cond(i->second) ) - { - if( i == begin ) - i = end; - else - --i; - } - } if( i != end && i->first > iMaxRow ) { iMaxRow = i->first; @@ -952,11 +941,6 @@ void NoteData::_all_tracks_iterator::Find( bool bReverse ) { iter &i = m_vCurrentIters[iTrack]; const iter &end = m_vEndIters[iTrack]; - if( m_Cond ) - { - while( i != end && i->first < iMinRow && !m_Cond(i->second) ) - ++i; - } if( i != end && i->first < iMinRow ) { iMinRow = i->first; @@ -967,8 +951,8 @@ void NoteData::_all_tracks_iterator::Find( bool bReverse ) } template -NoteData::_all_tracks_iterator::_all_tracks_iterator( ND &nd, int iStartRow, int iEndRow, bool bReverse, NoteData::IteratorCond cond, bool bInclusive ) : - m_pNoteData(&nd), m_iTrack(0), m_bReverse(bReverse), m_Cond(cond) +NoteData::_all_tracks_iterator::_all_tracks_iterator( ND &nd, int iStartRow, int iEndRow, bool bReverse, bool bInclusive ) : + m_pNoteData(&nd), m_iTrack(0), m_bReverse(bReverse) { ASSERT( m_pNoteData->GetNumTracks() > 0 ); @@ -1006,7 +990,6 @@ NoteData::_all_tracks_iterator::_all_tracks_iterator( const _all_t COPY_OTHER( m_pNoteData ), COPY_OTHER( m_iTrack ), COPY_OTHER( m_bReverse ), - COPY_OTHER( m_Cond ), COPY_OTHER( m_vBeginIters ), COPY_OTHER( m_vEndIters ), COPY_OTHER( m_vCurrentIters ) diff --git a/stepmania/src/NoteData.h b/stepmania/src/NoteData.h index 5524279cd6..1d74f64afc 100644 --- a/stepmania/src/NoteData.h +++ b/stepmania/src/NoteData.h @@ -43,7 +43,6 @@ public: void swap( NoteData &nd ) { m_TapNotes.swap( nd.m_TapNotes ); } - typedef bool (*IteratorCond)( const TapNote& ); // This is ugly to make it templated but I don't want to have to write the same class twice. template class _all_tracks_iterator @@ -58,11 +57,10 @@ public: vector m_vEndIters; int m_iTrack; bool m_bReverse; - IteratorCond m_Cond; void Find( bool bReverse ); public: - _all_tracks_iterator( ND &nd, int iStartRow, int iEndRow, bool bReverse, IteratorCond cond, bool bInclusive ); + _all_tracks_iterator( ND &nd, int iStartRow, int iEndRow, bool bReverse, bool bInclusive ); _all_tracks_iterator( const _all_tracks_iterator &other ); _all_tracks_iterator &operator++(); // preincrement _all_tracks_iterator operator++( int dummy ); // postincrement @@ -115,21 +113,21 @@ public: /* Return an iterator range including exactly iStartRow to iEndRow. */ void GetTapNoteRange( int iTrack, int iStartRow, int iEndRow, const_iterator &begin, const_iterator &end ) const; void GetTapNoteRange( int iTrack, int iStartRow, int iEndRow, TrackMap::iterator &begin, TrackMap::iterator &end ); - all_tracks_iterator GetTapNoteRangeAllTracks( int iStartRow, int iEndRow, IteratorCond cond = NULL, bool bInclusive = false ) + all_tracks_iterator GetTapNoteRangeAllTracks( int iStartRow, int iEndRow, bool bInclusive = false ) { - return all_tracks_iterator( *this, iStartRow, iEndRow, false, cond, bInclusive ); + return all_tracks_iterator( *this, iStartRow, iEndRow, false, bInclusive ); } - all_tracks_const_iterator GetTapNoteRangeAllTracks( int iStartRow, int iEndRow, IteratorCond cond = NULL, bool bInclusive = false ) const + all_tracks_const_iterator GetTapNoteRangeAllTracks( int iStartRow, int iEndRow, bool bInclusive = false ) const { - return all_tracks_const_iterator( *this, iStartRow, iEndRow, false, cond, bInclusive ); + return all_tracks_const_iterator( *this, iStartRow, iEndRow, false, bInclusive ); } - all_tracks_reverse_iterator GetTapNoteRangeAllTracksReverse( int iStartRow, int iEndRow, IteratorCond cond = NULL, bool bInclusive = false ) + all_tracks_reverse_iterator GetTapNoteRangeAllTracksReverse( int iStartRow, int iEndRow, bool bInclusive = false ) { - return all_tracks_iterator(*this, iStartRow, iEndRow, true, cond, bInclusive ); + return all_tracks_iterator(*this, iStartRow, iEndRow, true, bInclusive ); } - all_tracks_const_reverse_iterator GetTapNoteRangeAllTracksReverse( int iStartRow, int iEndRow, IteratorCond cond = NULL, bool bInclusive = false ) const + all_tracks_const_reverse_iterator GetTapNoteRangeAllTracksReverse( int iStartRow, int iEndRow, bool bInclusive = false ) const { - return all_tracks_const_iterator(*this, iStartRow, iEndRow, true, cond, bInclusive ); + return all_tracks_const_iterator(*this, iStartRow, iEndRow, true, bInclusive ); } /* Return an iterator range include iStartRow to iEndRow. Extend the range to include diff --git a/stepmania/src/NoteDataWithScoring.cpp b/stepmania/src/NoteDataWithScoring.cpp index ccb9a7fc76..350e6f0188 100644 --- a/stepmania/src/NoteDataWithScoring.cpp +++ b/stepmania/src/NoteDataWithScoring.cpp @@ -62,13 +62,15 @@ int GetNumHoldNotesWithScore( const NoteData &in, TapNote::SubType subType, Hold return iNumSuccessfulHolds; } -bool AvoidedMines( const TapNote &tn ) { return tn.type == TapNote::mine && tn.result.tns == TNS_AvoidMine; } int GetSuccessfulMines( const NoteData &in, int iStartIndex = 0, int iEndIndex = MAX_NOTE_ROW ) { int iNumSuccessfulMinesNotes = 0; - NoteData::all_tracks_const_iterator iter = in.GetTapNoteRangeAllTracks( iStartIndex, iEndIndex, AvoidedMines ); + NoteData::all_tracks_const_iterator iter = in.GetTapNoteRangeAllTracks( iStartIndex, iEndIndex ); for( ; !iter.IsAtEnd(); ++iter ) - iNumSuccessfulMinesNotes++; + { + if( iter->type == TapNote::mine && iter->result.tns == TNS_AvoidMine ) + ++iNumSuccessfulMinesNotes; + } return iNumSuccessfulMinesNotes; } diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index af478f3d06..9f5e69040a 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -2397,7 +2397,7 @@ void Player::CrossedRows( int iLastRowCrossed, const RageTimer &now ) int iNumHoldsMissedThisRow = 0; // start at r-1 so that we consider holds whose end rows are equal to the checkpoint row - NoteData::all_tracks_iterator iter = m_NoteData.GetTapNoteRangeAllTracks( r-1, r, NULL, true ); + NoteData::all_tracks_iterator iter = m_NoteData.GetTapNoteRangeAllTracks( r-1, r, true ); for( ; !iter.IsAtEnd(); ++iter ) { TapNote &tn = *iter;