From 4f126462a41bf0012f808c658988ab188467ae14 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sat, 29 Mar 2008 15:13:52 +0000 Subject: [PATCH] add shared Stage values (not per-player Stage values) to simplify StageDisplay --- stepmania/src/GameConstantsAndTypes.cpp | 11 ++++++++++- stepmania/src/GameConstantsAndTypes.h | 12 ++++++++++-- stepmania/src/GameState.cpp | 21 ++++++++++++++++++++- stepmania/src/GameState.h | 1 + stepmania/src/ScreenEvaluation.cpp | 2 +- 5 files changed, 42 insertions(+), 5 deletions(-) diff --git a/stepmania/src/GameConstantsAndTypes.cpp b/stepmania/src/GameConstantsAndTypes.cpp index 68f5983fc6..89b304805c 100644 --- a/stepmania/src/GameConstantsAndTypes.cpp +++ b/stepmania/src/GameConstantsAndTypes.cpp @@ -383,7 +383,14 @@ StringToX( EditMode ); LuaXType( EditMode ); static const char *StageNames[] = { - "Normal", + "1st", + "2nd", + "3rd", + "4th", + "5th", + "6th", + "Next", + "Final", "Extra1", "Extra2", "Nonstop", @@ -394,6 +401,8 @@ static const char *StageNames[] = { }; XToString( Stage ); LuaXType( Stage ); +XToLocalizedString( Stage ); +LuaFunction( StageToLocalizedString, StageToLocalizedString(Enum::Check(L, 1)) ); static const char *MultiPlayerStatusNames[] = { diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index 7d46df0d62..a905b622a6 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -455,9 +455,16 @@ const RString& EditModeToString( EditMode em ); EditMode StringToEditMode( const RString& s ); LuaDeclareType( EditMode ); -enum Stage +enum Stage // Shared stage values (not per-player) that are shown in StageDisplay { - Stage_Normal, + Stage_1st, + Stage_2nd, + Stage_3rd, + Stage_4th, + Stage_5th, + Stage_6th, + Stage_Next, // after Stage_6th but not Final. This won't normally happen because 7 stages is the max in the UI. + Stage_Final, Stage_Extra1, Stage_Extra2, Stage_Nonstop, @@ -470,6 +477,7 @@ enum Stage }; const RString& StageToString( Stage s ); LuaDeclareType( Stage ); +const RString& StageToLocalizedString( Stage i ); enum ProfileLoadResult diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index 55992a473b..4ddeadf2b1 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -911,6 +911,11 @@ int GameState::GetSmallestNumStagesLeftForAnyHumanPlayer() const return iSmallest; } +bool GameState::IsFinalStageForAnyHumanPlayer() const +{ + return GetSmallestNumStagesLeftForAnyHumanPlayer() == 1; +} + bool GameState::IsAnExtraStage() const { if( m_MasterPlayerNumber == PlayerNumber_Invalid ) @@ -942,7 +947,21 @@ Stage GameState::GetCurrentStage() const else if( m_PlayMode == PLAY_MODE_ENDLESS ) return Stage_Endless; else if( IsExtraStage() ) return Stage_Extra1; else if( IsExtraStage2() ) return Stage_Extra2; - else return Stage_Normal; + else if( IsFinalStageForAnyHumanPlayer() ) return Stage_Final; + else + { + + switch( this->m_iCurrentStageIndex ) + { + case 0: return Stage_1st; + case 1: return Stage_2nd; + case 2: return Stage_3rd; + case 3: return Stage_4th; + case 4: return Stage_5th; + case 5: return Stage_6th; + default: return Stage_Next; + } + } } int GameState::GetCourseSongIndex() const diff --git a/stepmania/src/GameState.h b/stepmania/src/GameState.h index e2b4aff708..da2e295803 100644 --- a/stepmania/src/GameState.h +++ b/stepmania/src/GameState.h @@ -141,6 +141,7 @@ public: void FinishStage(); int GetNumStagesLeft( PlayerNumber pn ) const; int GetSmallestNumStagesLeftForAnyHumanPlayer() const; + bool IsFinalStageForAnyHumanPlayer() const; bool IsAnExtraStage() const; bool IsExtraStage() const; bool IsExtraStage2() const; diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index d412352265..b07a48253e 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -99,7 +99,7 @@ void ScreenEvaluation::Init() GAMESTATE->SetCurrentStyle( GameManager::GameAndStringToStyle(GameManager::GetDefaultGame(),"versus") ); ss.m_playMode = GAMESTATE->m_PlayMode; ss.m_pStyle = GAMESTATE->GetCurrentStyle(); - ss.m_Stage = Stage_Normal; + ss.m_Stage = Stage_1st; GAMESTATE->m_MasterPlayerNumber = PLAYER_1; GAMESTATE->m_pCurSong.Set( SONGMAN->GetRandomSong() ); ss.m_vpPlayedSongs.push_back( GAMESTATE->m_pCurSong );