From d11b35a1a773a18558dd75875723ca0cc5f305ee Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 7 Oct 2007 22:49:07 +0000 Subject: [PATCH] Transfer small blind and minimum raise amount to client. --- docs/net_protocol.txt | 8 ++++++-- src/net/common/clientstate.cpp | 2 ++ src/net/common/netpacket.cpp | 6 ++++++ src/net/common/servergamestate.cpp | 5 +++-- src/net/common/sessionmanager.cpp | 15 +++++++++++++++ src/net/netpacket.h | 2 ++ src/net/sessionmanager.h | 2 ++ 7 files changed, 36 insertions(+), 4 deletions(-) diff --git a/docs/net_protocol.txt b/docs/net_protocol.txt index 40ecec0a..04abb8e6 100644 --- a/docs/net_protocol.txt +++ b/docs/net_protocol.txt @@ -489,10 +489,12 @@ Server Notification: Hand Start 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Message Type = 81 | Message Length = 8 | + | Message Type = 81 | Message Length = 12 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Your 1st Card | Your 2nd Card | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Small Blind | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Card: 0 to 51 @@ -503,10 +505,12 @@ Server Request/Notification: Player's Turn 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Message Type = 82 | Message Length = 8 | + | Message Type = 82 | Message Length = 16 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Player ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Minimum Raise | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Game State | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ diff --git a/src/net/common/clientstate.cpp b/src/net/common/clientstate.cpp index f8129b39..5f3e1f5b 100644 --- a/src/net/common/clientstate.cpp +++ b/src/net/common/clientstate.cpp @@ -815,6 +815,7 @@ ClientStateWaitHand::InternalProcess(ClientThread &client, boost::shared_ptrgetSeatsList()->front()->setMyCards(myCards); client.GetGame()->initHand(); + client.GetGame()->getCurrentHand()->setSmallBlind(tmpData.smallBlind); client.GetGame()->startHand(); client.GetGui().dealHoleCards(); client.GetGui().refreshGameLabels(GAME_STATE_PREFLOP); @@ -952,6 +953,7 @@ ClientStateRunHand::InternalProcess(ClientThread &client, boost::shared_ptrgetCurrentHand()->getCurrentBeRo()->setCurrentPlayersTurnId(tmpPlayer->getMyID()); + curGame->getCurrentHand()->getCurrentBeRo()->setMinimumRaise(turnData.minimumRaise); // TODO: remove this curGame->getCurrentHand()->getCurrentBeRo()->setPlayersTurn(tmpPlayer->getMyID()); diff --git a/src/net/common/netpacket.cpp b/src/net/common/netpacket.cpp index 1db4ef4a..54c05130 100644 --- a/src/net/common/netpacket.cpp +++ b/src/net/common/netpacket.cpp @@ -322,12 +322,14 @@ struct GCC_PACKED NetPacketHandStartData NetPacketHeader head; u_int16_t yourCard1; u_int16_t yourCard2; + u_int32_t smallBlind; }; struct GCC_PACKED NetPacketPlayersTurnData { NetPacketHeader head; u_int32_t playerId; + u_int32_t minimumRaise; u_int16_t gameState; u_int16_t reserved; }; @@ -2923,6 +2925,7 @@ NetPacketHandStart::SetData(const NetPacketHandStart::Data &inData) tmpData->yourCard1 = htons(inData.yourCards[0]); tmpData->yourCard2 = htons(inData.yourCards[1]); + tmpData->smallBlind = htonl(inData.smallBlind); // Check the packet - just in case. Check(GetRawData()); @@ -2935,6 +2938,7 @@ NetPacketHandStart::GetData(NetPacketHandStart::Data &outData) const outData.yourCards[0] = ntohs(tmpData->yourCard1); outData.yourCards[1] = ntohs(tmpData->yourCard2); + outData.smallBlind = ntohl(tmpData->smallBlind); } const NetPacketHandStart * @@ -2985,6 +2989,7 @@ NetPacketPlayersTurn::SetData(const NetPacketPlayersTurn::Data &inData) tmpData->playerId = htonl(inData.playerId); tmpData->gameState = htons(inData.gameState); + tmpData->minimumRaise = htonl(inData.minimumRaise); // Check the packet - just in case. Check(GetRawData()); @@ -2997,6 +3002,7 @@ NetPacketPlayersTurn::GetData(NetPacketPlayersTurn::Data &outData) const outData.playerId = ntohl(tmpData->playerId); outData.gameState = static_cast(ntohs(tmpData->gameState)); + outData.minimumRaise = ntohl(tmpData->minimumRaise); } const NetPacketPlayersTurn * diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index d14aea79..7628f9b0 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -419,6 +419,7 @@ ServerGameStateWaitAck::InternalProcess(ServerGameThread &server, SessionWrapper if (server.GetSessionManager().CountReadySessions() == server.GetSessionManager().GetRawSessionCount()) { // Everyone is ready. + server.GetSessionManager().ResetAllReadyFlags(); server.SetState(SERVER_START_GAME_STATE::Instance()); retVal = MSG_SOCK_INIT_DONE; } @@ -505,8 +506,6 @@ ServerGameStateStartHand::~ServerGameStateStartHand() int ServerGameStateStartHand::Process(ServerGameThread &server) { - boost::shared_ptr answer(new NetPacketHandStart); - // Initialize hand. Game &curGame = server.GetGame(); curGame.initHand(); @@ -533,6 +532,7 @@ ServerGameStateStartHand::Process(ServerGameThread &server) NetPacketHandStart::Data handStartData; handStartData.yourCards[0] = static_cast(cards[0]); handStartData.yourCards[1] = static_cast(cards[1]); + handStartData.smallBlind = curGame.getCurrentHand()->getSmallBlind(); static_cast(notifyCards.get())->SetData(handStartData); server.GetSender().Send(tmpPlayer->getNetSessionData()->GetSocket(), notifyCards); @@ -690,6 +690,7 @@ ServerGameStateStartRound::Process(ServerGameThread &server) NetPacketPlayersTurn::Data playersTurnData; playersTurnData.gameState = (GameState)curGame.getCurrentHand()->getActualRound(); playersTurnData.playerId = curPlayer->getMyUniqueID(); + playersTurnData.minimumRaise = curGame.getCurrentHand()->getCurrentBeRo()->getMinimumRaise(); static_cast(notification.get())->SetData(playersTurnData); server.SendToAllPlayers(notification, SessionData::Game); diff --git a/src/net/common/sessionmanager.cpp b/src/net/common/sessionmanager.cpp index 19e0d7a5..b2a2f197 100644 --- a/src/net/common/sessionmanager.cpp +++ b/src/net/common/sessionmanager.cpp @@ -310,6 +310,21 @@ SessionManager::CountReadySessions() const return counter; } +void +SessionManager::ResetAllReadyFlags() +{ + boost::mutex::scoped_lock lock(m_sessionMapMutex); + + SessionMap::iterator i = m_sessionMap.begin(); + SessionMap::iterator end = m_sessionMap.end(); + + while (i != end) + { + (*i).second.sessionData->ResetReadyFlag(); + ++i; + } +} + void SessionManager::Clear() { diff --git a/src/net/netpacket.h b/src/net/netpacket.h index 189d7d01..a557e89b 100644 --- a/src/net/netpacket.h +++ b/src/net/netpacket.h @@ -737,6 +737,7 @@ public: struct Data { u_int16_t yourCards[2]; + u_int32_t smallBlind; }; NetPacketHandStart(); @@ -761,6 +762,7 @@ public: { GameState gameState; u_int32_t playerId; + u_int32_t minimumRaise; }; NetPacketPlayersTurn(); diff --git a/src/net/sessionmanager.h b/src/net/sessionmanager.h index ab6bcfeb..c89c3354 100644 --- a/src/net/sessionmanager.h +++ b/src/net/sessionmanager.h @@ -64,7 +64,9 @@ public: bool IsPlayerConnected(unsigned uniqueId) const; void ForEach(boost::function func); + unsigned CountReadySessions() const; + void ResetAllReadyFlags(); void Clear(); unsigned GetRawSessionCount();