diff --git a/pokerth_game.pro b/pokerth_game.pro index b93f35f8..c5bd4e13 100644 --- a/pokerth_game.pro +++ b/pokerth_game.pro @@ -44,7 +44,7 @@ INCLUDEPATH += . \ src/gui/qt/qttools/qthelper \ src/gui/qt/gametable \ src/gui/qt/gametable/startsplash \ - src/gui/qt/gametable/log \ + src/gui/qt/gametable/log \ src/gui/qt/aboutpokerth \ src/gui/qt/createnetworkgamedialog \ src/gui/qt/createinternetgamedialog \ @@ -80,7 +80,7 @@ DEPENDPATH += . \ src/gui/qt/chattools \ src/gui/qt/gametable \ src/gui/qt/gametable/startsplash \ - src/gui/qt/gametable/log \ + src/gui/qt/gametable/log \ src/gui/qt/aboutpokerth \ src/gui/qt/connecttoserverdialog \ src/gui/qt/createinternetgamedialog \ @@ -161,7 +161,7 @@ HEADERS += src/game.h \ src/gui/qt/gametable/myrighttabwidget.h \ src/gui/qt/gametable/mylefttabwidget.h \ src/gui/qt/gametable/startsplash/startsplash.h \ - src/gui/qt/gametable/log/log.h \ + src/gui/qt/gametable/log/guilog.h \ src/gui/qt/guiwrapper.h \ src/gui/qt/aboutpokerth/aboutpokerthimpl.h \ src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.h \ @@ -233,7 +233,7 @@ SOURCES += src/pokerth.cpp \ src/gui/qt/gametable/myrighttabwidget.cpp \ src/gui/qt/gametable/mylefttabwidget.cpp \ src/gui/qt/gametable/startsplash/startsplash.cpp \ - src/gui/qt/gametable/log/log.cpp \ + src/gui/qt/gametable/log/guilog.cpp \ src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp \ src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.cpp \ src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.cpp \ diff --git a/src/gui/generic/serverguiwrapper.h b/src/gui/generic/serverguiwrapper.h index 0ff9b987..da033598 100644 --- a/src/gui/generic/serverguiwrapper.h +++ b/src/gui/generic/serverguiwrapper.h @@ -37,7 +37,7 @@ public: void setSession(boost::shared_ptr session); gameTableImpl* getMyW() const {return NULL;} - Log* getMyLog() const {return NULL;} + guiLog* getMyLog() const {return NULL;} void refreshSet() const; void refreshCash() const; diff --git a/src/gui/guiinterface.h b/src/gui/guiinterface.h index 1905e963..6944663f 100644 --- a/src/gui/guiinterface.h +++ b/src/gui/guiinterface.h @@ -27,7 +27,7 @@ #include #include -class Log; +class guiLog; class Session; class gameTableImpl; @@ -41,7 +41,7 @@ public: virtual void setSession(boost::shared_ptr session) =0; virtual gameTableImpl *getMyW() const=0; - virtual Log* getMyLog() const=0; + virtual guiLog* getMyLog() const=0; //refresh-Funktionen diff --git a/src/gui/qt/gametable/gametableimpl.h b/src/gui/qt/gametable/gametableimpl.h index 3bd0f997..3cb8c565 100755 --- a/src/gui/qt/gametable/gametableimpl.h +++ b/src/gui/qt/gametable/gametableimpl.h @@ -29,7 +29,7 @@ #include #include -class Log; +class guiLog; class ChatTools; class ConfigFile; class Session; @@ -67,7 +67,7 @@ public: bool getGuestMode() const { return guestMode; } void setStartWindow(startWindowImpl* s) { myStartWindow = s; } - void setLog(Log* l) { myLog = l; } + void setGuiLog(guiLog* l) { myGuiLog = l; } void setSpeeds(); @@ -314,7 +314,7 @@ public slots: private: boost::shared_ptr myServerGuiInterface; - Log *myLog; + guiLog *myGuiLog; ChatTools *myChat; ConfigFile *myConfig; diff --git a/src/gui/qt/gametable/log/guilog.cpp b/src/gui/qt/gametable/log/guilog.cpp new file mode 100644 index 00000000..f1a2d846 --- /dev/null +++ b/src/gui/qt/gametable/log/guilog.cpp @@ -0,0 +1,2091 @@ +/*************************************************************************** + * Copyright (C) 2006 by FThauer FHammer * + * f.thauer@web.de * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#include "guilog.h" + +#include "gametableimpl.h" +#include +#include +#include +#include +#include "gametablestylereader.h" + +using namespace std; + +guiLog::guiLog(gameTableImpl* w, ConfigFile *c) : myW(w), myConfig(c), myLogDir(0), myHtmlLogFile(0), mySqliteLogDb(0) +{ + + myW->setGuiLog(this); + myStyle = myW->getMyGameTableStyle(); + + myAppDataPath = QString::fromUtf8(myConfig->readConfigString("AppDataDir").c_str()); + + connect(this, SIGNAL(signalLogPlayerActionMsg(QString, int, int, int)), this, SLOT(logPlayerActionMsg(QString, int, 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, 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, int, QString)), this, SLOT(logFlipHoleCardsMsg(QString, int, int, int, int, QString))); + connect(this, SIGNAL(signalLogPlayerLeftMsg(QString, int)), this, SLOT(logPlayerLeftMsg(QString, int))); + connect(this, SIGNAL(signalLogNewGameAdminMsg(QString)), this, SLOT(logNewGameAdminMsg(QString))); + connect(this, SIGNAL(signalLogPlayerWinGame(QString, int)), this, SLOT(logPlayerWinGame(QString, int))); + connect(this, SIGNAL(signalFlushLogAtGame(int)), this, SLOT(flushLogAtGame(int))); + connect(this, SIGNAL(signalFlushLogAtHand()), this, SLOT(flushLogAtHand())); + + + logFileStreamString = ""; + lastGameID = 0; + + if(myConfig->readConfigInt("LogOnOff")) { + //if write logfiles is enabled + + QDir logDir(QString::fromUtf8(myConfig->readConfigString("LogDir").c_str())); + + if(myConfig->readConfigString("LogDir") != "" && logDir.exists()) { + + int i; + + if(HTML_LOG) { + + myLogDir = new QDir(QString::fromUtf8(myConfig->readConfigString("LogDir").c_str())); + QDateTime currentTime = QDateTime::currentDateTime(); + myHtmlLogFile = new QFile(myLogDir->absolutePath()+"/pokerth-log-"+currentTime.toString("yyyy-MM-dd_hh.mm.ss")+".html"); + + //Logo-Pixmap extrahieren + QPixmap logoChipPixmapFile(":/gfx/logoChip3D.png"); + logoChipPixmapFile.save(myLogDir->absolutePath()+"/logo.png"); + +// myW->textBrowser_Log->append(myHtmlLogFile->fileName()); + + // erstelle html-Datei + myHtmlLogFile->open( QIODevice::WriteOnly ); + QTextStream stream( myHtmlLogFile ); + stream << "\n"; + stream << "\n"; + stream << ""; + stream << "\n"; + stream << "\n"; + stream << "\n"; + stream << QString("

