Fix wrapping of m_fItemAtTopOfList causing crash if we delay long enough

to need to wrap twice. (Only happened while debugging, but.)
This commit is contained in:
Glenn Maynard
2002-10-16 19:01:11 +00:00
parent 4fb80b6864
commit c6732a87a6
+6 -7
View File
@@ -93,7 +93,7 @@ void CourseContentsFrame::SetFromCourse( Course* pCourse )
{
ASSERT( pCourse != NULL );
m_fTimeUntilScroll = 3;
m_fTimeUntilScroll = 0;
m_fItemAtTopOfList = 0;
m_iNumContents = 0;
@@ -124,10 +124,10 @@ void CourseContentsFrame::Update( float fDeltaTime )
if( m_fTimeUntilScroll > 0 && m_iNumContents > MAX_VISIBLE_CONTENTS)
m_fTimeUntilScroll -= fDeltaTime;
if( m_fTimeUntilScroll <= 0 )
if( m_fTimeUntilScroll <= 0 ) {
m_fItemAtTopOfList += fDeltaTime;
if( m_fItemAtTopOfList > m_iNumContents )
m_fItemAtTopOfList -= m_iNumContents;
m_fItemAtTopOfList = fmodf(m_fItemAtTopOfList, float(m_iNumContents));
}
for( int i=0; i<m_iNumContents; i++ )
m_CourseContentDisplays[i].Update( fDeltaTime );
@@ -157,15 +157,14 @@ void CourseContentsFrame::DrawPrimitives()
float fRemainder = m_fItemAtTopOfList - (int)m_fItemAtTopOfList;
fRemainder = min( fRemainder*1.5f, 1 );
float fY = (-fRemainder-(MAX_VISIBLE_CONTENTS-1)/2) * CONTENTS_BAR_HEIGHT;
const float fY = (-fRemainder-(MAX_VISIBLE_CONTENTS-1)/2) * CONTENTS_BAR_HEIGHT;
for( int i=0; i<min(MAX_VISIBLE_CONTENTS+1, m_iNumContents); i++ )
{
if( m_fTimeUntilScroll <= 0 )
m_CourseContentDisplays[iItemToDraw].SetY( fY );
m_CourseContentDisplays[iItemToDraw].SetY( fY + i*CONTENTS_BAR_HEIGHT);
m_CourseContentDisplays[iItemToDraw].Draw();
iItemToDraw = (iItemToDraw+1) % m_iNumContents;
fY += CONTENTS_BAR_HEIGHT;
}
// turn off Z buffer