#include "global.h" /* ----------------------------------------------------------------------------- Class: CourseContentsList Desc: See header. Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. Chris Danford ----------------------------------------------------------------------------- */ #include "CourseContentsList.h" #include "RageUtil.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" #include "RageLog.h" #include "PrefsManager.h" #include "Course.h" #include "SongManager.h" #include #include "ThemeManager.h" #include "Steps.h" #include "GameState.h" #include "StyleDef.h" CourseContentsList::CourseContentsList() { m_iNumContents = 0; m_quad.SetDiffuse( RageColor(0,0,0,1) ); m_quad.SetBlendMode( BLEND_NO_EFFECT ); // invisible, since we want to write only to the Zbuffer m_fTimeUntilScroll = 0; m_fItemAtTopOfList = 0; m_quad.SetUseZBuffer( true ); for( int i = 0; i < MAX_TOTAL_CONTENTS; ++i ) m_CourseContentDisplays[i].SetUseZBuffer( true ); /* These are all the same; grab the dimensions. */ ContentsBarHeight = m_CourseContentDisplays[0].m_sprFrame.GetTexture()->GetSourceFrameHeight(); ContentsBarWidth = m_CourseContentDisplays[0].m_sprFrame.GetTexture()->GetSourceFrameWidth(); } void CourseContentsList::SetFromCourse( Course* pCourse ) { if( pCourse == NULL ) { m_iNumContents = 0; return; } m_iNumContents = 0; vector ci; pCourse->GetCourseInfo( GAMESTATE->GetCurrentStyleDef()->m_StepsType, ci ); for( int i=0; iGetDifficulty( ci[i] ); int iMeterLow, iMeterHigh; pCourse->GetMeterRange(ci[i], iMeterLow, iMeterHigh); if( dc == DIFFICULTY_INVALID ) display.LoadFromMeterRange( m_iNumContents+1, iMeterLow, iMeterHigh, ci[i].Modifiers ); else display.LoadFromDifficulty( m_iNumContents+1, dc, ci[i].Modifiers ); } else { display.LoadFromSongAndNotes( m_iNumContents+1, ci[i].pSong, ci[i].pNotes, ci[i].Modifiers ); } m_iNumContents ++; } } void CourseContentsList::Update( float fDeltaTime ) { ActorFrame::Update( fDeltaTime ); if( m_fTimeUntilScroll > 0 && m_iNumContents > MAX_VISIBLE_CONTENTS) m_fTimeUntilScroll -= fDeltaTime; if( m_fTimeUntilScroll <= 0 ) { m_fItemAtTopOfList += fDeltaTime; m_fItemAtTopOfList = fmodf(m_fItemAtTopOfList, float(m_iNumContents)); } for( int i=0; i