From a7a8b6b94d0ef5f1fef30ca98b19a2758175276a Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 13 Feb 2010 12:50:34 -0600 Subject: [PATCH] syncing with sm4svn part 1. 7534867: fix SSM crashes when selecting a song with only one player enabled cddaab5: simplify SongUtil::GetStepsTypeAndDifficultyFromSortOrder 615aab0: add Style::GetUsesCenteredArrows (doubles + routine) 17f38e7: sanity check [all code changes by Glenn Maynard] --- src/ScreenGameplay.cpp | 12 +++++++++++- src/ScreenSelectMusic.cpp | 2 +- src/SongUtil.cpp | 33 +++++++++------------------------ src/Style.cpp | 11 +++++++++++ src/Style.h | 2 +- 5 files changed, 33 insertions(+), 27 deletions(-) diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp index 9bf6e168c9..2ea693082b 100644 --- a/src/ScreenGameplay.cpp +++ b/src/ScreenGameplay.cpp @@ -362,7 +362,17 @@ void ScreenGameplay::Init() ScreenWithMenuElements::Init(); this->FillPlayerInfo( m_vPlayerInfo ); - ASSERT_M( !m_vPlayerInfo.empty(), "m_vPlayerInfo must be filled by FillPlayerInfo" ); + + { + ASSERT_M( !m_vPlayerInfo.empty(), "m_vPlayerInfo must be filled by FillPlayerInfo" ); + + int iNumEnabledPlayers = 0; + FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi ) + ++iNumEnabledPlayers; + + /* If this is 0, we have no active players and havn't been initialized correctly. */ + ASSERT( iNumEnabledPlayers > 0 ); + } /* Pause MEMCARDMAN. If a memory card is removed, we don't want to interrupt the * player by making a noise until the game finishes. */ diff --git a/src/ScreenSelectMusic.cpp b/src/ScreenSelectMusic.cpp index 576e7c87e7..5b3826ebdc 100644 --- a/src/ScreenSelectMusic.cpp +++ b/src/ScreenSelectMusic.cpp @@ -1003,7 +1003,7 @@ void ScreenSelectMusic::MenuStart( const InputEventPlus &input ) bool bSelectedRoutineSteps[NUM_PLAYERS], bAnySelectedRoutine = false; bool bSelectedSameSteps = GAMESTATE->m_pCurSteps[PLAYER_1] == GAMESTATE->m_pCurSteps[PLAYER_2]; - FOREACH_PlayerNumber( p ) + FOREACH_HumanPlayer( p ) { const Steps *pSteps = GAMESTATE->m_pCurSteps[p]; const StepsTypeInfo &sti = GAMEMAN->GetStepsTypeInfo( pSteps->m_StepsType ); diff --git a/src/SongUtil.cpp b/src/SongUtil.cpp index 171170e7ed..0a23678477 100644 --- a/src/SongUtil.cpp +++ b/src/SongUtil.cpp @@ -917,18 +917,17 @@ bool SongUtil::GetStepsTypeAndDifficultyFromSortOrder( SortOrder so, StepsType & { switch( so ) { + case SORT_BEGINNER_METER: dcOut = Difficulty_Beginner; break; + case SORT_EASY_METER: dcOut = Difficulty_Easy; break; + case SORT_MEDIUM_METER: dcOut = Difficulty_Medium; break; + case SORT_HARD_METER: dcOut = Difficulty_Hard; break; + case SORT_CHALLENGE_METER: dcOut = Difficulty_Challenge; break; + case SORT_DOUBLE_EASY_METER: dcOut = Difficulty_Easy; break; + case SORT_DOUBLE_MEDIUM_METER: dcOut = Difficulty_Medium; break; + case SORT_DOUBLE_HARD_METER: dcOut = Difficulty_Hard; break; + case SORT_DOUBLE_CHALLENGE_METER: dcOut = Difficulty_Challenge; break; default: return false; - case SORT_BEGINNER_METER: - case SORT_EASY_METER: - case SORT_MEDIUM_METER: - case SORT_HARD_METER: - case SORT_CHALLENGE_METER: - case SORT_DOUBLE_EASY_METER: - case SORT_DOUBLE_MEDIUM_METER: - case SORT_DOUBLE_HARD_METER: - case SORT_DOUBLE_CHALLENGE_METER: - break; // fall through } switch( so ) @@ -963,20 +962,6 @@ bool SongUtil::GetStepsTypeAndDifficultyFromSortOrder( SortOrder so, StepsType & break; } - switch( so ) - { - DEFAULT_FAIL( so ); - case SORT_BEGINNER_METER: dcOut = Difficulty_Beginner; break; - case SORT_EASY_METER: dcOut = Difficulty_Easy; break; - case SORT_MEDIUM_METER: dcOut = Difficulty_Medium; break; - case SORT_HARD_METER: dcOut = Difficulty_Hard; break; - case SORT_CHALLENGE_METER: dcOut = Difficulty_Challenge; break; - case SORT_DOUBLE_EASY_METER: dcOut = Difficulty_Easy; break; - case SORT_DOUBLE_MEDIUM_METER: dcOut = Difficulty_Medium; break; - case SORT_DOUBLE_HARD_METER: dcOut = Difficulty_Hard; break; - case SORT_DOUBLE_CHALLENGE_METER: dcOut = Difficulty_Challenge; break; - } - return true; } diff --git a/src/Style.cpp b/src/Style.cpp index d9e033572d..a3eee51078 100644 --- a/src/Style.cpp +++ b/src/Style.cpp @@ -20,6 +20,17 @@ #include "NoteData.h" #include +bool Style::GetUsesCenteredArrows() const +{ + switch( m_StyleType ) + { + case StyleType_OnePlayerTwoSides: + case StyleType_TwoPlayersSharedSides: + return true; + default: + return false; + } +} void Style::GetTransformedNoteDataForStyle( PlayerNumber pn, const NoteData& original, NoteData& noteDataOut ) const { diff --git a/src/Style.h b/src/Style.h index 4c7eb86f6e..05e2c3b913 100644 --- a/src/Style.h +++ b/src/Style.h @@ -57,8 +57,8 @@ public: int GameInputToColumn( const GameInput &GameI ) const; RString ColToButtonName( int iCol ) const; + bool GetUsesCenteredArrows() const; void GetTransformedNoteDataForStyle( PlayerNumber pn, const NoteData& original, NoteData& noteDataOut ) const; - void GetMinAndMaxColX( PlayerNumber pn, float& fMixXOut, float& fMaxXOut ) const; // Lua