[warps] allow stops inside warps and convert high bpm to warps

+ sometimes there are delays/stops in high BPM sections,
  they have to be handled inside a warp to be able to convert
  it easily.
+ on the stopped / delayed rows with warps, judging become
  enabled for that row.

Issues:

+ the bpm threshould is hardcoded (right now it's 400000.0).
  someone change it please.
+ slight off-sync from conversion. haven't figured out how to
  work around it yet.
This commit is contained in:
Thai Pangsakulyanont
2011-03-26 22:07:24 +07:00
parent bfd7e9c914
commit ac336215bd
4 changed files with 73 additions and 60 deletions
+3 -5
View File
@@ -2561,7 +2561,7 @@ void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds )
continue;
// Ignore all notes that are skipped via WARPS.
if( iter.Row() >= GAMESTATE->m_iWarpBeginRow && iter.Row() < BeatToNoteRow(GAMESTATE->m_fWarpDestination) )
if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow( iter.Row() ) )
continue;
if( tn.type == TapNote::mine )
@@ -2931,8 +2931,7 @@ void Player::HandleTapRowScore( unsigned row )
#endif
// more warp hackery. -aj
if( row >= (unsigned)GAMESTATE->m_iWarpBeginRow &&
row < (unsigned)(BeatToNoteRow(GAMESTATE->m_fWarpDestination)) )
if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow( row ) )
return;
if( GAMESTATE->m_bDemonstrationOrJukebox )
@@ -3036,8 +3035,7 @@ void Player::HandleHoldCheckpoint( int iRow, int iNumHoldsHeldThisRow, int iNumH
#endif
// more warp hackery. -aj
if( iRow >= GAMESTATE->m_iWarpBeginRow &&
iRow < BeatToNoteRow(GAMESTATE->m_fWarpDestination) )
if( GAMESTATE->m_pCurSong->m_Timing.IsWarpAtRow( iRow ) )
return;
// don't accumulate combo if AutoPlay is on.