From 63b278a88e385d936cdd67c51e1f295209e3aace Mon Sep 17 00:00:00 2001 From: doitux Date: Sun, 20 May 2007 13:03:43 +0000 Subject: [PATCH] invisible check in heads up bugfix --- src/engine/local_engine/localflop.cpp | 15 ++++++++++----- src/engine/local_engine/localflop.h | 1 + src/engine/local_engine/localriver.cpp | 13 +++++++++---- src/engine/local_engine/localriver.h | 1 + src/engine/local_engine/localturn.cpp | 13 +++++++++---- src/engine/local_engine/localturn.h | 1 + src/pokerth.cpp | 4 +++- 7 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/engine/local_engine/localflop.cpp b/src/engine/local_engine/localflop.cpp index b394bd32..2f7af482 100755 --- a/src/engine/local_engine/localflop.cpp +++ b/src/engine/local_engine/localflop.cpp @@ -23,7 +23,7 @@ //using namespace std; -LocalFlop::LocalFlop(HandInterface* bR, int id, int qP, int dP, int sB) : FlopInterface(), myHand(bR), myID(id), actualQuantityPlayers(qP), dealerPosition(dP), smallBlindPosition(0), smallBlind(sB), highestSet(0), firstFlopRun(1), firstFlopRound(1), playersTurn(dP) +LocalFlop::LocalFlop(HandInterface* bR, int id, int qP, int dP, int sB) : FlopInterface(), myHand(bR), myID(id), actualQuantityPlayers(qP), dealerPosition(dP), smallBlindPosition(0), smallBlind(sB), highestSet(0), firstFlopRun(1), firstFlopRound(1), firstHeadsUpFlopRound(1), playersTurn(dP) { int i; @@ -93,10 +93,14 @@ void LocalFlop::flopRun() { myHand->setBettingRoundsPlayed(1); } - - // naechsten Spieler ermitteln - do { playersTurn = (playersTurn+1)%(MAX_NUMBER_OF_PLAYERS); - } while(!(myHand->getPlayerArray()[playersTurn]->getMyActiveStatus()) || (myHand->getPlayerArray()[playersTurn]->getMyAction())==1 || (myHand->getPlayerArray()[playersTurn]->getMyAction())==6); + if( !(myHand->getActualQuantityPlayers() < 3 && firstHeadsUpFlopRound == 1) ) { +// not first round in heads up (for headsup dealer is smallblind so it is dealers turn) + + // naechsten Spieler ermitteln + do { playersTurn = (playersTurn+1)%(MAX_NUMBER_OF_PLAYERS); + } while(!(myHand->getPlayerArray()[playersTurn]->getMyActiveStatus()) || (myHand->getPlayerArray()[playersTurn]->getMyAction())==1 || (myHand->getPlayerArray()[playersTurn]->getMyAction())==6); + } + else { firstHeadsUpFlopRound = 0; } //Spieler-Position vor SmallBlind-Position ermitteln int activePlayerBeforeSmallBlind = smallBlindPosition; @@ -108,6 +112,7 @@ void LocalFlop::flopRun() { // cout << "activePlayerBeforeSmallBlind " << activePlayerBeforeSmallBlind << endl; // cout << "playersTurn " << playersTurn << endl; + // wenn wir letzter aktiver Spieler vor SmallBlind sind, dann flopFirstRound zuende if(myHand->getPlayerArray()[playersTurn]->getMyID() == activePlayerBeforeSmallBlind) { firstFlopRound = 0; } diff --git a/src/engine/local_engine/localflop.h b/src/engine/local_engine/localflop.h index 8d771817..6ba1168b 100755 --- a/src/engine/local_engine/localflop.h +++ b/src/engine/local_engine/localflop.h @@ -63,6 +63,7 @@ private: bool firstFlopRun; bool firstFlopRound; + bool firstHeadsUpFlopRound; int playersTurn; }; diff --git a/src/engine/local_engine/localriver.cpp b/src/engine/local_engine/localriver.cpp index e11546c6..90bf9f6b 100755 --- a/src/engine/local_engine/localriver.cpp +++ b/src/engine/local_engine/localriver.cpp @@ -25,7 +25,7 @@ using namespace std; -LocalRiver::LocalRiver(HandInterface* bR, int id, int qP, int dP, int sB) : RiverInterface(), myHand(bR), myID(id), actualQuantityPlayers(qP), dealerPosition(dP), smallBlindPosition(0), smallBlind(sB), highestSet(0), firstRiverRun(1), firstRiverRound(1), playersTurn(dP), highestCardsValue(0) +LocalRiver::LocalRiver(HandInterface* bR, int id, int qP, int dP, int sB) : RiverInterface(), myHand(bR), myID(id), actualQuantityPlayers(qP), dealerPosition(dP), smallBlindPosition(0), smallBlind(sB), highestSet(0), firstRiverRun(1), firstRiverRound(1), firstHeadsUpRiverRound(1), playersTurn(dP), highestCardsValue(0) { int i; @@ -95,9 +95,14 @@ void LocalRiver::riverRun() { myHand->setBettingRoundsPlayed(3); } - // nᅵhsten Spieler ermitteln - do { playersTurn = (playersTurn+1)%(MAX_NUMBER_OF_PLAYERS); - } while(!(myHand->getPlayerArray()[playersTurn]->getMyActiveStatus()) || (myHand->getPlayerArray()[playersTurn]->getMyAction())==1 || (myHand->getPlayerArray()[playersTurn]->getMyAction())==6); + if( !(myHand->getActualQuantityPlayers() < 3 && firstHeadsUpRiverRound == 1) ) { +// not first round in heads up (for headsup dealer is smallblind so it is dealers turn) + + // naechsten Spieler ermitteln + do { playersTurn = (playersTurn+1)%(MAX_NUMBER_OF_PLAYERS); + } while(!(myHand->getPlayerArray()[playersTurn]->getMyActiveStatus()) || (myHand->getPlayerArray()[playersTurn]->getMyAction())==1 || (myHand->getPlayerArray()[playersTurn]->getMyAction())==6); + } + else { firstHeadsUpRiverRound = 0; } //Spieler-Position vor SmallBlind-Position ermitteln int activePlayerBeforeSmallBlind = smallBlindPosition; diff --git a/src/engine/local_engine/localriver.h b/src/engine/local_engine/localriver.h index 9c1807c1..d76d11e1 100755 --- a/src/engine/local_engine/localriver.h +++ b/src/engine/local_engine/localriver.h @@ -67,6 +67,7 @@ private: bool firstRiverRun; bool firstRiverRound; + bool firstHeadsUpRiverRound; int playersTurn; int highestCardsValue; diff --git a/src/engine/local_engine/localturn.cpp b/src/engine/local_engine/localturn.cpp index 4e925bdd..0a898d56 100755 --- a/src/engine/local_engine/localturn.cpp +++ b/src/engine/local_engine/localturn.cpp @@ -24,7 +24,7 @@ //using namespace std; -LocalTurn::LocalTurn(HandInterface* bR, int id, int qP, int dP, int sB) : TurnInterface(), myHand(bR), myID(id), actualQuantityPlayers(qP), dealerPosition(dP), smallBlindPosition(0), smallBlind(sB), highestSet(0), firstTurnRun(1), firstTurnRound(1), playersTurn(dP) +LocalTurn::LocalTurn(HandInterface* bR, int id, int qP, int dP, int sB) : TurnInterface(), myHand(bR), myID(id), actualQuantityPlayers(qP), dealerPosition(dP), smallBlindPosition(0), smallBlind(sB), highestSet(0), firstTurnRun(1), firstTurnRound(1), firstHeadsUpTurnRound(1), playersTurn(dP) { int i; @@ -95,9 +95,14 @@ void LocalTurn::turnRun() { myHand->setBettingRoundsPlayed(2); } - // n�hsten Spieler ermitteln - do { playersTurn = (playersTurn+1)%(MAX_NUMBER_OF_PLAYERS); - } while(!(myHand->getPlayerArray()[playersTurn]->getMyActiveStatus()) || (myHand->getPlayerArray()[playersTurn]->getMyAction())==1 || (myHand->getPlayerArray()[playersTurn]->getMyAction())==6); + if( !(myHand->getActualQuantityPlayers() < 3 && firstHeadsUpTurnRound == 1) ) { +// not first round in heads up (for headsup dealer is smallblind so it is dealers turn) + + // naechsten Spieler ermitteln + do { playersTurn = (playersTurn+1)%(MAX_NUMBER_OF_PLAYERS); + } while(!(myHand->getPlayerArray()[playersTurn]->getMyActiveStatus()) || (myHand->getPlayerArray()[playersTurn]->getMyAction())==1 || (myHand->getPlayerArray()[playersTurn]->getMyAction())==6); + } + else { firstHeadsUpTurnRound = 0; } //Spieler-Position vor SmallBlind-Position ermitteln int activePlayerBeforeSmallBlind = smallBlindPosition; diff --git a/src/engine/local_engine/localturn.h b/src/engine/local_engine/localturn.h index 853fa0cc..9f6fdc56 100755 --- a/src/engine/local_engine/localturn.h +++ b/src/engine/local_engine/localturn.h @@ -61,6 +61,7 @@ private: bool firstTurnRun; bool firstTurnRound; + bool firstHeadsUpTurnRound; int playersTurn; }; diff --git a/src/pokerth.cpp b/src/pokerth.cpp index 8c3fed64..ace3c803 100755 --- a/src/pokerth.cpp +++ b/src/pokerth.cpp @@ -87,9 +87,11 @@ int main( int argc, char **argv ) QTranslator translator; translator.load(QString(":/translations/resources/translations/pokerth_") + locale); a.installTranslator(&translator); - /////////////////////////////////////////////////// + qRegisterMetaType >("boost::shared_ptr"); + /////////////////////////////////////////////////// + boost::shared_ptr myGuiInterface(new GuiWrapper(myConfig)); {