diff --git a/src/engine/boardinterface.h b/src/engine/boardinterface.h
index 813d2ef5..79c8989f 100644
--- a/src/engine/boardinterface.h
+++ b/src/engine/boardinterface.h
@@ -53,6 +53,8 @@ public:
virtual void distributePot() =0;
+ virtual std::list getWinners() const =0;
+
};
diff --git a/src/engine/local_engine/localboard.cpp b/src/engine/local_engine/localboard.cpp
index 2deffece..de72f55b 100755
--- a/src/engine/local_engine/localboard.cpp
+++ b/src/engine/local_engine/localboard.cpp
@@ -73,6 +73,8 @@ void LocalBoard::collectPot() {
void LocalBoard::distributePot() {
+ winners.clear();
+
size_t i,j,k,l;
PlayerListIterator it;
PlayerListConstIterator it_c;
@@ -177,11 +179,14 @@ void LocalBoard::distributePot() {
throw LocalException(ERR_SEAT_NOT_FOUND);
}
(*it)->setMyCash( (*it)->getMyCash() + ((potLevel[1])/winnerCount));
+
+ // filling winners vector
+ winners.push_back((*it)->getMyID());
}
}
// pot level sum not divisible by winnerCount
- // --> distribution after smallBlind (perhaps lastActionPlayer? - TODO)
+ // --> distribution after smallBlind
else {
winnerPointer = currentHand->getDealerPosition();
@@ -215,8 +220,12 @@ void LocalBoard::distributePot() {
}
if(jsetMyCash( (*it)->getMyCash() + (int)((potLevel[1])/winnerCount) + 1);
+ // filling winners vector
+ winners.push_back((*it)->getMyID());
} else {
(*it)->setMyCash( (*it)->getMyCash() + (int)((potLevel[1])/winnerCount));
+ // filling winners vector
+ winners.push_back((*it)->getMyID());
}
}
}
@@ -241,6 +250,11 @@ void LocalBoard::distributePot() {
}
}
+ // winners sort and unique
+ winners.sort();
+ winners.unique();
+
+
// ERROR-Outputs
if(pot!=0) cout << "distributePot-ERROR: Pot = " << pot << endl;
diff --git a/src/engine/local_engine/localboard.h b/src/engine/local_engine/localboard.h
index 93c1ef7f..e0f462c0 100755
--- a/src/engine/local_engine/localboard.h
+++ b/src/engine/local_engine/localboard.h
@@ -50,6 +50,8 @@ public:
void collectPot() ;
void distributePot();
+
+ std::list getWinners() const { return winners; }
private:
@@ -60,6 +62,8 @@ private:
HandInterface *currentHand;
+ std::list winners;
+
int myCards[5];
int pot;
int sets;
diff --git a/src/engine/local_engine/localplayer.h b/src/engine/local_engine/localplayer.h
index b7637583..81574258 100755
--- a/src/engine/local_engine/localplayer.h
+++ b/src/engine/local_engine/localplayer.h
@@ -142,8 +142,8 @@ public:
bool getSBluffStatus() const { return sBluffStatus; }
void setMyWinnerState ( bool theValue, int pot ) {
- myWinnerState = theValue;
- if(theValue) actualHand->getGuiInterface()->logPlayerWinsMsg(myName, pot);
+ if(theValue) myWinnerState = theValue;
+ actualHand->getGuiInterface()->logPlayerWinsMsg(myName, pot, theValue);
}
bool getMyWinnerState() const { return myWinnerState;}
diff --git a/src/engine/network_engine/clientboard.cpp b/src/engine/network_engine/clientboard.cpp
index 809c57a1..aec19e00 100644
--- a/src/engine/network_engine/clientboard.cpp
+++ b/src/engine/network_engine/clientboard.cpp
@@ -119,4 +119,10 @@ ClientBoard::distributePot()
}
+std::list
+ClientBoard::getWinners() const
+{
+ return winners;
+}
+
diff --git a/src/engine/network_engine/clientboard.h b/src/engine/network_engine/clientboard.h
index e9166254..94a8cd43 100644
--- a/src/engine/network_engine/clientboard.h
+++ b/src/engine/network_engine/clientboard.h
@@ -50,6 +50,8 @@ public:
void distributePot();
+ std::list getWinners() const;
+
private:
mutable boost::recursive_mutex m_syncMutex;
@@ -60,6 +62,8 @@ private:
HandInterface *actualHand;
+ std::list winners;
+
int myCards[5];
int pot;
int sets;
diff --git a/src/engine/network_engine/clientplayer.cpp b/src/engine/network_engine/clientplayer.cpp
index 97839ac5..520e6025 100644
--- a/src/engine/network_engine/clientplayer.cpp
+++ b/src/engine/network_engine/clientplayer.cpp
@@ -378,9 +378,8 @@ void
ClientPlayer::setMyWinnerState(bool theValue, int pot)
{
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
- myWinnerState = theValue;
- if(theValue)
- actualHand->getGuiInterface()->logPlayerWinsMsg(myName, pot);
+ if(theValue) myWinnerState = theValue;
+ actualHand->getGuiInterface()->logPlayerWinsMsg(myName, pot, theValue);
}
bool
diff --git a/src/gui/generic/serverguiwrapper.cpp b/src/gui/generic/serverguiwrapper.cpp
index 31e59d1f..958d9fce 100644
--- a/src/gui/generic/serverguiwrapper.cpp
+++ b/src/gui/generic/serverguiwrapper.cpp
@@ -100,7 +100,8 @@ void ServerGuiWrapper::stopTimeoutAnimation(int /*playerId*/) {}
void ServerGuiWrapper::logPlayerActionMsg(string /*playerName*/, int /*action*/, int /*setValue*/) {}
void ServerGuiWrapper::logNewGameHandMsg(int /*gameID*/, int /*handID*/) {}
-void ServerGuiWrapper::logPlayerWinsMsg(std::string /*playerName*/, int /*pot*/) {}
+void ServerGuiWrapper::logPlayerWinsMsg(std::string /*playerName*/, int /*pot*/, bool /*main*/) {}
+void ServerGuiWrapper::logPlayerSitsOut(std::string /*playerName*/) {}
void ServerGuiWrapper::logNewBlindsSetsMsg(int /*sbSet*/, int /*bbSet*/, std::string /*sbName*/, std::string /*bbName*/) {}
void ServerGuiWrapper::logDealBoardCardsMsg(int /*roundID*/, int /*card1*/, int /*card2*/, int /*card3*/, int /*card4*/, int /*card5*/) {}
diff --git a/src/gui/generic/serverguiwrapper.h b/src/gui/generic/serverguiwrapper.h
index 315d8f43..c408d49b 100644
--- a/src/gui/generic/serverguiwrapper.h
+++ b/src/gui/generic/serverguiwrapper.h
@@ -84,7 +84,8 @@ public:
void logPlayerActionMsg(std::string playerName, int action, int setValue) ;
void logNewGameHandMsg(int gameID, int handID) ;
- void logPlayerWinsMsg(std::string playerName, int pot);
+ void logPlayerWinsMsg(std::string playerName, int pot, bool main);
+ void logPlayerSitsOut(std::string playerName);
void logNewBlindsSetsMsg(int sbSet, int bbSet, std::string sbName, std::string bbName);
void logDealBoardCardsMsg(int roundID, int card1, int card2, int card3, int card4 = -1, int card5 = -1) ;
void logFlipHoleCardsMsg(std::string playerName, int card1, int card2, int cardsValueInt = -1, std::string showHas = "shows") ;
diff --git a/src/gui/guiinterface.h b/src/gui/guiinterface.h
index 2245b9f9..b6d68da5 100644
--- a/src/gui/guiinterface.h
+++ b/src/gui/guiinterface.h
@@ -95,7 +95,8 @@ public:
//log.cpp
virtual void logPlayerActionMsg(std::string playName, int action, int setValue) =0;
virtual void logNewGameHandMsg(int gameID, int HandID) =0;
- virtual void logPlayerWinsMsg(std::string playerName, int pot) = 0;
+ virtual void logPlayerWinsMsg(std::string playerName, int pot, bool main) = 0;
+ virtual void logPlayerSitsOut(std::string playerName) = 0;
virtual void logNewBlindsSetsMsg(int sbSet, int bbSet, std::string sbName, std::string bbName) =0;
virtual void logDealBoardCardsMsg(int roundID, int card1, int card2, int card3, int card4 = -1, int card5 = -1) = 0;
virtual void logFlipHoleCardsMsg(std::string playerName, int card1, int card2, int cardsValueInt = -1, std::string showHas = "shows") = 0;
diff --git a/src/gui/qt/guiwrapper.cpp b/src/gui/qt/guiwrapper.cpp
index 3a56f1ad..3146809c 100644
--- a/src/gui/qt/guiwrapper.cpp
+++ b/src/gui/qt/guiwrapper.cpp
@@ -102,7 +102,8 @@ void GuiWrapper::stopTimeoutAnimation(int playerId) { myW->signalStopTimeoutAnim
void GuiWrapper::logPlayerActionMsg(string playerName, int action, int setValue) { myLog->signalLogPlayerActionMsg(QString::fromUtf8(playerName.c_str()), action, setValue); }
void GuiWrapper::logNewGameHandMsg(int gameID, int handID) { myLog->signalLogNewGameHandMsg(gameID, handID); }
void GuiWrapper::logNewBlindsSetsMsg(int sbSet, int bbSet, std::string sbName, std::string bbName) { myLog->signalLogNewBlindsSetsMsg(sbSet, bbSet, QString::fromUtf8(sbName.c_str()), QString::fromUtf8(bbName.c_str())); }
-void GuiWrapper::logPlayerWinsMsg(std::string playerName, int pot) { myLog->signalLogPlayerWinsMsg(QString::fromUtf8(playerName.c_str()), pot); }
+void GuiWrapper::logPlayerWinsMsg(std::string playerName, int pot, bool main) { myLog->signalLogPlayerWinsMsg(QString::fromUtf8(playerName.c_str()), pot, main); }
+void GuiWrapper::logPlayerSitsOut(std::string playerName) { myLog->signalLogPlayerSitsOut(QString::fromUtf8(playerName.c_str())); }
void GuiWrapper::logDealBoardCardsMsg(int roundID, int card1, int card2, int card3, int card4, int card5) { myLog->signalLogDealBoardCardsMsg(roundID, card1, card2, card3, card4, card5); }
void GuiWrapper::logFlipHoleCardsMsg(string playerName, int card1, int card2, int cardsValueInt, string showHas) { myLog->signalLogFlipHoleCardsMsg(QString::fromUtf8(playerName.c_str()), card1, card2, cardsValueInt, QString::fromUtf8(showHas.c_str())); }
void GuiWrapper::logPlayerWinGame(std::string playerName, int gameID) { myLog->signalLogPlayerWinGame(QString::fromUtf8(playerName.c_str()), gameID); }
diff --git a/src/gui/qt/guiwrapper.h b/src/gui/qt/guiwrapper.h
index ee17b80b..edd4e078 100644
--- a/src/gui/qt/guiwrapper.h
+++ b/src/gui/qt/guiwrapper.h
@@ -92,7 +92,8 @@ public:
void logPlayerActionMsg(std::string playerName, int action, int setValue) ;
void logNewGameHandMsg(int gameID, int handID) ;
void logNewBlindsSetsMsg(int sbSet, int bbSet, std::string sbName, std::string bbName);
- void logPlayerWinsMsg(std::string playerName, int pot);
+ void logPlayerWinsMsg(std::string playerName, int pot, bool main);
+ void logPlayerSitsOut(std::string playerName);
void logDealBoardCardsMsg(int roundID, int card1, int card2, int card3, int card4 = -1, int card5 = -1);
void logFlipHoleCardsMsg(std::string playerName, int card1, int card2, int cardsValueInt = -1, std::string showHas = "shows");
void logPlayerWinGame(std::string playerName, int gameID);
diff --git a/src/gui/qt/mainwindow/log/log.cpp b/src/gui/qt/mainwindow/log/log.cpp
index 777a7c3a..580b3586 100644
--- a/src/gui/qt/mainwindow/log/log.cpp
+++ b/src/gui/qt/mainwindow/log/log.cpp
@@ -36,7 +36,8 @@ Log::Log(mainWindowImpl* w, ConfigFile *c) : myW(w), myConfig(c), myLogDir(0), m
connect(this, SIGNAL(signalLogPlayerActionMsg(QString, int, int)), this, SLOT(logPlayerActionMsg(QString, int, int)));
connect(this, SIGNAL(signalLogNewGameHandMsg(int, int)), this, SLOT(logNewGameHandMsg(int, int)));
connect(this, SIGNAL(signalLogNewBlindsSetsMsg(int, int, QString, QString)), this, SLOT(logNewBlindsSetsMsg(int, int, QString, QString)));
- connect(this, SIGNAL(signalLogPlayerWinsMsg(QString, int)), this, SLOT(logPlayerWinsMsg(QString, int)));
+ connect(this, SIGNAL(signalLogPlayerWinsMsg(QString, int, bool)), this, SLOT(logPlayerWinsMsg(QString, int, bool)));
+ connect(this, SIGNAL(signalLogPlayerSitsOut(QString)), this, SLOT(logPlayerSitsOut(QString)));
connect(this, SIGNAL(signalLogDealBoardCardsMsg(int, int, int, int, int, int)), this, SLOT(logDealBoardCardsMsg(int, int, int, int, int, int)));
connect(this, SIGNAL(signalLogFlipHoleCardsMsg(QString, int, int, int, QString)), this, SLOT(logFlipHoleCardsMsg(QString, int, int, int, QString)));
connect(this, SIGNAL(signalLogPlayerLeftMsg(QString)), this, SLOT(logPlayerLeftMsg(QString)));
@@ -66,7 +67,7 @@ Log::Log(mainWindowImpl* w, ConfigFile *c) : myW(w), myConfig(c), myLogDir(0), m
stream << "\n";
stream << "";
stream << "\n";
- stream << "\n";
+ stream << "\n";
stream << "
\n";
stream << "Log-File for PokerTH 0.6 Session started on "+QDate::currentDate().toString("yyyy-MM-dd")+" at "+QTime::currentTime().toString("hh:mm:ss")+"
\n";
// stream << "\n";
@@ -125,7 +126,7 @@ void Log::logPlayerActionMsg(QString msg, int action, int setValue) {
break;
case 4: msg += " bets ";
break;
- case 5: msg += " sets ";
+ case 5: msg += " bets ";
break;
case 6: msg += " is all in with ";
break;
@@ -341,9 +342,9 @@ void Log::logNewGameHandMsg(int gameID, int handID) {
if(myConfig->readConfigInt("LogOnOff")) {
//if write logfiles is enabled
-
+
logFileStreamString += " Game: "+QString::number(gameID,10)+" | Hand: "+QString::number(handID,10)+" | |
";
- logFileStreamString += "BLIND LEVEL: "+QString::number(currentHand->getSmallBlind())+"$/"+QString::number(currentHand->getSmallBlind()*2)+"$";
+ logFileStreamString += "BLIND LEVEL: "+QString::number(currentHand->getSmallBlind())+"$/"+QString::number(currentHand->getSmallBlind()*2)+"$";
//print cash only for active players
for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) {
@@ -438,7 +439,7 @@ void Log::logNewBlindsSetsMsg(int sbSet, int bbSet, QString sbName, QString bbNa
logFileStreamString += "\n";
}
-void Log::logPlayerWinsMsg(QString playerName, int pot) {
+void Log::logPlayerWinsMsg(QString playerName, int pot, bool main) {
// HandInterface *currentHand = myW->getSession().getCurrentGame()->getCurrentHand();
@@ -446,7 +447,11 @@ void Log::logPlayerWinsMsg(QString playerName, int pot) {
// PlayerListConstIterator playerConstIt = currentHand->getActivePlayerIt(playerID);
// assert( playerConstIt != currentHand->getActivePlayerList()->end() );
- myW->textBrowser_Log->append(""+playerName+" wins "+QString::number(pot,10)+"$!
");
+ if(main) {
+ myW->textBrowser_Log->append(""+playerName+" wins "+QString::number(pot,10)+"$");
+ } else {
+ myW->textBrowser_Log->append(""+playerName+" wins "+QString::number(pot,10)+"$ (side pot)");
+ }
if(myConfig->readConfigInt("LogOnOff")) {
//if write logfiles is enabled
@@ -460,7 +465,12 @@ void Log::logPlayerWinsMsg(QString playerName, int pot) {
// logFileStreamString += ""+QString::fromUtf8(currentHand->getPlayerArray()[playerID]->getMyName().c_str())+" wins "+QString::number(pot,10)+"$!!!
\n";
- logFileStreamString += ""+playerName+" wins "+QString::number(pot,10)+"$!!!
\n";
+ logFileStreamString += ""+playerName+" wins "+QString::number(pot,10)+"$";
+ if(!main) {
+ logFileStreamString += " (side pot)";
+ }
+ logFileStreamString += "\n";
+
if(myConfig->readConfigInt("LogInterval") == 0) {
writeLogFileStream(logFileStreamString);
@@ -469,6 +479,24 @@ void Log::logPlayerWinsMsg(QString playerName, int pot) {
}
}
+
+void Log::logPlayerSitsOut(QString playerName) {
+
+ myW->textBrowser_Log->append(""+playerName+" sits out");
+
+ if(myConfig->readConfigInt("LogOnOff")) {
+
+ logFileStreamString += ""+playerName+" sits out\n";
+
+
+ if(myConfig->readConfigInt("LogInterval") == 0) {
+ writeLogFileStream(logFileStreamString);
+ logFileStreamString = "";
+ }
+ }
+}
+
+
void Log::logDealBoardCardsMsg(int roundID, int card1, int card2, int card3, int card4, int card5) {
QString round;
diff --git a/src/gui/qt/mainwindow/log/log.h b/src/gui/qt/mainwindow/log/log.h
index a0616d66..0f2b0a9b 100644
--- a/src/gui/qt/mainwindow/log/log.h
+++ b/src/gui/qt/mainwindow/log/log.h
@@ -43,7 +43,8 @@ public slots:
void logPlayerActionMsg(QString playerName, int action, int setValue);
void logNewGameHandMsg(int gameID, int handID);
void logNewBlindsSetsMsg(int sbSet, int bbSet, QString sbName, QString bbName);
- void logPlayerWinsMsg(QString playerName, int pot);
+ void logPlayerWinsMsg(QString playerName, int pot, bool main);
+ void logPlayerSitsOut(QString playerName);
void logDealBoardCardsMsg(int roundID, int card1, int card2, int card3, int card4 = -1, int card5 = -1);
void logFlipHoleCardsMsg(QString playerName, int card1, int card2, int cardsValueInt = -1, QString showHas = "shows");
void logPlayerLeftMsg(QString playerName);
@@ -63,7 +64,8 @@ signals:
void signalLogPlayerActionMsg(QString playerName, int action, int setValue);
void signalLogNewGameHandMsg(int gameID, int handID);
void signalLogNewBlindsSetsMsg(int sbSet, int bbSet, QString sbName, QString bbName);
- void signalLogPlayerWinsMsg(QString playerName, int pot);
+ void signalLogPlayerWinsMsg(QString playerName, int pot, bool main);
+ void signalLogPlayerSitsOut(QString playerName);
void signalLogDealBoardCardsMsg(int roundID, int card1, int card2, int card3, int card4 = -1, int card5 = -1);
void signalLogFlipHoleCardsMsg(QString playerName, int card1, int card2, int cardsValueInt = -1, QString showHas = "shows");
void signalLogPlayerLeftMsg(QString playerName);
diff --git a/src/gui/qt/mainwindow/mainwindowimpl.cpp b/src/gui/qt/mainwindow/mainwindowimpl.cpp
index 6ec9d87b..c7c7ba86 100755
--- a/src/gui/qt/mainwindow/mainwindowimpl.cpp
+++ b/src/gui/qt/mainwindow/mainwindowimpl.cpp
@@ -2887,6 +2887,8 @@ void mainWindowImpl::postRiverRunAnimation3() {
}
+ list winners = currentHand->getBoard()->getWinners();
+
for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) {
if((*it_c)->getMyAction() != PLAYER_ACTION_FOLD && (*it_c)->getMyCardsValueInt() == currentHand->getCurrentBeRo()->getHighestCardsValue() ) {
@@ -2955,7 +2957,7 @@ void mainWindowImpl::postRiverRunAnimation3() {
// if (textLabel_handLabel->text() == "River") {
//set Player value (logging)
- (*it_c)->setMyWinnerState(1, pot);
+ (*it_c)->setMyWinnerState(true, pot);
// }
// else {
@@ -2963,7 +2965,7 @@ void mainWindowImpl::postRiverRunAnimation3() {
// }
}
else {
-
+
if( currentHand->getActivePlayerList()->size() != 1 && (*it_c)->getMyAction() != PLAYER_ACTION_FOLD && myConfig->readConfigInt("ShowFadeOutCardsAnimation") ) {
//aufgedeckte Gegner auch ausblenden
@@ -2973,14 +2975,29 @@ void mainWindowImpl::postRiverRunAnimation3() {
}
}
+ // log side pot winners -> TODO
+ list::iterator it_int;
+ for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) {
+ if((*it_c)->getMyAction() != PLAYER_ACTION_FOLD && (*it_c)->getMyCardsValueInt() != currentHand->getCurrentBeRo()->getHighestCardsValue() ) {
+ for(it_int = winners.begin(); it_int != winners.end(); it_int++) {
+ if((*it_int) == (*it_c)->getMyID()) {
+ bool toIntBool = TRUE;
+ int pot = (*it_c)->getMyCash() - cashLabelArray[(*it_c)->getMyID()]->text().remove(" $").toInt(&toIntBool,10);
+ (*it_c)->setMyWinnerState(false, pot);
+ }
+ }
+ }
+ }
+ for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) {
+ if((*it_c)->getMyCash() == 0) {
+ currentHand->getGuiInterface()->logPlayerSitsOut((*it_c)->getMyName());
+ }
+ }
-
-
-
-
+ textBrowser_Log->append("");
postRiverRunAnimation3Timer->start(postRiverRunAnimationSpeed/2);
}