lua binding for GetNumStagesForCurrentSongAndStepsOrCourse

This commit is contained in:
Chris Danford
2007-03-07 02:17:12 +00:00
parent 2516651741
commit f77d52699f
2 changed files with 24 additions and 4 deletions
+23 -4
View File
@@ -549,11 +549,28 @@ int GameState::GetNumStagesForSongAndStyle( const Song* pSong, const Style *pSty
return iNumStages; return iNumStages;
} }
static int GetNumStagesForCurrentSongOrCourse() int GameState::GetNumStagesForCurrentSongAndStepsOrCourse()
{ {
int iNumStagesOfThisSong = 1; int iNumStagesOfThisSong = 1;
if( GAMESTATE->m_pCurSong ) if( GAMESTATE->m_pCurSong )
iNumStagesOfThisSong = GameState::GetNumStagesForSong( GAMESTATE->m_pCurSong ); {
Steps *pSteps = GAMESTATE->m_pCurSteps[GAMESTATE->m_MasterPlayerNumber];
StepsType st;
if( pSteps )
{
st = pSteps->m_StepsType;
}
else
{
vector<const Style*> vpStyles;
GAMEMAN->GetCompatibleStyles( GAMESTATE->m_pCurGame, GAMESTATE->GetNumSidesJoined(), vpStyles );
ASSERT( !vpStyles.empty() );
const Style *pStyle = vpStyles[0];
st = pStyle->m_StepsType;
}
const Style *pStyle = GAMEMAN->GetFirstCompatibleStyle( GAMESTATE->m_pCurGame, GAMESTATE->GetNumSidesJoined(), st );
iNumStagesOfThisSong = GameState::GetNumStagesForSongAndStyle( GAMESTATE->m_pCurSong, pStyle );
}
else if( GAMESTATE->m_pCurCourse ) else if( GAMESTATE->m_pCurCourse )
iNumStagesOfThisSong = 1; iNumStagesOfThisSong = 1;
else else
@@ -597,7 +614,7 @@ void GameState::BeginStage()
m_SongOptions.Assign( ModsLevel_Stage, m_SongOptions.GetPreferred() ); m_SongOptions.Assign( ModsLevel_Stage, m_SongOptions.GetPreferred() );
STATSMAN->m_CurStageStats.m_fMusicRate = m_SongOptions.GetSong().m_fMusicRate; STATSMAN->m_CurStageStats.m_fMusicRate = m_SongOptions.GetSong().m_fMusicRate;
m_iNumStagesOfThisSong = GetNumStagesForCurrentSongOrCourse(); m_iNumStagesOfThisSong = GetNumStagesForCurrentSongAndStepsOrCourse();
ASSERT( m_iNumStagesOfThisSong != -1 ); ASSERT( m_iNumStagesOfThisSong != -1 );
} }
@@ -815,7 +832,7 @@ bool GameState::IsFinalStage() const
return true; return true;
/* This changes dynamically on ScreenSelectMusic as the wheel turns. */ /* This changes dynamically on ScreenSelectMusic as the wheel turns. */
int iPredictedStageForCurSong = GetNumStagesForCurrentSongOrCourse(); int iPredictedStageForCurSong = GetNumStagesForCurrentSongAndStepsOrCourse();
if( iPredictedStageForCurSong == -1 ) if( iPredictedStageForCurSong == -1 )
iPredictedStageForCurSong = 1; iPredictedStageForCurSong = 1;
return m_iCurrentStageIndex + iPredictedStageForCurSong == PREFSMAN->m_iSongsPerPlay; return m_iCurrentStageIndex + iPredictedStageForCurSong == PREFSMAN->m_iSongsPerPlay;
@@ -2191,6 +2208,7 @@ public:
lua_pushboolean(L, bUsingMemoryCard ); lua_pushboolean(L, bUsingMemoryCard );
return 1; return 1;
} }
static int GetNumStagesForCurrentSongAndStepsOrCourse( T* p, lua_State *L ) { lua_pushnumber(L, GameState::GetNumStagesForCurrentSongAndStepsOrCourse() ); return 1; }
LunaGameState() LunaGameState()
{ {
@@ -2264,6 +2282,7 @@ public:
ADD_METHOD( GetDefaultSongOptions ); ADD_METHOD( GetDefaultSongOptions );
ADD_METHOD( GetCurrentStyle ); ADD_METHOD( GetCurrentStyle );
ADD_METHOD( IsAnyHumanPlayerUsingMemoryCard ); ADD_METHOD( IsAnyHumanPlayerUsingMemoryCard );
ADD_METHOD( GetNumStagesForCurrentSongAndStepsOrCourse );
} }
}; };
+1
View File
@@ -120,6 +120,7 @@ public:
static int GetNumStagesForSong( const Song* pSong ); static int GetNumStagesForSong( const Song* pSong );
static int GetNumStagesForSongAndStyle( const Song* pSong, const Style *pStyle ); static int GetNumStagesForSongAndStyle( const Song* pSong, const Style *pStyle );
static int GetNumStagesForCurrentSongAndStepsOrCourse();
int GetStageIndex() const; int GetStageIndex() const;
void BeginStage(); void BeginStage();