[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
-15
View File
@@ -961,21 +961,6 @@ void GameState::UpdateSongPosition( float fPositionSeconds, const TimingData &ti
// "Crash reason : -243478.890625 -48695.773438"
ASSERT_M( m_fSongBeat > -2000, ssprintf("Song beat %f at %f seconds", m_fSongBeat, fPositionSeconds) );
//if( m_iWarpBeginRow != -1 || m_iWarpEndRow == -1 )
/*
if( m_iWarpBeginRow != -1 && m_fWarpDestination > 0.0f )
{
float fWarpLength = m_fWarpDestination-NoteRowToBeat(m_iWarpBeginRow);
// There is a warp in this section.
LOG->Trace("warp at row %i lasts for %f beats, jumps to row %i",
m_iWarpBeginRow,
fWarpLength,
BeatToNoteRow(m_fWarpDestination));
fPositionSeconds += (fWarpLength * m_fCurBPS);
}
*/
m_fMusicSeconds = fPositionSeconds;
m_fLightSongBeat = timing.GetBeatFromElapsedTime( fPositionSeconds + g_fLightsAheadSeconds );