diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index b220d91d87..bd5bbfaa95 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -993,16 +993,18 @@ void ScreenGameplay::LoadNextSong() { GAMESTATE->ResetMusicStatistics(); - FOREACH_EnabledPlayerInfoNotDummy( m_vPlayerInfo, pi ) + FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi ) { pi->GetPlayerStageStats()->m_iSongsPlayed++; if( pi->m_ptextCourseSongNumber ) pi->m_ptextCourseSongNumber->SetText( ssprintf("%d", pi->GetPlayerStageStats()->m_iSongsPassed+1) ); } - // super hack if( GAMESTATE->m_bMultiplayer ) - STATSMAN->m_CurStageStats.m_player[GAMESTATE->m_MasterPlayerNumber].m_iSongsPlayed++; + { + FOREACH_ENUM( MultiPlayer, mp ) + this->UpdateStageStats( mp ); + } int iPlaySongIndex = GAMESTATE->GetCourseSongIndex(); iPlaySongIndex %= m_apSongsQueue.size(); @@ -1615,7 +1617,7 @@ void ScreenGameplay::Update( float fDeltaTime ) switch( ft ) { case PlayerOptions::FAIL_IMMEDIATE: - if( pi->m_pLifeMeter && !pi->m_pLifeMeter->IsFailing() ) + if( pi->m_pLifeMeter == NULL || (pi->m_pLifeMeter && !pi->m_pLifeMeter->IsFailing()) ) bAllFailed = false; break; case PlayerOptions::FAIL_IMMEDIATE_CONTINUE: diff --git a/stepmania/src/ScreenGameplay.h b/stepmania/src/ScreenGameplay.h index 16f664bf51..d09e14af80 100644 --- a/stepmania/src/ScreenGameplay.h +++ b/stepmania/src/ScreenGameplay.h @@ -130,6 +130,8 @@ public: PlayerInfo *GetPlayerInfo( PlayerNumber pn ); protected: + virtual void UpdateStageStats( MultiPlayer mp ) {}; // overridden for multiplayer + virtual bool GenericTweenOn() const { return true; } virtual bool GenericTweenOff() const { return true; }