diff --git a/src/net/common/clientstate.cpp b/src/net/common/clientstate.cpp index a164fc23..a8891ddb 100644 --- a/src/net/common/clientstate.cpp +++ b/src/net/common/clientstate.cpp @@ -1495,6 +1495,7 @@ ClientStateWaitStart::InternalHandlePacket(boost::shared_ptr clien if (tmpPacket->GetMsg()->present == PokerTHMessage_PR_gameStartMessage) { // Start the network game as client. GameStartMessage_t *netGameStart = &tmpPacket->GetMsg()->choice.gameStartMessage; + unsigned tmpHandId = 0; StartData startData; startData.startDealerPlayerId = netGameStart->startDealerPlayerId; @@ -1525,6 +1526,7 @@ ClientStateWaitStart::InternalHandlePacket(boost::shared_ptr clien // Set player numbers using the game start data slots. RejoinPlayerData_t **playerInfos = netStartModeRejoin->rejoinPlayerData.list.array; unsigned numPlayers = netStartModeRejoin->rejoinPlayerData.list.count; + tmpHandId = netStartModeRejoin->handNum; // Request player info for players if needed. if (numPlayers && playerInfos && *playerInfos) { for (unsigned i = 0; i < numPlayers; i++) { @@ -1541,6 +1543,7 @@ ClientStateWaitStart::InternalHandlePacket(boost::shared_ptr clien throw ClientException(__FILE__, __LINE__, ERR_NET_INTERNAL_GAME_ERROR, 0); } client->InitGame(); + client->GetGame()->setCurrentHandID(tmpHandId); client->GetCallback().SignalNetClientGameInfo(MSG_NET_GAME_CLIENT_START); client->SetState(ClientStateWaitHand::Instance()); } diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index daf715d8..e27d0117 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -1133,9 +1133,8 @@ ServerGameStateHand::GetDealCardsDelaySec(ServerGame &server) void ServerGameStateHand::StartNewHand(boost::shared_ptr server) { - // Initialize hand. Game &curGame = server->GetGame(); - curGame.initHand(); + // Initialize rejoining players. { PlayerIdList rejoinIdList(server->GetAndResetRejoinPlayers()); @@ -1158,6 +1157,7 @@ ServerGameStateHand::StartNewHand(boost::shared_ptr server) GameStartModeRejoin_t *netStartModeRejoin = &netGameStart->gameStartMode.choice.gameStartModeRejoin; // Send player data to client. + netStartModeRejoin->handNum = curGame.getCurrentHandID(); PlayerListIterator player_i = curGame.getSeatsList()->begin(); PlayerListIterator player_end = curGame.getSeatsList()->end(); while (player_i != player_end) { @@ -1178,6 +1178,9 @@ ServerGameStateHand::StartNewHand(boost::shared_ptr server) } } + // Initialize hand. + curGame.initHand(); + // HACK: Skip GUI notification run curGame.getCurrentHand()->getFlop()->skipFirstRunGui(); curGame.getCurrentHand()->getTurn()->skipFirstRunGui();