From 72fa1fb9ec2e42faaa9b51105f03984b988661a8 Mon Sep 17 00:00:00 2001 From: lotodore Date: Tue, 30 Mar 2010 18:03:08 +0000 Subject: [PATCH] Do not invite players who are already in the group. --- src/net/common/servergame.cpp | 8 ++++++++ src/net/common/servergamestate.cpp | 3 ++- src/net/servergame.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/net/common/servergame.cpp b/src/net/common/servergame.cpp index 10b63daf..76de2086 100644 --- a/src/net/common/servergame.cpp +++ b/src/net/common/servergame.cpp @@ -464,6 +464,12 @@ ServerGame::IsPlayerConnected(const std::string &name) const return GetSessionManager().IsPlayerConnected(name); } +bool +ServerGame::IsPlayerConnected(unsigned playerId) const +{ + return GetSessionManager().IsPlayerConnected(playerId); +} + bool ServerGame::IsRunning() const { @@ -487,6 +493,8 @@ ServerGame::AddPlayerInvitation(unsigned playerId) { boost::mutex::scoped_lock lock(m_playerInvitationListMutex); m_playerInvitationList.push_back(playerId); + m_playerInvitationList.sort(); + m_playerInvitationList.unique(); } void diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index be5f5c3f..83ae9510 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -467,7 +467,8 @@ ServerGameStateInit::InternalProcessPacket(boost::shared_ptr server, { InvitePlayerToGameMessage_t *netInvite = &packet->GetMsg()->choice.invitePlayerToGameMessage; - if (netInvite->gameId == server->GetId()) + // Only invite players which are not already within the group. + if (netInvite->gameId == server->GetId() && !server->IsPlayerConnected(netInvite->playerId)) { boost::shared_ptr packet(new NetPacket(NetPacket::Alloc)); packet->GetMsg()->present = PokerTHMessage_PR_inviteNotifyMessage; diff --git a/src/net/servergame.h b/src/net/servergame.h index 9f3d8151..a0c62270 100644 --- a/src/net/servergame.h +++ b/src/net/servergame.h @@ -72,6 +72,7 @@ public: boost::shared_ptr GetPlayerDataByUniqueId(unsigned playerId) const; PlayerIdList GetPlayerIdList() const; bool IsPlayerConnected(const std::string &name) const; + bool IsPlayerConnected(unsigned playerId) const; bool IsRunning() const;