From 7f5ff4af97554dae001c84ed5fc4b940dd56b7ae Mon Sep 17 00:00:00 2001 From: lotodore Date: Wed, 14 Nov 2007 22:54:47 +0000 Subject: [PATCH] Fixed bug where computer players where displayed as numbers in lobby. --- src/gamedata.h | 2 ++ src/net/common/clientthread.cpp | 18 +++++++++++------- src/net/common/servergamestate.cpp | 2 -- src/net/common/serverlobbythread.cpp | 2 -- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/gamedata.h b/src/gamedata.h index 17f48174..23135be4 100644 --- a/src/gamedata.h +++ b/src/gamedata.h @@ -23,6 +23,8 @@ #include +#define SERVER_COMPUTER_PLAYER_NAME "Computer" + enum GameMode { GAME_MODE_CREATED = 1, diff --git a/src/net/common/clientthread.cpp b/src/net/common/clientthread.cpp index d9598b88..849d76b8 100644 --- a/src/net/common/clientthread.cpp +++ b/src/net/common/clientthread.cpp @@ -420,16 +420,20 @@ ClientThread::SetPlayerInfo(unsigned id, const PlayerInfo &info) // for the same player name if it exists. // This can only be one entry, since every time a duplicate // name is added one is removed. - PlayerInfoMap::iterator i = m_playerInfoMap.begin(); - PlayerInfoMap::iterator end = m_playerInfoMap.end(); - while (i != end) + // Only erase non computer player entries. + if (info.playerName.substr(0, sizeof(SERVER_COMPUTER_PLAYER_NAME) - 1) != SERVER_COMPUTER_PLAYER_NAME) { - if (i->first != id && i->second.playerName == info.playerName) + PlayerInfoMap::iterator i = m_playerInfoMap.begin(); + PlayerInfoMap::iterator end = m_playerInfoMap.end(); + while (i != end) { - m_playerInfoMap.erase(i); - break; + if (i->first != id && i->second.playerName == info.playerName) + { + m_playerInfoMap.erase(i); + break; + } + ++i; } - ++i; } m_playerInfoMap[id] = info; } diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index ab692fa7..ecad40bc 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -62,8 +62,6 @@ using namespace std; #define SERVER_COMPUTER_ACTION_DELAY_SEC 2 #endif -#define SERVER_COMPUTER_PLAYER_NAME "Computer" - // Helper functions // TODO: these are hacks. diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 240b6af0..1c4e1994 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -41,8 +41,6 @@ #define SERVER_NUM_AVATAR_SENDER_THREADS 5 -#define SERVER_COMPUTER_PLAYER_NAME "Computer" - #define SERVER_STATISTICS_FILE_NAME "server_statistics.log" #define SERVER_STATISTICS_STR_TOTAL_PLAYERS "TotalNumPlayersLoggedIn" #define SERVER_STATISTICS_STR_TOTAL_GAMES "TotalNumGamesStarted"