diff --git a/src/net/common/servergame.cpp b/src/net/common/servergame.cpp index ccd4f60c..3830d342 100644 --- a/src/net/common/servergame.cpp +++ b/src/net/common/servergame.cpp @@ -358,6 +358,17 @@ ServerGame::SetPlayerPlace(unsigned playerId, int place) } } +void +ServerGame::ReplaceRankingPlayer(unsigned oldPlayerId, unsigned newPlayerId) +{ + RankingMap::iterator pos = m_rankingMap.find(oldPlayerId); + if (pos != m_rankingMap.end()) { + RankingData tmpData((*pos).second); + m_rankingMap[newPlayerId] = tmpData; + m_rankingMap.erase(pos); + } +} + void ServerGame::StoreAndResetRanking() { diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index 5cc67bac..190583fe 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -1360,6 +1360,8 @@ ServerGameStateHand::PerformRejoin(boost::shared_ptr server, boost:: // Update the dealer, if necessary. curGame.replaceDealer(rejoinPlayer->getMyUniqueID(), session->GetPlayerData()->GetUniqueId()); + // Update the ranking map. + server->ReplaceRankingPlayer(rejoinPlayer->getMyUniqueID(), session->GetPlayerData()->GetUniqueId()); // Change the Id in the poker engine. rejoinPlayer->setMyUniqueID(session->GetPlayerData()->GetUniqueId()); rejoinPlayer->setMyGuid(session->GetPlayerData()->GetGuid()); diff --git a/src/net/servergame.h b/src/net/servergame.h index f84ce542..7a6fe015 100644 --- a/src/net/servergame.h +++ b/src/net/servergame.h @@ -118,6 +118,7 @@ protected: void InitRankingMap(const PlayerDataList &playerDataList); void UpdateRankingMap(); void SetPlayerPlace(unsigned playerId, int place); + void ReplaceRankingPlayer(unsigned oldPlayerId, unsigned newPlayerId); void StoreAndResetRanking(); void RemoveAutoLeavePlayers(); void InternalEndGame();