diff --git a/src/engine/local_engine/localplayer.h b/src/engine/local_engine/localplayer.h index ddb577ca..0def2a74 100755 --- a/src/engine/local_engine/localplayer.h +++ b/src/engine/local_engine/localplayer.h @@ -60,7 +60,7 @@ public: void setMySet(int theValue) { myLastRelativeSet = theValue; mySet += theValue; myCash -= theValue; } void setMySetAbsolute(int theValue) { mySet = theValue; } - void setMySetNull() { mySet = 0; } + void setMySetNull() { mySet = 0; myLastRelativeSet = 0; } int getMySet() const { return mySet;} int getMyLastRelativeSet() const { return myLastRelativeSet; } diff --git a/src/engine/network_engine/clientboard.cpp b/src/engine/network_engine/clientboard.cpp index cc4990b1..035c68e8 100644 --- a/src/engine/network_engine/clientboard.cpp +++ b/src/engine/network_engine/clientboard.cpp @@ -47,12 +47,20 @@ ClientBoard::setHand(HandInterface* br) void ClientBoard::collectSets() -{ -} - +{ + sets = 0; + int i; + for(i=0; igetMySet(); + +} + void ClientBoard::collectPot() { -} + int i; + pot += sets; + sets = 0; + for(i=0; isetMySetNull(); } +} diff --git a/src/engine/network_engine/clientplayer.h b/src/engine/network_engine/clientplayer.h index 323ae6e9..f64e2a26 100644 --- a/src/engine/network_engine/clientplayer.h +++ b/src/engine/network_engine/clientplayer.h @@ -58,7 +58,7 @@ public: void setMySet(int theValue) { myLastRelativeSet = theValue; mySet += theValue; myCash -= theValue; } void setMySetAbsolute(int theValue) { mySet = theValue; } - void setMySetNull() { mySet = 0; } + void setMySetNull() { mySet = 0; myLastRelativeSet = 0; } int getMySet() const { return mySet;} int getMyLastRelativeSet() const { return myLastRelativeSet; } diff --git a/src/net/common/clientstate.cpp b/src/net/common/clientstate.cpp index 387bfb71..66da903d 100644 --- a/src/net/common/clientstate.cpp +++ b/src/net/common/clientstate.cpp @@ -597,8 +597,8 @@ ClientStateRunHand::InternalProcess(ClientThread &client, boost::shared_ptrgetMyID(), 3); // Refresh GUI - client.GetGui().refreshSet(); client.GetGui().refreshPot(); + client.GetGui().refreshSet(); client.GetGui().refreshAction(); client.GetGui().refreshCash(); } @@ -610,7 +610,26 @@ ClientStateRunHand::InternalProcess(ClientThread &client, boost::shared_ptrgetCurrentHand()->setActualRound(turnData.gameState); + if (curGame->getCurrentHand()->getActualRound() != turnData.gameState) + { + // Reset player actions + for (int i = 0; i < MAX_NUMBER_OF_PLAYERS; i++) + { + int action = curGame->getPlayerArray()[i]->getMyAction(); + if (action != 1 && action != 6) + curGame->getPlayerArray()[i]->setMyAction(0); + } + // Move sets to pot + curGame->getCurrentHand()->getBoard()->collectSets(); + curGame->getCurrentHand()->getBoard()->collectPot(); + + client.GetGui().refreshPot(); + client.GetGui().refreshSet(); + client.GetGui().refreshAction(); + client.GetGui().refreshCash(); + + curGame->getCurrentHand()->setActualRound(turnData.gameState); + } // Next player's turn. SetPlayersTurn(*curGame, tmpPlayer->getMyID()); diff --git a/src/net/common/serverrecvstate.cpp b/src/net/common/serverrecvstate.cpp index 77d007a7..9593df12 100644 --- a/src/net/common/serverrecvstate.cpp +++ b/src/net/common/serverrecvstate.cpp @@ -318,6 +318,7 @@ ServerRecvStateStartHand::Process(ServerRecvThread &server) // Initialize hand. Game &curGame = server.GetGame(); curGame.initHand(); + PlayerInterface **playerArray = curGame.getPlayerArray(); // Send cards to all players. @@ -417,7 +418,11 @@ ServerRecvStateStartRound::Process(ServerRecvThread &server) // If round changes, deal cards if needed. if (newRound != curRound) + { + // HACK: Skip GUI notification run + GameRun(curGame, newRound); SendNewRoundCards(server, curGame); + } } while (newRound != curRound); // Retrieve current player. @@ -505,9 +510,9 @@ ServerRecvStateStartRound::SendNewRoundCards(ServerRecvThread &server, Game &cur curGame.getCurrentHand()->getBoard()->getMyCards(cards); boost::shared_ptr notifyCards(new NetPacketDealFlopCards); NetPacketDealFlopCards::Data notifyCardsData; - notifyCardsData.flopCards[0] = static_cast(cards[0]); - notifyCardsData.flopCards[1] = static_cast(cards[1]); - notifyCardsData.flopCards[2] = static_cast(cards[2]); + notifyCardsData.flopCards[0] = static_cast(cards[0]); + notifyCardsData.flopCards[1] = static_cast(cards[1]); + notifyCardsData.flopCards[2] = static_cast(cards[2]); static_cast(notifyCards.get())->SetData(notifyCardsData); server.SendToAllPlayers(notifyCards); } break; @@ -517,7 +522,7 @@ ServerRecvStateStartRound::SendNewRoundCards(ServerRecvThread &server, Game &cur curGame.getCurrentHand()->getBoard()->getMyCards(cards); boost::shared_ptr notifyCards(new NetPacketDealTurnCard); NetPacketDealTurnCard::Data notifyCardsData; - notifyCardsData.turnCard = static_cast(cards[3]); + notifyCardsData.turnCard = static_cast(cards[3]); static_cast(notifyCards.get())->SetData(notifyCardsData); server.SendToAllPlayers(notifyCards); } break; @@ -527,7 +532,7 @@ ServerRecvStateStartRound::SendNewRoundCards(ServerRecvThread &server, Game &cur curGame.getCurrentHand()->getBoard()->getMyCards(cards); boost::shared_ptr notifyCards(new NetPacketDealRiverCard); NetPacketDealRiverCard::Data notifyCardsData; - notifyCardsData.riverCard = static_cast(cards[4]); + notifyCardsData.riverCard = static_cast(cards[4]); static_cast(notifyCards.get())->SetData(notifyCardsData); server.SendToAllPlayers(notifyCards); } break;