From 58847ff1b9f6cf1b7e981155c08963efaf5f332e Mon Sep 17 00:00:00 2001 From: Steve Checkoway Date: Mon, 17 Jul 2006 01:02:31 +0000 Subject: [PATCH] Use one ScoreKeeper per Player (as is normal) but share master player's NoteData with the other Players. Note that this means that multiple Players may be updating the same NoteData. This should not matter as the Player should only deal with notes it owns. --- stepmania/src/ScreenGameplayShared.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/stepmania/src/ScreenGameplayShared.cpp b/stepmania/src/ScreenGameplayShared.cpp index 7e511f0fa8..c6eb9ae624 100644 --- a/stepmania/src/ScreenGameplayShared.cpp +++ b/stepmania/src/ScreenGameplayShared.cpp @@ -14,16 +14,18 @@ void ScreenGameplayShared::FillPlayerInfo( vector &vPlayerInfoOut ) { PlayerNumber mpn = GAMESTATE->m_MasterPlayerNumber; vPlayerInfoOut.resize( NUM_PLAYERS ); + PlayerInfo &mpi = vPlayerInfoOut[mpn]; FOREACH_PlayerNumber( pn ) { PlayerInfo &pi = vPlayerInfoOut[pn]; - pi.m_pn = pn; + PlayerState *pPlayerState = pi.GetPlayerState(); + PlayerStageStats *pPlayerStageStats = pi.GetPlayerStageStats(); + pi.m_pPrimaryScoreDisplay = new ScoreDisplayNormal; - pi.m_pPrimaryScoreDisplay->Init( pi.GetPlayerState(), pi.GetPlayerStageStats() ); - if( pn == mpn ) - pi.m_pPrimaryScoreKeeper = new ScoreKeeperShared; - pi.m_pPlayer = new Player( pn == mpn, pn == mpn ); + pi.m_pPrimaryScoreDisplay->Init( pPlayerState, pPlayerStageStats ); + pi.m_pPrimaryScoreKeeper = new ScoreKeeperShared( pPlayerState, pPlayerStageStats ); + pi.m_pPlayer = new Player( mpi.m_NoteData, pn == mpn, pn == mpn ); } } @@ -38,7 +40,7 @@ void ScreenGameplayShared::SaveStats() PlayerNumber mpn = GAMESTATE->m_MasterPlayerNumber; float fMusicLen = GAMESTATE->m_pCurSong->m_fMusicLengthSeconds; - NoteDataUtil::SplitCompositeNoteData( m_vPlayerInfo[mpn].m_pPlayer->m_NoteData, vParts ); + NoteDataUtil::SplitCompositeNoteData( m_vPlayerInfo[mpn].m_pPlayer->GetNoteData(), vParts ); for( size_t i = 0; i < min(vParts.size(), m_vPlayerInfo.size()); ++i ) { PlayerInfo &pi = m_vPlayerInfo[i];