Log-File for PokerTH %1 Session started on ").arg(POKERTH_BETA_RELEASE_STRING)+QDate::currentDate().toString("yyyy-MM-dd")+" at "+QTime::currentTime().toString("hh:mm:ss")+"

\n"; + myHtmlLogFile->close(); + + } + + if(SQLITE_LOG) { + + string sql; + char *errmsg; + + // detect current time + char curDateTime[20]; + char curDate[11]; + char curTime[9]; + time_t now = time(NULL); + tm *z = localtime(&now); + strftime(curDateTime,20,"%Y-%m-%d_%H.%M.%S",z); + strftime(curDate,11,"%Y-%m-%d",z); + strftime(curTime,9,"%H:%M:%S",z); + + string mySqliteLogFileName = boost::lexical_cast(myConfig->readConfigString("LogDir").c_str()); + mySqliteLogFileName += "pokerth-log-" + boost::lexical_cast(curDateTime) + ".pdb"; + + // open sqlite-db + sqlite3_open(mySqliteLogFileName.data(), &mySqliteLogDb); + if( mySqliteLogDb != 0 ) { + + // create session table + sql = "CREATE TABLE Session ("; + sql += "PokerTH_Version TEXT NOT NULL"; + sql += ",Date TEXT NOT NULL"; + sql += ",Time TEXT NOT NULL"; + sql += ", PRIMARY KEY(Date,Time))"; + if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { + cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; + } + + sql = "INSERT INTO Session ("; + sql += "PokerTH_Version"; + sql += ",Date"; + sql += ",Time"; + sql += ") VALUES ("; + sql += "\"" + boost::lexical_cast(POKERTH_BETA_RELEASE_STRING) + "\","; + sql += "\"" + boost::lexical_cast(curDate) + "\","; + sql += "\"" + boost::lexical_cast(curTime) + "\")"; + if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { + cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; + } + + // create game table + sql = "CREATE TABLE Game ("; + sql += "GameID INTEGER NOT NULL PRIMARY KEY"; + sql += ",Startmoney INTEGER NOT NULL"; + sql += ",StartSb INTEGER NOT NULL"; + sql += ",DealerPos INTEGER NOT NULL"; + for(i=1; i<=MAX_NUMBER_OF_PLAYERS; i++) { + sql += ",Seat_" + boost::lexical_cast(i) + " TEXT"; + } + sql += ",Winner_Seat INTEGER"; + sql += ")"; + if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { + cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; + } + + // create hand table + sql = "CREATE TABLE Hand ("; + sql += "HandID INTEGER NOT NULL"; + sql += ",GameID INTEGER NOT NULL"; + sql += ",Dealer_Seat INTEGER"; + sql += ",Sb_Amount INTEGER NOT NULL"; + sql += ",Sb_Seat INTEGER NOT NULL"; + sql += ",Bb_Amount INTEGER NOT NULL"; + sql += ",Bb_Seat INTEGER NOT NULL"; + for(i=1; i<=MAX_NUMBER_OF_PLAYERS; i++) { + sql += ",Seat_" + boost::lexical_cast(i) + "_Cash INTEGER"; + sql += ",Seat_" + boost::lexical_cast(i) + "_Card_1 INTEGER"; + sql += ",Seat_" + boost::lexical_cast(i) + "_Card_2 INTEGER"; + sql += ",Seat_" + boost::lexical_cast(i) + "_Hand_text TEXT"; + sql += ",Seat_" + boost::lexical_cast(i) + "_Hand_int INTEGER"; + } + for(i=1; i<=5; i++) { + sql += ",BoardCard_" + boost::lexical_cast(i) + " INTEGER"; + } + sql += ",PRIMARY KEY(HandID,GameID))"; + if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { + cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; + } + + // create action table + sql = "CREATE TABLE Action ("; + sql += "ActionID INTEGER PRIMARY KEY AUTOINCREMENT"; + sql += ",HandID INTEGER NOT NULL"; + sql += ",GameID INTEGER NOT NULL"; + sql += ",BeRo INTEGER NOT NULL"; + sql += ",Player INTEGER NOT NULL"; + sql += ",Action TEXT NOT NULL"; + sql += ",Amount INTEGER"; + sql += ")"; + if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { + cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; + } + + + } + + + } + + // delete old log files + int daysUntilWaste = myConfig->readConfigInt("LogStoreDuration"); + + QStringList filters("pokerth-log*"); + QStringList logFileList = myLogDir->entryList(filters, QDir::Files); + + for(i=0; i daysUntilWaste) { + + // cout << QString::QString(myLogDir->absolutePath()+"/"+logFileList.at(i)).toStdString() << endl; + QFile fileToDelete(myLogDir->absolutePath()+"/"+logFileList.at(i)); + fileToDelete.remove(); + } + + } + + } else { + cout << "Log directory doesn't exist. Cannot create log files"; + } + } +} + +guiLog::~guiLog() +{ + delete myLogDir; + delete myHtmlLogFile; + if(SQLITE_LOG) { + sqlite3_close(mySqliteLogDb); +// delete mySqliteLogDb; + } + +} + +void guiLog::closeLogDbAtExit() +{ + if(SQLITE_LOG) { + // close sqlite-db + sqlite3_close(mySqliteLogDb); +// delete mySqliteLogDb; + mySqliteLogDb = NULL; + } + +} + +void guiLog::logPlayerActionMsg(QString msg, int playerID, int action, int setValue) { + + switch (action) { + + case 1: msg += " folds."; + break; + case 2: msg += " checks."; + break; + case 3: msg += " calls "; + break; + case 4: msg += " bets "; + break; + case 5: msg += " bets "; + break; + case 6: msg += " is all in with "; + break; + default: msg += "ERROR"; + } + + if (action >= 3) { msg += "$"+QString::number(setValue,10)+"."; } + + myW->textBrowser_Log->append("getChatLogTextColor()+";\">"+msg+""); + + if(myConfig->readConfigInt("LogOnOff")) { + //if write logfiles is enabled + + if(HTML_LOG) { + + logFileStreamString += msg+"
\n"; + + if(myConfig->readConfigInt("LogInterval") == 0) { + writeLogFileStream(logFileStreamString); + logFileStreamString = ""; + } + + } + + if(SQLITE_LOG) { + +// if(mySqliteLogDb->isOpen()) { + +// QSqlQuery query(*mySqliteLogDb); +// QString sql; + +// sql = "INSERT INTO Action (HandID,GameID,BeRo,Player,Action,Amount) VALUES ("; +// sql += QString::number(myW->getSession()->getCurrentGame()->getCurrentHandID(),10); +// sql += "," + QString::number(myW->getSession()->getCurrentGame()->getMyGameID(),10); +// sql += "," + QString::number(myW->getSession()->getCurrentGame()->getCurrentHand()->getCurrentBeRo()->getMyBeRoID(),10); +// sql += "," + QString::number(playerID,10); +// sql += "," + QString::number(action,10); +// sql += "," + QString::number(setValue,10); +// sql += ")"; + +// if(myConfig->readConfigInt("LogInterval") == 0) { +// if(!query.exec(sql)) { +// QMessageBox::critical(0, tr("ERROR"),query.lastError().text().toUtf8().data(), QMessageBox::Cancel); +// } +// } + + +// } else { +// QMessageBox::critical(0, tr("ERROR"),mySqliteLogDb->lastError().text().toUtf8().data(), QMessageBox::Cancel); +// } + + } + + } +} + +void guiLog::logNewGameHandMsg(int gameID, int handID) { + + PlayerListConstIterator it_c; + HandInterface *currentHand = myW->getSession()->getCurrentGame()->getCurrentHand(); + + myW->textBrowser_Log->append("getChatLogTextColor()+"; font-size:large; font-weight:bold\">## Game: "+QString::number(gameID,10)+" | Hand: "+QString::number(handID,10)+" ##"); + + if(myConfig->readConfigInt("LogOnOff")) { + //if write logfiles is enabled + + if(HTML_LOG) { + + logFileStreamString += "

Game: "+QString::number(gameID,10)+" | Hand: "+QString::number(handID,10)+"
"; + 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++) { + + logFileStreamString += "Seat " + QString::number((*it_c)->getMyID()+1,10) + ": " + QString::fromUtf8((*it_c)->getMyName().c_str()) + " ($" + QString::number((*it_c)->getMyCash()+(*it_c)->getMySet(),10)+")
"; + + } + + } + + if(SQLITE_LOG) { + + string sql; + int i; + char *errmsg; + + if( mySqliteLogDb != 0 ) { + + if(handID == 1) { + // start of a game -> insert game data + + sql = "INSERT INTO Game ("; + sql += "GameID"; + sql += ",Startmoney"; + sql += ",StartSb"; + sql += ",DealerPos"; + for(i=1; i<=MAX_NUMBER_OF_PLAYERS; i++) { + sql += ",Seat_" + boost::lexical_cast(i); + } + sql += ") VALUES ("; + sql += boost::lexical_cast(gameID); + sql += "," + boost::lexical_cast(myW->getSession()->getCurrentGame()->getStartCash()); + sql += "," + boost::lexical_cast(myW->getSession()->getCurrentGame()->getStartSmallBlind()); + sql += "," + boost::lexical_cast(myW->getSession()->getCurrentGame()->getDealerPosition()); + for(it_c = currentHand->getSeatsList()->begin();it_c!=currentHand->getSeatsList()->end();it_c++) { + if((*it_c)->getMyActiveStatus()) { + sql += ",\"" + (*it_c)->getMyName() +"\""; + } else { + sql += ",NULL"; + } + } + sql += ")"; + if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { + cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; + } + + } + + // insert hand data + sql = "INSERT INTO Hand ("; + sql += "HandID"; + sql += ",GameID"; + sql += ",Dealer_Seat"; + sql += ",Sb_Amount"; + sql += ",Sb_Seat"; + sql += ",Bb_Amount"; + sql += ",Bb_Seat"; + sql += ") VALUES ("; + +// // hand data +// sql = "INSERT INTO Hand (HandID,GameID,Sb_Amount,Bb_Amount"; +// for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) { +// sql += ",Seat_" + QString::number((*it_c)->getMyID()+1,10) + "_Cash"; +// } +//// for(i=1;i<=MAX_NUMBER_OF_PLAYERS; i++) { +//// sql += ",Seat_" + QString("%1").arg(i) + "_Cash"; +//// } +// sql += ") VALUES ("; +// sql += QString::number(handID,10); +// sql += "," + QString::number(gameID,10); +// sql += "," + QString::number(currentHand->getSmallBlind(),10); +// sql += "," + QString::number(currentHand->getSmallBlind()*2,10); +// for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) { +// sql += "," + QString::number((*it_c)->getMyCash()+(*it_c)->getMySet(),10); +// } +//// for(it_c = currentHand->getSeatsList()->begin();it_c!=currentHand->getSeatsList()->end();it_c++) { +//// if((*it_c)->getMyActiveStatus()) { +//// sql += "," + QString::number((*it_c)->getMyCash()+(*it_c)->getMySet(),10); +//// } else { +//// sql += ",NULL"; +//// } +//// } +// sql += ")"; + + } + + +// if(mySqliteLogDb->isOpen()) { + +// QSqlQuery query(*mySqliteLogDb); +// QString sql; + +// // beginning of a game +// if(handID == 1) { +// sql = "INSERT INTO Game (GameID,Startmoney,StartSb,DealerPos"; +// for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) { +// sql += ",Seat_" + QString::number((*it_c)->getMyID()+1,10); +// } +//// for(i=1;i<=MAX_NUMBER_OF_PLAYERS; i++) { +//// sql += ",Seat_" + QString::number(i,10); +//// } +// sql += ") VALUES ("; +// sql += QString::number(gameID,10) + ","; +// sql += QString::number(myW->getSession()->getCurrentGame()->getStartCash(),10) + ","; +// sql += QString::number(myW->getSession()->getCurrentGame()->getStartSmallBlind(),10) + ","; +// sql += QString::number(myW->getSession()->getCurrentGame()->getDealerPosition(),10); +// for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) { +// sql += ",'" + QString::fromUtf8((*it_c)->getMyName().c_str()) +"'"; +// } +//// for(it_c = currentHand->getSeatsList()->begin();it_c!=currentHand->getSeatsList()->end();it_c++) { +//// if((*it_c)->getMyActiveStatus()) { +//// sql += ",'" + QString::fromUtf8((*it_c)->getMyName().c_str()) +"'"; +//// } else { +//// sql += ",NULL"; +//// } +//// } +// sql += ")"; +// if(!query.exec(sql)) { +// QMessageBox::critical(0, tr("ERROR"),query.lastError().text().toUtf8().data(), QMessageBox::Cancel); +// } +// } + +// // beginning of a hand +// sql = "INSERT INTO Hand (HandID,GameID,Sb_Amount,Bb_Amount"; +// for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) { +// sql += ",Seat_" + QString::number((*it_c)->getMyID()+1,10) + "_Cash"; +// } +//// for(i=1;i<=MAX_NUMBER_OF_PLAYERS; i++) { +//// sql += ",Seat_" + QString("%1").arg(i) + "_Cash"; +//// } +// sql += ") VALUES ("; +// sql += QString::number(handID,10); +// sql += "," + QString::number(gameID,10); +// sql += "," + QString::number(currentHand->getSmallBlind(),10); +// sql += "," + QString::number(currentHand->getSmallBlind()*2,10); +// for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) { +// sql += "," + QString::number((*it_c)->getMyCash()+(*it_c)->getMySet(),10); +// } +//// for(it_c = currentHand->getSeatsList()->begin();it_c!=currentHand->getSeatsList()->end();it_c++) { +//// if((*it_c)->getMyActiveStatus()) { +//// sql += "," + QString::number((*it_c)->getMyCash()+(*it_c)->getMySet(),10); +//// } else { +//// sql += ",NULL"; +//// } +//// } +// sql += ")"; + +// if(!query.exec(sql)) { +// QMessageBox::critical(0, tr("ERROR"),query.lastError().text().toUtf8().data(), QMessageBox::Cancel); +// } + +// } else { +// QMessageBox::critical(0, tr("ERROR"),mySqliteLogDb->lastError().text().toUtf8().data(), QMessageBox::Cancel); +// } + + + } + + } + +} + +void guiLog::logNewBlindsSetsMsg(int sbSet, int bbSet, QString sbName, QString bbName) { + + // log blinds + myW->textBrowser_Log->append("getChatLogTextColor()+";\">"+sbName+" posts small blind ($"+QString::number(sbSet,10)+")"); + myW->textBrowser_Log->append("getChatLogTextColor()+";\">"+bbName+" posts big blind ($"+QString::number(bbSet,10)+")"); + + if(myConfig->readConfigInt("LogOnOff")) { + //if write logfiles is enabled + + if(HTML_LOG) { + + logFileStreamString += "BLINDS: "; + + logFileStreamString += sbName+" ($"+QString::number(sbSet,10)+"), "; + logFileStreamString += bbName+" ($"+QString::number(bbSet,10)+")"; + + PlayerListConstIterator it_c; + HandInterface *currentHand = myW->getSession()->getCurrentGame()->getCurrentHand(); + for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) { + if(currentHand->getActivePlayerList()->size() > 2) { + if((*it_c)->getMyButton() == BUTTON_DEALER) { + + logFileStreamString += "
" + QString::fromUtf8((*it_c)->getMyName().c_str()) + " starts as dealer."; + break; + } + } else { + if((*it_c)->getMyButton() == BUTTON_SMALL_BLIND) { + + logFileStreamString += "
" + QString::fromUtf8((*it_c)->getMyName().c_str()) + " starts as dealer."; + break; + } + } + } + + logFileStreamString += "

