diff --git a/stepmania/src/BGAnimationLayer.cpp b/stepmania/src/BGAnimationLayer.cpp index ce0e91f6cc..576ac50be9 100644 --- a/stepmania/src/BGAnimationLayer.cpp +++ b/stepmania/src/BGAnimationLayer.cpp @@ -436,13 +436,16 @@ void BGAnimationLayer::LoadFromIni( CString sAniDir, CString sLayer ) int player; if( ini.GetValue( sLayer, "Player", player ) ) { - if( player > 0 && player <= NUM_PLAYERS ) + PlayerNumber pn = (PlayerNumber)(player-1); + if( pn>=0 && pnIsPlayerEnabled(player-1) ) + if( !GAMESTATE->IsPlayerEnabled(pn) ) return; - } else - LOG->Warn("BGA \"%s\" %s has an invalid Player field", - sAniDir.c_str(), sLayer.c_str() ); + } + else + { + LOG->Warn("BGA \"%s\" %s has an invalid Player field", sAniDir.c_str(), sLayer.c_str() ); + } } } diff --git a/stepmania/src/BeginnerHelper.cpp b/stepmania/src/BeginnerHelper.cpp index 0819b05263..e48f85b065 100644 --- a/stepmania/src/BeginnerHelper.cpp +++ b/stepmania/src/BeginnerHelper.cpp @@ -71,7 +71,7 @@ BeginnerHelper::~BeginnerHelper() { } -void BeginnerHelper::ShowStepCircle( int pn, int CSTEP ) +void BeginnerHelper::ShowStepCircle( PlayerNumber pn, int CSTEP ) { int isc=0; // Save OR issues within array boundries.. it's worth the extra few bytes of memory. switch(CSTEP) @@ -89,7 +89,7 @@ void BeginnerHelper::ShowStepCircle( int pn, int CSTEP ) m_sStepCircle[pn][isc].SetZoom(0); } -void BeginnerHelper::AddPlayer( int pn, NoteData *pSteps ) +void BeginnerHelper::AddPlayer( PlayerNumber pn, NoteData *pSteps ) { ASSERT(!m_bInitialized); ASSERT(pSteps != NULL); @@ -268,7 +268,7 @@ void BeginnerHelper::DrawPrimitives() } } -void BeginnerHelper::Step( int pn, int CSTEP ) +void BeginnerHelper::Step( PlayerNumber pn, int CSTEP ) { m_pDancer[pn]->StopTweening(); m_pDancer[pn]->SetRotationY(0); // Make sure we're not still inside of a JUMPUD tween. @@ -324,12 +324,8 @@ void BeginnerHelper::Update( float fDeltaTime ) // the row we want to check on this update int iCurRow = BeatToNoteRowNotRounded(GAMESTATE->m_fSongBeat + 0.4f); - for(int pn=0; pnm_fCurBPS); - for(int pu=0; puIsHumanPlayer(pu)) - continue; - // Update dancer's animation and StepCircles m_pDancer[pu]->Update( beat ); for(int scu=0; scuIsPlayerEnabled(pn)) + if(GAMESTATE->m_pCurSteps[pn] != NULL) { - if(GAMESTATE->m_pCurSteps[pn] != NULL) + if(GAMESTATE->m_pCurSteps[pn]->GetDifficulty() == info.difficulties[d]) { - if(GAMESTATE->m_pCurSteps[pn]->GetDifficulty() == info.difficulties[d]) - { - foundmatchingdiff = true; - LOG->Info("Found Valid Difficulty"); - - } + foundmatchingdiff = true; + LOG->Info("Found Valid Difficulty"); + } } } @@ -395,53 +392,48 @@ void ConditionalBGA::CheckBgaRequirements(BgaCondInfo info) { PlayerOptions po = info.disallowedpo; bool bModsValid = true; - for(unsigned pn=0;pnIsPlayerEnabled(pn)) + unsigned md; + for(md=0;mdm_PlayerOptions[pn].m_fAccels[md] != 0.0f) { - if(po.m_fAccels[md] != 0.0f && GAMESTATE->m_PlayerOptions[pn].m_fAccels[md] != 0.0f) - { - bModsValid=false; - LOG->Info("Found Invalid Accel Mod"); - } + bModsValid=false; + LOG->Info("Found Invalid Accel Mod"); } - for(md=0;mdm_PlayerOptions[pn].m_fEffects[md] != 0.0f) { - if(po.m_fEffects[md] != 0.0f && GAMESTATE->m_PlayerOptions[pn].m_fEffects[md] != 0.0f) - { - bModsValid=false; - LOG->Info("Found Invalid Effect Mod"); - } + bModsValid=false; + LOG->Info("Found Invalid Effect Mod"); } - for(md=0;mdm_PlayerOptions[pn].m_fAppearances[md] != 0.0f) { - if(po.m_fAppearances[md] != 0.0f && GAMESTATE->m_PlayerOptions[pn].m_fAppearances[md] != 0.0f) - { - bModsValid=false; - LOG->Info("Found Invalid Appearance Mod"); - } + bModsValid=false; + LOG->Info("Found Invalid Appearance Mod"); } - for(md=0;mdm_PlayerOptions[pn].m_bTurns[md] != 0.0f) { - if(po.m_bTurns[md] != 0.0f && GAMESTATE->m_PlayerOptions[pn].m_bTurns[md] != 0.0f) - { - bModsValid=false; - LOG->Info("Found Invalid Turn Mod"); - } + bModsValid=false; + LOG->Info("Found Invalid Turn Mod"); } - for(md=0;mdm_PlayerOptions[pn].m_bTransforms[md] != 0.0f) { - if(po.m_bTransforms[md] != 0.0f && GAMESTATE->m_PlayerOptions[pn].m_bTransforms[md] != 0.0f) - { - bModsValid=false; - LOG->Info("Found Invalid Transform Mod"); - } + bModsValid=false; + LOG->Info("Found Invalid Transform Mod"); } - - } } valid = bModsValid; @@ -454,28 +446,25 @@ void ConditionalBGA::CheckBgaRequirements(BgaCondInfo info) for(unsigned d=0;dInfo("MeterRating: %d",info.songmeters[d]); - for(int pn=0;pnIsPlayerEnabled(pn)) - { - if(GAMESTATE->m_pCurSteps[pn] != NULL) - { - if(info.songmeters[d] < 0) // negative values stored mean we want to check a value greaterthan or equal to its negative - { - // first make it positive then check to see if the footrating is >= to it - int tmp = 0 - info.songmeters[d]; - if(GAMESTATE->m_pCurSteps[pn]->GetMeter() >= tmp) - { - LOG->Info("Found Valid MeterRating"); - foundmatchingmeter = true; - } - } - else if(GAMESTATE->m_pCurSteps[pn]->GetMeter() == info.songmeters[d]) + if(GAMESTATE->m_pCurSteps[pn] != NULL) + { + if(info.songmeters[d] < 0) // negative values stored mean we want to check a value greaterthan or equal to its negative + { + // first make it positive then check to see if the footrating is >= to it + int tmp = 0 - info.songmeters[d]; + if(GAMESTATE->m_pCurSteps[pn]->GetMeter() >= tmp) { LOG->Info("Found Valid MeterRating"); foundmatchingmeter = true; } } + else if(GAMESTATE->m_pCurSteps[pn]->GetMeter() == info.songmeters[d]) + { + LOG->Info("Found Valid MeterRating"); + foundmatchingmeter = true; + } } } } @@ -509,15 +498,12 @@ void ConditionalBGA::CheckBgaRequirements(BgaCondInfo info) { LOG->Info("Checking Single Grade"); bool foundaplayerwithgrade = false; - for(unsigned pn=0; pnIsPlayerEnabled(pn)) + if(g_CurStageStats.GetGrade(pn) == info.grades[0]) { - if(g_CurStageStats.GetGrade((PlayerNumber)pn) == info.grades[0]) - { - LOG->Info("Found Valid Grade"); - foundaplayerwithgrade = true; - } + LOG->Info("Found Valid Grade"); + foundaplayerwithgrade = true; } } foundmatchinggrades = foundaplayerwithgrade; @@ -622,23 +608,21 @@ void ConditionalBGA::CheckBgaRequirements(BgaCondInfo info) } else if(info.cleared == CBGA_CSMAXCOMBO) { - for(unsigned pn=0;pnIsPlayerEnabled(pn)) - if(g_CurStageStats.FullCombo((PlayerNumber)pn)) - { - foundclearcond = true; - LOG->Info("MaxCombo Condition"); - } + FOREACH_EnabledPlayer( pn ) + if(g_CurStageStats.FullCombo((PlayerNumber)pn)) + { + foundclearcond = true; + LOG->Info("MaxCombo Condition"); + } } else if(info.cleared == CBGA_CSBROKECOMBO) { - for(unsigned pn=0;pnIsPlayerEnabled(pn)) - if(!g_CurStageStats.FullCombo((PlayerNumber)pn)) - { - LOG->Info("BrokenCombo Condition"); - foundclearcond = true; - } + FOREACH_EnabledPlayer( pn ) + if(!g_CurStageStats.FullCombo((PlayerNumber)pn)) + { + LOG->Info("BrokenCombo Condition"); + foundclearcond = true; + } } valid = foundclearcond; diff --git a/stepmania/src/GameState.h b/stepmania/src/GameState.h index ea014be3e9..d6df1d110e 100644 --- a/stepmania/src/GameState.h +++ b/stepmania/src/GameState.h @@ -75,16 +75,13 @@ public: void GetPlayerInfo( PlayerNumber pn, bool& bIsEnabledOut, bool& bIsHumanOut ); bool IsPlayerEnabled( PlayerNumber pn ) const; - bool IsPlayerEnabled( int p ) const { return IsPlayerEnabled( (PlayerNumber)p ); }; int GetNumPlayersEnabled() const; bool PlayerUsingBothSides() const; bool IsHumanPlayer( PlayerNumber pn ) const; - bool IsHumanPlayer( int p ) const { return IsHumanPlayer( (PlayerNumber)p ); }; int GetNumHumanPlayers() const; PlayerNumber GetFirstHumanPlayer() const; bool IsCpuPlayer( PlayerNumber pn ) const; - bool IsCpuPlayer( int p ) const { return IsCpuPlayer( (PlayerNumber)p ); }; bool AnyPlayersAreCpu() const; void GetCharacters( vector &apCharactersOut ); diff --git a/stepmania/src/ScreenEndlessBreak.cpp b/stepmania/src/ScreenEndlessBreak.cpp index 050b4afff0..98a04ae602 100644 --- a/stepmania/src/ScreenEndlessBreak.cpp +++ b/stepmania/src/ScreenEndlessBreak.cpp @@ -22,18 +22,17 @@ ScreenEndlessBreak::ScreenEndlessBreak( CString sName ) : Screen( sName ) m_sprBreakPicture.Load( THEME->GetPathToG("Common fallback takingabreak") ); else if( GAMESTATE->GetNumPlayersEnabled() > 1 ) // More than 1 player is present. { - int PlayerToUse = 999; /* If this was 0 by default, the first player would - always be selected. Make it an insane number so - we always generate a random player. */ - while (!GAMESTATE->IsPlayerEnabled(PlayerToUse)) + PlayerNumber pn; + do { - PlayerToUse = (int)(rand()*NUM_PLAYERS); // Is there a danger of this becoming an endless loop?? - if( (GAMESTATE->IsPlayerEnabled(PlayerToUse)) && (GAMESTATE->m_pCurCharacters[PlayerToUse] != NULL) ) + pn = (PlayerNumber)(rand()%NUM_PLAYERS); + if( GAMESTATE->IsPlayerEnabled(pn) && (GAMESTATE->m_pCurCharacters[pn] != NULL) ) { - m_sprBreakPicture.LoadTABreakFromCharacter( GAMESTATE->m_pCurCharacters[PlayerToUse] ); + m_sprBreakPicture.LoadTABreakFromCharacter( GAMESTATE->m_pCurCharacters[pn] ); break; } } + while( !GAMESTATE->IsPlayerEnabled(pn) ); } } else // Characters not enabled. diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index 9b641971d3..775b02b8ac 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -307,11 +307,8 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti if( row.m_bRowIsLong ) { // init text - for( unsigned p=0; pIsHumanPlayer(p) ) - continue; // skip - BitmapText *bt = new BitmapText; textItems.push_back( bt ); @@ -334,20 +331,15 @@ void ScreenOptions::Init( InputMode im, OptionRowData OptionRows[], int iNumOpti } // init underlines + FOREACH_HumanPlayer( p ) { - for( unsigned p=0; pIsHumanPlayer(p) ) - continue; // skip - - OptionsCursor *ul = new OptionsCursor; - row.m_Underline[p].push_back( ul ); - ul->Load( (PlayerNumber)p, true ); - int iWidth, iX, iY; - GetWidthXY( (PlayerNumber) p, r, c, iWidth, iX, iY ); - ul->SetX( float(iX) ); - ul->SetWidth( float(iWidth) ); - } + OptionsCursor *ul = new OptionsCursor; + row.m_Underline[p].push_back( ul ); + ul->Load( (PlayerNumber)p, true ); + int iWidth, iX, iY; + GetWidthXY( (PlayerNumber) p, r, c, iWidth, iX, iY ); + ul->SetX( float(iX) ); + ul->SetWidth( float(iWidth) ); } } diff --git a/stepmania/src/ScreenSelectMode.cpp b/stepmania/src/ScreenSelectMode.cpp index fb95931062..30200a27d3 100644 --- a/stepmania/src/ScreenSelectMode.cpp +++ b/stepmania/src/ScreenSelectMode.cpp @@ -277,17 +277,13 @@ void ScreenSelectMode::SetCharacters() GAMESTATE->GetCharacters( apCharactersToUse ); } } - for(int pn=0; pnIsPlayerEnabled(pn)) + if(ENABLE_CHAR_SELECT && m_iCurrentChar[pn] != -1) { - if(ENABLE_CHAR_SELECT && m_iCurrentChar[pn] != -1) - { - Character* pChar = apCharactersToUse[m_iCurrentChar[pn]]; - GAMESTATE->m_pCurCharacters[pn] = pChar; - } + Character* pChar = apCharactersToUse[m_iCurrentChar[pn]]; + GAMESTATE->m_pCurCharacters[pn] = pChar; } - } } @@ -345,14 +341,11 @@ void ScreenSelectMode::Update( float fDelta ) void ScreenSelectMode::DrawPrimitives() { ScreenSelect::DrawPrimitives(); - for(int pn=0; pnIsPlayerEnabled(pn)) + if(ENABLE_CHAR_SELECT) { - if(ENABLE_CHAR_SELECT) - { - m_CurChar[pn].Draw(); - } + m_CurChar[pn].Draw(); } } } diff --git a/stepmania/src/StageStats.cpp b/stepmania/src/StageStats.cpp index e20cbe54ec..d4503c4eb7 100644 --- a/stepmania/src/StageStats.cpp +++ b/stepmania/src/StageStats.cpp @@ -248,7 +248,7 @@ bool StageStats::OnePassed() const bool StageStats::AllFailed() const { FOREACH_PlayerNumber( pn ) - if( GAMESTATE->IsPlayerEnabled(PlayerNumber(pn)) ) + if( GAMESTATE->IsPlayerEnabled(pn) ) if( !bFailed[pn] ) return false; return true; @@ -462,24 +462,16 @@ float StageStats::GetPercentageOfTaps( PlayerNumber pn, TapNoteScore tns ) const static Grade GetBestGrade() { Grade g = NUM_GRADES; - for( unsigned pn=0; pnIsPlayerEnabled(pn) ) - continue; - g = min( g, g_CurStageStats.GetGrade( (PlayerNumber)pn ) ); - } + FOREACH_EnabledPlayer( pn ) + g = min( g, g_CurStageStats.GetGrade( pn ) ); return g; } static Grade GetWorstGrade() { Grade g = GRADE_TIER_1; - for( unsigned pn=0; pnIsPlayerEnabled(pn) ) - continue; - g = max( g, g_CurStageStats.GetGrade( (PlayerNumber)pn ) ); - } + FOREACH_EnabledPlayer( pn ) + g = max( g, g_CurStageStats.GetGrade( pn ) ); return g; } @@ -516,7 +508,7 @@ Grade GetGrade( int n, PlayerNumber pn ) bool OneGotGrade( int n, Grade g ) { FOREACH_HumanPlayer( pn ) - if( GetGrade( n, (PlayerNumber)pn ) == g ) + if( GetGrade( n, pn ) == g ) return true; return false;