PREFLOP"; + logFileStreamString += "
\n"; + + } + + if(SQLITE_LOG) { + + + + } + + } + +} + +void guiLog::logPlayerWinsMsg(QString playerName, int pot, bool main) { + + if(main) { + myW->textBrowser_Log->append("getLogWinnerMainPotColor()+";\">"+playerName+" wins $"+QString::number(pot,10)+""); + } else { + myW->textBrowser_Log->append("getLogWinnerSidePotColor()+";\">"+playerName+" wins $"+QString::number(pot,10)+" (side pot)"); + } + + if(myConfig->readConfigInt("LogOnOff")) { + //if write logfiles is enabled + + logFileStreamString += "
"+playerName+" wins $"+QString::number(pot,10); + if(!main) { + logFileStreamString += " (side pot)"; + } + logFileStreamString += "\n"; + + if(myConfig->readConfigInt("LogInterval") == 0) { + writeLogFileStream(logFileStreamString); + logFileStreamString = ""; + } + } +} + +void guiLog::logPlayerSitsOut(QString playerName) { + + myW->textBrowser_Log->append("getLogPlayerSitsOutColor()+";\">"+playerName+" sits out"); + + if(myConfig->readConfigInt("LogOnOff")) { + + logFileStreamString += "
"+playerName+" sits out\n"; + + if(myConfig->readConfigInt("LogInterval") == 0) { + writeLogFileStream(logFileStreamString); + logFileStreamString = ""; + } + } +} + +void guiLog::logDealBoardCardsMsg(int roundID, int card1, int card2, int card3, int card4, int card5) { + + QString round; + + switch (roundID) { + + case 1: round = "Flop"; + myW->textBrowser_Log->append("getLogPlayerSitsOutColor()+";\">--- "+round+" --- "+"["+translateCardCode(card1).at(0)+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+translateCardCode(card2).at(1)+","+translateCardCode(card3).at(0)+translateCardCode(card3).at(1)+"]"); + break; + case 2: round = "Turn"; + myW->textBrowser_Log->append("getLogPlayerSitsOutColor()+";\">--- "+round+" --- "+"["+translateCardCode(card1).at(0)+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+translateCardCode(card2).at(1)+","+translateCardCode(card3).at(0)+translateCardCode(card3).at(1)+","+translateCardCode(card4).at(0)+translateCardCode(card4).at(1)+"]"); + break; + case 3: round = "River"; + myW->textBrowser_Log->append("getLogPlayerSitsOutColor()+";\">--- "+round+" --- "+"["+translateCardCode(card1).at(0)+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+translateCardCode(card2).at(1)+","+translateCardCode(card3).at(0)+translateCardCode(card3).at(1)+","+translateCardCode(card4).at(0)+translateCardCode(card4).at(1)+","+translateCardCode(card5).at(0)+translateCardCode(card5).at(1)+"]"); + break; + default: round = "ERROR"; + } + + if(myConfig->readConfigInt("LogOnOff")) { + //if write logfiles is enabled + + if(HTML_LOG) { + + switch (roundID) { + + case 1: round = "Flop"; + logFileStreamString += "
"+round.toUpper()+" [board cards "+translateCardCode(card1).at(0)+""+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+""+translateCardCode(card2).at(1)+","+translateCardCode(card3).at(0)+""+translateCardCode(card3).at(1)+"]"+"
\n"; + break; + case 2: round = "Turn"; + logFileStreamString += "
"+round.toUpper()+" [board cards "+translateCardCode(card1).at(0)+""+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+""+translateCardCode(card2).at(1)+","+translateCardCode(card3).at(0)+""+translateCardCode(card3).at(1)+","+translateCardCode(card4).at(0)+""+translateCardCode(card4).at(1)+"]"+"
\n"; + break; + case 3: round = "River"; + logFileStreamString += "
"+round.toUpper()+" [board cards "+translateCardCode(card1).at(0)+""+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+""+translateCardCode(card2).at(1)+","+translateCardCode(card3).at(0)+""+translateCardCode(card3).at(1)+","+translateCardCode(card4).at(0)+""+translateCardCode(card4).at(1)+","+translateCardCode(card5).at(0)+""+translateCardCode(card5).at(1)+"]"+"
\n"; + break; + default: round = "ERROR"; + } + + if(myConfig->readConfigInt("LogInterval") == 0) { + writeLogFileStream(logFileStreamString); + logFileStreamString = ""; + } + + } + + if(SQLITE_LOG) { + +// if(mySqliteLogDb->isOpen()) { + +// QSqlQuery query(*mySqliteLogDb); +// QString sql; +// sql = "UPDATE Hand SET "; + +// switch (roundID) { +// case 1: round = "Flop"; +// sql += "BoardCard_1 = " + QString::number(card1,10) + ","; +// sql += "BoardCard_2 = " + QString::number(card2,10) + ","; +// sql += "BoardCard_3 = " + QString::number(card3,10); +// break; +// case 2: round = "Turn"; +// sql += "BoardCard_4 = " + QString::number(card4,10); +// break; +// case 3: round = "River"; +// sql += "BoardCard_5 = " + QString::number(card5,10); +// break; +// default: round = "ERROR"; +// } +// sql += " WHERE "; +// sql += "HandID = " + QString::number(myW->getSession()->getCurrentGame()->getCurrentHandID(),10) + " AND "; +// sql += "GameID = " + QString::number(myW->getSession()->getCurrentGame()->getMyGameID(),10); + + +// if(myConfig->readConfigInt("LogInterval") == 0) { +// if(roundID <= 3) { +// if(!query.exec(sql)) { +// QMessageBox::critical(0, tr("ERROR"),query.lastError().text().toUtf8().data(), QMessageBox::Cancel); +// } + +// } +// } + +// } else { +// QMessageBox::critical(0, tr("ERROR"),mySqliteLogDb->lastError().text().toUtf8().data(), QMessageBox::Cancel); +// } + + } + + } +} + +void guiLog::logFlipHoleCardsMsg(QString playerName, int playerID, int card1, int card2, int cardsValueInt, QString showHas) { + + QString tempHandName; + + if (cardsValueInt != -1) { + + tempHandName = determineHandName(cardsValueInt); + + myW->textBrowser_Log->append("getChatLogTextColor()+";\">"+playerName+" "+showHas+" \""+tempHandName+"\""); + + } + else { + + myW->textBrowser_Log->append("getChatLogTextColor()+";\">"+playerName+" "+showHas+" ["+translateCardCode(card1).at(0)+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+translateCardCode(card2).at(1)+"]"); + + } + + if(myConfig->readConfigInt("LogOnOff")) { + //if write logfiles is enabled + + if(HTML_LOG) { + + if (cardsValueInt != -1) { + + tempHandName = determineHandName(cardsValueInt); + + logFileStreamString += playerName+" "+showHas+" [ "+translateCardCode(card1).at(0)+""+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+""+translateCardCode(card2).at(1)+"] - "+tempHandName+"
\n"; + + if(myConfig->readConfigInt("LogInterval") == 0) { + writeLogFileStream(logFileStreamString); + logFileStreamString = ""; + } + + } else { + + logFileStreamString += playerName+" "+showHas+" ["+translateCardCode(card1).at(0)+""+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+""+translateCardCode(card2).at(1)+"]"+"
\n"; + if(myConfig->readConfigInt("LogInterval") == 0) { + writeLogFileStream(logFileStreamString); + logFileStreamString = ""; + } + } + } + + if(SQLITE_LOG) { + +// if(mySqliteLogDb->isOpen()) { + +// QString sql = "UPDATE Hand SET "; +// sql += "Seat_" + QString::number(playerID+1,10) + "_Card_1 = " + QString::number(card1,10) + ","; +// sql += "Seat_" + QString::number(playerID+1,10) + "_Card_2 = " + QString::number(card2,10); +// sql += " WHERE "; +// sql += "HandID = " + QString::number(myW->getSession()->getCurrentGame()->getCurrentHandID(),10) + " AND "; +// sql += "GameID = " + QString::number(myW->getSession()->getCurrentGame()->getMyGameID(),10); + +// QSqlQuery query(*mySqliteLogDb); +// if(!query.exec(sql)) { +// QMessageBox::critical(0, tr("ERROR"),query.lastError().text().toUtf8().data(), QMessageBox::Cancel); +// } + +// } else { +// QMessageBox::critical(0, tr("ERROR"),mySqliteLogDb->lastError().text().toUtf8().data(), QMessageBox::Cancel); +// } + + } + + } + +} + +void guiLog::logPlayerLeftMsg(QString playerName, int wasKicked) { + + QString action; + if(wasKicked) action = "was kicked from"; + else action = "has left"; + + myW->textBrowser_Log->append( "getChatLogTextColor()+";\">"+playerName+" "+action+" the game!"); + + if(myConfig->readConfigInt("LogOnOff")) { + + logFileStreamString += ""+playerName+" "+action+" the game!
\n"; + + if(myConfig->readConfigInt("LogInterval") == 0) { + writeLogFileStream(logFileStreamString); + logFileStreamString = ""; + } + } +} + +void guiLog::logNewGameAdminMsg(QString playerName) { + + myW->textBrowser_Log->append( "getLogNewGameAdminColor()+";\">"+playerName+" is game admin now!"); + + if(myConfig->readConfigInt("LogOnOff")) { + + logFileStreamString += ""+playerName+" is game admin now!
\n"; + + if(myConfig->readConfigInt("LogInterval") == 0) { + writeLogFileStream(logFileStreamString); + logFileStreamString = ""; + } + } +} + +void guiLog::logPlayerWinGame(QString playerName, int gameID) { + + myW->textBrowser_Log->append( ""+playerName+" wins game " + QString::number(gameID,10) +"!
"); + + if(myConfig->readConfigInt("LogOnOff")) { + + logFileStreamString += "

"+playerName+" wins game " + QString::number(gameID,10) +"!
\n"; + + if(myConfig->readConfigInt("LogInterval") == 0) { + writeLogFileStream(logFileStreamString); + logFileStreamString = ""; + } + } + +} + +QStringList guiLog::translateCardCode(int cardCode) { + + int value = cardCode%13; + int color = cardCode/13; + + QStringList cardString; + + switch (value) { + + case 0: cardString << "2"; + break; + case 1: cardString << "3"; + break; + case 2: cardString << "4"; + break; + case 3: cardString << "5"; + break; + case 4: cardString << "6"; + break; + case 5: cardString << "7"; + break; + case 6: cardString << "8"; + break; + case 7: cardString << "9"; + break; + case 8: cardString << "T"; + break; + case 9: cardString << "J"; + break; + case 10: cardString << "Q"; + break; + case 11: cardString << "K"; + break; + case 12: cardString << "A"; + break; + default: cardString << "ERROR"; + } + + switch (color) { + + case 0: cardString << "d"; + break; + case 1: cardString << "h"; + break; + case 2: cardString << "s"; + break; + case 3: cardString << "c"; + break; + default: cardString << "ERROR"; + } + + return cardString; +} + +QStringList guiLog::translateCardsValueCode(int cardsValueCode) { + + QStringList cardString; + + //erste Ziffer : Blattname + int firstPart = cardsValueCode/100000000; + //zweite und dritte Ziffer : Kicker, highest Card, usw. + int secondPart = cardsValueCode/1000000 - firstPart*100; + //vierte und fünfte Ziffer + int thirdPart = cardsValueCode/10000 - firstPart*10000 - secondPart*100; + // usw + int fourthPart = cardsValueCode/100 - firstPart*1000000 - secondPart*10000 - thirdPart*100; + // + int fifthPart = cardsValueCode - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100; + // fuer highest Card + int fifthPartA = cardsValueCode/10 - firstPart*10000000 - secondPart*100000 - thirdPart*1000 - fourthPart*10; + int fifthPartB = cardsValueCode - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100 - fifthPartA*10; + + + switch (firstPart) { + + // Royal Flush + case 9: cardString << "Royal Flush"; + break; + // Straight Flush + case 8: { + cardString << "Straight Flush, "; + switch(secondPart) { + case 11: cardString << "King high"; + break; + case 10: cardString << "Queen high"; + break; + case 9: cardString << "Jack high"; + break; + case 8: cardString << "Ten high"; + break; + case 7: cardString << "Nine high"; + break; + case 6: cardString << "Eight high"; + break; + case 5: cardString << "Seven high"; + break; + case 4: cardString << "Six high"; + break; + case 3: cardString << "Five high"; + break; + default: cardString << "ERROR"; + } + } + break; + // Four of a Kind + case 7: { + cardString << "Four of a Kind, "; + switch(secondPart) { + case 12: cardString << "Aces"; + break; + case 11: cardString << "Kings"; + break; + case 10: cardString << "Queens"; + break; + case 9: cardString << "Jacks"; + break; + case 8: cardString << "Tens"; + break; + case 7: cardString << "Nines"; + break; + case 6: cardString << "Eights"; + break; + case 5: cardString << "Sevens"; + break; + case 4: cardString << "Sixes"; + break; + case 3: cardString << "Fives"; + break; + case 2: cardString << "Fours"; + break; + case 1: cardString << "Threes"; + break; + case 0: cardString << "Deuces"; + break; + default: cardString << "ERROR"; + } + // Kicker + switch(thirdPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + } + break; + // Full House + case 6: { + cardString << "Full House, "; + //Drilling + switch(secondPart) { + case 12: cardString << "Aces full of "; + break; + case 11: cardString << "Kings full of "; + break; + case 10: cardString << "Queens full of "; + break; + case 9: cardString << "Jacks full of "; + break; + case 8: cardString << "Tens full of "; + break; + case 7: cardString << "Nines full of "; + break; + case 6: cardString << "Eights full of "; + break; + case 5: cardString << "Sevens full of "; + break; + case 4: cardString << "Sixes full of "; + break; + case 3: cardString << "Fives full of "; + break; + case 2: cardString << "Fours full of "; + break; + case 1: cardString << "Threes full of "; + break; + case 0: cardString << "Deuces full of "; + break; + default: cardString << "ERROR"; + } + //Pärchen + switch(thirdPart) { + case 12: cardString << "Aces"; + break; + case 11: cardString << "Kings"; + break; + case 10: cardString << "Queens"; + break; + case 9: cardString << "Jacks"; + break; + case 8: cardString << "Tens"; + break; + case 7: cardString << "Nines"; + break; + case 6: cardString << "Eights"; + break; + case 5: cardString << "Sevens"; + break; + case 4: cardString << "Sixes"; + break; + case 3: cardString << "Fives"; + break; + case 2: cardString << "Fours"; + break; + case 1: cardString << "Threes"; + break; + case 0: cardString << "Deuces"; + break; + default: cardString << "ERROR"; + } + } + break; + // Flush + case 5: { + cardString << "Flush, "; + //highest Card + switch(secondPart) { + case 12: cardString << "Ace high"; + break; + case 11: cardString << "King high"; + break; + case 10: cardString << "Queen high"; + break; + case 9: cardString << "Jack high"; + break; + case 8: cardString << "Ten high"; + break; + case 7: cardString << "Nine high"; + break; + case 6: cardString << "Eight high"; + break; + case 5: cardString << "Seven high"; + break; + case 4: cardString << "Six high"; + break; + default: cardString << "ERROR"; + } + // Kicker 1 + switch(thirdPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + //Kicker 2 + switch(fourthPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + //Kicker 3 + switch(fifthPartA) { + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + //Kicker 4 + switch(fifthPartB) { + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + } + break; + // Straight + case 4: { + cardString << "Straight, "; + switch(secondPart) { + case 12: cardString << "Ace high"; + break; + case 11: cardString << "King high"; + break; + case 10: cardString << "Queen high"; + break; + case 9: cardString << "Jack high"; + break; + case 8: cardString << "Ten high"; + break; + case 7: cardString << "Nine high"; + break; + case 6: cardString << "Eight high"; + break; + case 5: cardString << "Seven high"; + break; + case 4: cardString << "Six high"; + break; + case 3: cardString << "Five high"; + break; + default: cardString << "ERROR"; + } + } + break; + // Three of a Kind + case 3: { + cardString << "Three of a Kind, "; + switch(secondPart) { + case 12: cardString << "Aces"; + break; + case 11: cardString << "Kings"; + break; + case 10: cardString << "Queens"; + break; + case 9: cardString << "Jacks"; + break; + case 8: cardString << "Tens"; + break; + case 7: cardString << "Nines"; + break; + case 6: cardString << "Eights"; + break; + case 5: cardString << "Sevens"; + break; + case 4: cardString << "Sixes"; + break; + case 3: cardString << "Fives"; + break; + case 2: cardString << "Fours"; + break; + case 1: cardString << "Threes"; + break; + case 0: cardString << "Deuces"; + break; + default: cardString << "ERROR"; + } + //Kicker 1 + switch(thirdPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + //Kicker 2 + switch(fourthPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + } + break; + // Two Pairs + case 2: { + cardString << "Two Pairs, "; + // erster Pair + switch(secondPart) { + case 12: cardString << "Aces and "; + break; + case 11: cardString << "Kings and "; + break; + case 10: cardString << "Queens and "; + break; + case 9: cardString << "Jacks and "; + break; + case 8: cardString << "Tens and "; + break; + case 7: cardString << "Nines and "; + break; + case 6: cardString << "Eights and "; + break; + case 5: cardString << "Sevens and "; + break; + case 4: cardString << "Sixes and "; + break; + case 3: cardString << "Fives and "; + break; + case 2: cardString << "Fours and "; + break; + case 1: cardString << "Threes and "; + break; + case 0: cardString << "Deuces and "; + break; + default: cardString << "ERROR"; + } + // zweiter Pair + switch(thirdPart) { + case 12: cardString << "Aces"; + break; + case 11: cardString << "Kings"; + break; + case 10: cardString << "Queens"; + break; + case 9: cardString << "Jacks"; + break; + case 8: cardString << "Tens"; + break; + case 7: cardString << "Nines"; + break; + case 6: cardString << "Eights"; + break; + case 5: cardString << "Sevens"; + break; + case 4: cardString << "Sixes"; + break; + case 3: cardString << "Fives"; + break; + case 2: cardString << "Fours"; + break; + case 1: cardString << "Threes"; + break; + case 0: cardString << "Deuces"; + break; + default: cardString << "ERROR"; + } + //Kicker + switch(fourthPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + } + break; + // One Pair + case 1: { + cardString << "One Pair, "; + // Pair + switch(secondPart) { + case 12: cardString << "Aces"; + break; + case 11: cardString << "Kings"; + break; + case 10: cardString << "Queens"; + break; + case 9: cardString << "Jacks"; + break; + case 8: cardString << "Tens"; + break; + case 7: cardString << "Nines"; + break; + case 6: cardString << "Eights"; + break; + case 5: cardString << "Sevens"; + break; + case 4: cardString << "Sixes"; + break; + case 3: cardString << "Fives"; + break; + case 2: cardString << "Fours"; + break; + case 1: cardString << "Threes"; + break; + case 0: cardString << "Deuces"; + break; + default: cardString << "ERROR"; + } + // Kicker 1 + switch(thirdPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + //Kicker 2 + switch(fourthPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + //Kicker 3 + switch(fifthPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + } + break; + // Highest Card + case 0: { + cardString << "High Card, "; + // Kicker 1 + switch(secondPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuces"; + break; + default: cardString << "ERROR"; + } + // Kicker 2 + switch(thirdPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + //Kicker 3 + switch(fourthPart) { + case 12: cardString << "Ace"; + break; + case 11: cardString << "King"; + break; + case 10: cardString << "Queen"; + break; + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + //Kicker 4 + switch(fifthPartA) { + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + //Kicker 5 + switch(fifthPartB) { + case 9: cardString << "Jack"; + break; + case 8: cardString << "Ten"; + break; + case 7: cardString << "Nine"; + break; + case 6: cardString << "Eight"; + break; + case 5: cardString << "Seven"; + break; + case 4: cardString << "Six"; + break; + case 3: cardString << "Five"; + break; + case 2: cardString << "Four"; + break; + case 1: cardString << "Three"; + break; + case 0: cardString << "Deuce"; + break; + default: cardString << "ERROR"; + } + } + break; + default: cardString << "ERROR"; + + } + + return cardString; + +} + +QString guiLog::determineHandName(int myCardsValueInt) { + + list shownCardsValueInt; + list sameHandCardsValueInt; + bool different = false; + bool equal = false; + HandInterface *currentHand = myW->getSession()->getCurrentGame()->getCurrentHand(); + PlayerListConstIterator it_c; + + // collect cardsValueInt of all players who will show their cards + for(it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) { + if( (*it_c)->getMyAction() != PLAYER_ACTION_FOLD) { + shownCardsValueInt.push_back( (*it_c)->getMyCardsValueInt()); + } + } + + // erase own cardsValueInt + list::iterator it; + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); it++) { + if((*it) == myCardsValueInt) { + shownCardsValueInt.erase(it); + break; + } + } + + QString handName; + + switch(myCardsValueInt/100000000) { + // Royal Flush + case 9: { + handName = translateCardsValueCode(myCardsValueInt).at(0); + } + break; + // Straight Flush + case 8: { + handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); + } + break; + // Four of a kind + case 7: { + + handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); it++) { + if(((*it)/1000000) == (myCardsValueInt/1000000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(2); + } + + } + + } + break; + // Full House + case 6: { + handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1)+translateCardsValueCode(myCardsValueInt).at(2); + } + break; + // Flush + case 5: { + + handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); it++) { + if(((*it)/1000000) == (myCardsValueInt/1000000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", second card " + translateCardsValueCode(myCardsValueInt).at(2); + } + // 2.there are still same hands + if(equal) { + different = false; + equal = false; + // second kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/100) == (myCardsValueInt/100)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", third card " + translateCardsValueCode(myCardsValueInt).at(3); + } + // 3.there are still same hands + if(equal) { + different = false; + equal = false; + // third kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10) == (myCardsValueInt/10)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", fourth card " + translateCardsValueCode(myCardsValueInt).at(4); + } + // 4.there are still same hands + if(equal) { + different = false; + equal = false; + // third kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if((*it) == myCardsValueInt) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(5); + } + } + } + } + } + + } + break; + // Straight + case 4: { + handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); + } + break; + // Three of a kind + case 3: { + handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); it++) { + if(((*it)/1000000) == (myCardsValueInt/1000000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", fourth card " + translateCardsValueCode(myCardsValueInt).at(2); + } + // 2.there are still same hands + if(equal) { + different = false; + equal = false; + // second kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/100) == (myCardsValueInt/100)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(3); + } + } + } + + } + break; + // Two Pairs + case 2: { + + handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1)+translateCardsValueCode(myCardsValueInt).at(2); + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); it++) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/100) == (myCardsValueInt/100)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(3); + } + + } + + } + break; + // Pair + case 1: { + + handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); it++) { + if(((*it)/1000000) == (myCardsValueInt/1000000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", third card " + translateCardsValueCode(myCardsValueInt).at(2); + } + // 2.there are still same hands + if(equal) { + different = false; + equal = false; + // second kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/100) == (myCardsValueInt/100)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", fourth card " + translateCardsValueCode(myCardsValueInt).at(3); + } + // 3.there are still same hands + if(equal) { + different = false; + equal = false; + // third kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if((*it) == myCardsValueInt) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(4); + } + } + } + } + + } + break; + // highestCard + case 0: { + + handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); it++) { + if(((*it)/1000000) == (myCardsValueInt/1000000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", second card " + translateCardsValueCode(myCardsValueInt).at(2); + } + // 2.there are still same hands + if(equal) { + different = false; + equal = false; + // second kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/100) == (myCardsValueInt/100)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", third card " + translateCardsValueCode(myCardsValueInt).at(3); + } + // 3.there are still same hands + if(equal) { + different = false; + equal = false; + // third kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10) == (myCardsValueInt/10)) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", fourth card " + translateCardsValueCode(myCardsValueInt).at(4); + } + // 4.there are still same hands + if(equal) { + different = false; + equal = false; + // third kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if((*it) == myCardsValueInt) { + equal = true; + it++; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(5); + } + } + } + } + } + + } + break; + default: {} + } + + return handName; + +} + +void guiLog::writeLogFileStream(QString streamString) { + + if(myHtmlLogFile) { + if(myHtmlLogFile->open( QIODevice::ReadWrite )) { + QTextStream stream( myHtmlLogFile ); + stream.readAll(); + stream << streamString; + myHtmlLogFile->close(); + } + else { cout << "Could not open log-file to write log-messages!" << endl; } + } + else { cout << "Could not find log-file to write log-messages!" << endl; } +} + +void guiLog::flushLogAtHand() { + + if(myConfig->readConfigInt("LogOnOff")) { + if(myConfig->readConfigInt("LogInterval") < 2) { + // write for log after every action and after every hand + writeLogFileStream(logFileStreamString); + logFileStreamString = ""; + } + } +} + +void guiLog::flushLogAtGame(int gameID) { + + if(myConfig->readConfigInt("LogOnOff")) { + // write for log after every game + if(gameID > lastGameID) { + writeLogFileStream(logFileStreamString); + logFileStreamString = ""; + lastGameID = gameID; + } + } +} diff --git a/src/gui/qt/gametable/log/guilog.h b/src/gui/qt/gametable/log/guilog.h new file mode 100644 index 00000000..94f46f40 --- /dev/null +++ b/src/gui/qt/gametable/log/guilog.h @@ -0,0 +1,101 @@ +/*************************************************************************** + * Copyright (C) 2006 by FThauer FHammer * + * f.thauer@web.de * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef GUILOG_H +#define GUILOG_H + +#include +#include +#include + +#include "configfile.h" +#include + +#include +#include + +class gameTableImpl; +class GameTableStyleReader; + +class guiLog : public QObject +{ +Q_OBJECT + +public: + guiLog(gameTableImpl*, ConfigFile *c); + + ~guiLog(); + +public slots: + + void closeLogDbAtExit(); + void logPlayerActionMsg(QString playerName, int playerID, 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, 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 playerID, int card1, int card2, int cardsValueInt = -1, QString showHas = "shows"); + void logPlayerLeftMsg(QString playerName, int wasKicked); + void logNewGameAdminMsg(QString playerName); + void logPlayerWinGame(QString playerName, int gameID); + void flushLogAtGame(int gameID); + void flushLogAtHand(); + + +public: + QStringList translateCardsValueCode(int cardsValueCode); + QStringList translateCardCode(int cardCode); + QString determineHandName(int cardsValueInt); + + void writeLogFileStream(QString string); + +signals: + void signalLogPlayerActionMsg(QString playerName, int playerID, 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, 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 playerID, int card1, int card2, int cardsValueInt = -1, QString showHas = "shows"); + void signalLogPlayerLeftMsg(QString playerName, int wasKicked); + void signalLogNewGameAdminMsg(QString playerName); + void signalLogPlayerWinGame(QString playerName, int gameID); + void signalFlushLogAtGame(int gameID); + void signalFlushLogAtHand(); + + +private: + int lastGameID; + + gameTableImpl *myW; + ConfigFile *myConfig; + QTextStream stream; + QDir *myLogDir; + QFile *myHtmlLogFile; + sqlite3 *mySqliteLogDb; + QString logFileStreamString; + QString myAppDataPath; + + GameTableStyleReader *myStyle; + +friend class GuiWrapper; +}; + +#endif diff --git a/src/gui/qt/guiwrapper.cpp b/src/gui/qt/guiwrapper.cpp index 1aeb56f2..1e87e6f0 100644 --- a/src/gui/qt/guiwrapper.cpp +++ b/src/gui/qt/guiwrapper.cpp @@ -30,12 +30,12 @@ using namespace std; -GuiWrapper::GuiWrapper(ConfigFile *c, startWindowImpl *s) : myLog(NULL), myW(NULL), myConfig(c), myStartWindow(s) +GuiWrapper::GuiWrapper(ConfigFile *c, startWindowImpl *s) : myGuiLog(NULL), myW(NULL), myConfig(c), myStartWindow(s) { myW = new gameTableImpl(myConfig); - myLog = new Log(myW, myConfig); + myGuiLog = new guiLog(myW, myConfig); myW->setStartWindow(myStartWindow); } @@ -43,7 +43,7 @@ GuiWrapper::GuiWrapper(ConfigFile *c, startWindowImpl *s) : myLog(NULL), myW(NUL GuiWrapper::~GuiWrapper() { - delete myLog; + delete myGuiLog; } @@ -113,16 +113,16 @@ void GuiWrapper::changeVoteOnKickButtonsState(bool showHide) { myW->signalChange void GuiWrapper::refreshVotesMonitor(int currentVotes, int numVotesNeededToKick) { myW->refreshVotesMonitor(currentVotes, numVotesNeededToKick); } void GuiWrapper::endVoteOnKick() { myW->signalEndVoteOnKick(); } -void GuiWrapper::logPlayerActionMsg(string playerName, int playerID, int action, int setValue) { myLog->signalLogPlayerActionMsg(QString::fromUtf8(playerName.c_str()), playerID, 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, 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 playerID, int card1, int card2, int cardsValueInt, string showHas) { myLog->signalLogFlipHoleCardsMsg(QString::fromUtf8(playerName.c_str()), playerID, card1, card2, cardsValueInt, QString::fromUtf8(showHas.c_str())); } -void GuiWrapper::logPlayerWinGame(std::string playerName, int gameID) { myLog->signalLogPlayerWinGame(QString::fromUtf8(playerName.c_str()), gameID); } -void GuiWrapper::flushLogAtGame(int gameID) { myLog->signalFlushLogAtGame(gameID); } -void GuiWrapper::flushLogAtHand() { myLog->signalFlushLogAtHand(); } +void GuiWrapper::logPlayerActionMsg(string playerName, int playerID, int action, int setValue) { myGuiLog->signalLogPlayerActionMsg(QString::fromUtf8(playerName.c_str()), playerID, action, setValue); } +void GuiWrapper::logNewGameHandMsg(int gameID, int handID) { myGuiLog->signalLogNewGameHandMsg(gameID, handID); } +void GuiWrapper::logNewBlindsSetsMsg(int sbSet, int bbSet, std::string sbName, std::string bbName) { myGuiLog->signalLogNewBlindsSetsMsg(sbSet, bbSet, QString::fromUtf8(sbName.c_str()), QString::fromUtf8(bbName.c_str())); } +void GuiWrapper::logPlayerWinsMsg(std::string playerName, int pot, bool main) { myGuiLog->signalLogPlayerWinsMsg(QString::fromUtf8(playerName.c_str()), pot, main); } +void GuiWrapper::logPlayerSitsOut(std::string playerName) { myGuiLog->signalLogPlayerSitsOut(QString::fromUtf8(playerName.c_str())); } +void GuiWrapper::logDealBoardCardsMsg(int roundID, int card1, int card2, int card3, int card4, int card5) { myGuiLog->signalLogDealBoardCardsMsg(roundID, card1, card2, card3, card4, card5); } +void GuiWrapper::logFlipHoleCardsMsg(string playerName, int playerID, int card1, int card2, int cardsValueInt, string showHas) { myGuiLog->signalLogFlipHoleCardsMsg(QString::fromUtf8(playerName.c_str()), playerID, card1, card2, cardsValueInt, QString::fromUtf8(showHas.c_str())); } +void GuiWrapper::logPlayerWinGame(std::string playerName, int gameID) { myGuiLog->signalLogPlayerWinGame(QString::fromUtf8(playerName.c_str()), gameID); } +void GuiWrapper::flushLogAtGame(int gameID) { myGuiLog->signalFlushLogAtGame(gameID); } +void GuiWrapper::flushLogAtHand() { myGuiLog->signalFlushLogAtHand(); } void GuiWrapper::SignalNetClientConnect(int actionID) { myStartWindow->signalNetClientConnect(actionID); } @@ -149,13 +149,13 @@ void GuiWrapper::SignalNetClientPlayerLeft(unsigned playerId, const string &play myStartWindow->signalNetClientPlayerLeft(playerId, tmpName); myW->signalNetClientPlayerLeft(playerId); if (!playerName.empty() && playerName[0] != '#') - myLog->signalLogPlayerLeftMsg(tmpName, removeReason == NTF_NET_REMOVED_KICKED); + myGuiLog->signalLogPlayerLeftMsg(tmpName, removeReason == NTF_NET_REMOVED_KICKED); } void GuiWrapper::SignalNetClientNewGameAdmin(unsigned playerId, const string &playerName) { myStartWindow->signalNetClientNewGameAdmin(playerId, QString::fromUtf8(playerName.c_str())); if (!playerName.empty() && playerName[0] != '#') - myLog->signalLogNewGameAdminMsg(QString::fromUtf8(playerName.c_str())); + myGuiLog->signalLogNewGameAdminMsg(QString::fromUtf8(playerName.c_str())); } diff --git a/src/gui/qt/guiwrapper.h b/src/gui/qt/guiwrapper.h index dcbeee3e..7258ba98 100644 --- a/src/gui/qt/guiwrapper.h +++ b/src/gui/qt/guiwrapper.h @@ -44,7 +44,7 @@ public: void setSession(boost::shared_ptr session); gameTableImpl* getMyW() const { return myW; } - Log* getMyLog() const { return myLog; } + guiLog* getMyLog() const { return myGuiLog; } void refreshSet() const; void refreshCash() const; @@ -167,7 +167,7 @@ public: private: - Log *myLog; + guiLog *myGuiLog; gameTableImpl *myW; ConfigFile *myConfig; startWindowImpl *myStartWindow;