diff --git a/src/engine/handinterface.h b/src/engine/handinterface.h index 71dabcb7..d1c850f6 100644 --- a/src/engine/handinterface.h +++ b/src/engine/handinterface.h @@ -24,6 +24,7 @@ #include "boardinterface.h" #include "playerinterface.h" #include "berointerface.h" +#include "log.h" class HandInterface { @@ -44,6 +45,7 @@ public: virtual boost::shared_ptr getRiver() const =0; virtual GuiInterface* getGuiInterface() const =0; virtual boost::shared_ptr getCurrentBeRo() const =0; + virtual Log* getLog() const =0; virtual void setMyID(int theValue) =0; virtual int getMyID() const =0; diff --git a/src/engine/local_engine/localbero.cpp b/src/engine/local_engine/localbero.cpp index a5f21edf..46a6672f 100644 --- a/src/engine/local_engine/localbero.cpp +++ b/src/engine/local_engine/localbero.cpp @@ -141,6 +141,7 @@ void LocalBeRo::run() switch(myBeRoID) { case GAME_STATE_FLOP: myHand->getGuiInterface()->logDealBoardCardsMsg(myBeRoID, tempBoardCardsArray[0], tempBoardCardsArray[1], tempBoardCardsArray[2]); + myHand->getLog()->logBoardCards(myBeRoID, tempBoardCardsArray); break; case GAME_STATE_TURN: myHand->getGuiInterface()->logDealBoardCardsMsg(myBeRoID, tempBoardCardsArray[0], tempBoardCardsArray[1], tempBoardCardsArray[2], tempBoardCardsArray[3]); diff --git a/src/engine/local_engine/localhand.cpp b/src/engine/local_engine/localhand.cpp index 9f8830fe..1d80f248 100755 --- a/src/engine/local_engine/localhand.cpp +++ b/src/engine/local_engine/localhand.cpp @@ -357,10 +357,13 @@ LocalHand::LocalHand(boost::shared_ptr f, GuiInterface *g, boost: // ---------------------------------------- // determine dealer, SB, BB + assignButtons(); myLog->logNewHandMsg(myID, dealerPosition, smallBlind, smallBlindPosition, 2*smallBlind, bigBlindPosition, seatsList); + setBlinds(); + myBeRo = myFactory->createBeRo(this, myID, dealerPosition, smallBlind); } @@ -467,40 +470,46 @@ void LocalHand::assignButtons() } // cout << "lAP-Button: " << lastActionPlayer << endl; +} - //do sets --> TODO switch? - for (it_c=runningPlayerList->begin(); it_c!=runningPlayerList->end(); ++it_c) { +void LocalHand::setBlinds() +{ - //small blind - if((*it_c)->getMyButton() == BUTTON_SMALL_BLIND) { + PlayerListConstIterator it_c; - // All in ? - if((*it_c)->getMyCash() <= smallBlind) { + //do sets --> TODO switch? + for (it_c=runningPlayerList->begin(); it_c!=runningPlayerList->end(); ++it_c) { - (*it_c)->setMySet((*it_c)->getMyCash()); - // 1 to do not log this - (*it_c)->setMyAction(PLAYER_ACTION_ALLIN,1); + //small blind + if((*it_c)->getMyButton() == BUTTON_SMALL_BLIND) { - } else { - (*it_c)->setMySet(smallBlind); - } - } + // All in ? + if((*it_c)->getMyCash() <= smallBlind) { - //big blind - if((*it_c)->getMyButton() == BUTTON_BIG_BLIND) { + (*it_c)->setMySet((*it_c)->getMyCash()); + // 1 to do not log this + (*it_c)->setMyAction(PLAYER_ACTION_ALLIN,1); - // all in ? - if((*it_c)->getMyCash() <= 2*smallBlind) { + } else { + (*it_c)->setMySet(smallBlind); + } + } - (*it_c)->setMySet((*it_c)->getMyCash()); - // 1 to do not log this - (*it_c)->setMyAction(PLAYER_ACTION_ALLIN,1); + //big blind + if((*it_c)->getMyButton() == BUTTON_BIG_BLIND) { - } else { - (*it_c)->setMySet(2*smallBlind); - } - } - } + // all in ? + if((*it_c)->getMyCash() <= 2*smallBlind) { + + (*it_c)->setMySet((*it_c)->getMyCash()); + // 1 to do not log this + (*it_c)->setMyAction(PLAYER_ACTION_ALLIN,1); + + } else { + (*it_c)->setMySet(2*smallBlind); + } + } + } } diff --git a/src/engine/local_engine/localhand.h b/src/engine/local_engine/localhand.h index 197cdaad..1e3aa2d5 100755 --- a/src/engine/local_engine/localhand.h +++ b/src/engine/local_engine/localhand.h @@ -71,6 +71,10 @@ public: return myBeRo[currentRound]; } + Log* getLog() const { + return myLog; + } + void setMyID(int theValue) { myID = theValue; } @@ -147,6 +151,7 @@ public: } void assignButtons(); + void setBlinds(); void switchRounds(); diff --git a/src/engine/log.cpp b/src/engine/log.cpp index 33543810..cbf5d9f0 100644 --- a/src/engine/log.cpp +++ b/src/engine/log.cpp @@ -29,7 +29,7 @@ using namespace std; -Log::Log(string logDirString, int logOnOffInt) : curGameID(0), logOnOff(false) +Log::Log(string logDirString, int logOnOffInt) : curGameID(0), curHandID(0), logOnOff(false) { if(SQLITE_LOG) { @@ -165,8 +165,7 @@ Log::~Log() } } -void -Log::logNewGameMsg(int gameID, int startCash, int startSmallBlind, unsigned dealerPosition, PlayerList seatsList) +void Log::logNewGameMsg(int gameID, int startCash, int startSmallBlind, unsigned dealerPosition, PlayerList seatsList) { curGameID = gameID; @@ -213,59 +212,124 @@ Log::logNewGameMsg(int gameID, int startCash, int startSmallBlind, unsigned deal } } -void -Log::logNewHandMsg(int handID, unsigned dealerPosition, int smallBlind, unsigned smallBlindPosition, int bigBlind, unsigned bigBlindPosition, PlayerList seatsList) +void Log::logNewHandMsg(int handID, unsigned dealerPosition, int smallBlind, unsigned smallBlindPosition, int bigBlind, unsigned bigBlindPosition, PlayerList seatsList) { - if(SQLITE_LOG) { + curHandID = handID; - if(logOnOff) { - //if write logfiles is enabled + if(SQLITE_LOG) { - PlayerListConstIterator it_c; - string sql; - char *errmsg; + if(logOnOff) { + //if write logfiles is enabled - if( mySqliteLogDb != 0 ) { - // sqlite-db is open - int i; + PlayerListConstIterator it_c; + string sql; + char *errmsg; - sql = "INSERT INTO Hand ("; - sql += "HandID"; - sql += ",GameID"; - sql += ",Dealer_Seat"; - sql += ",Sb_Amount"; - sql += ",Sb_Seat"; - sql += ",Bb_Amount"; - sql += ",Bb_Seat"; - for(i=1; i<=MAX_NUMBER_OF_PLAYERS; i++) { - sql += ",Seat_" + boost::lexical_cast(i) + "_Cash"; - } - sql += ") VALUES ("; - sql += boost::lexical_cast(handID); - sql += "," + boost::lexical_cast(curGameID); - sql += "," + boost::lexical_cast(dealerPosition+1); - sql += "," + boost::lexical_cast(smallBlind); - sql += "," + boost::lexical_cast(smallBlindPosition+1); - sql += "," + boost::lexical_cast(bigBlind); - sql += "," + boost::lexical_cast(bigBlindPosition+1); - for(it_c = seatsList->begin(); it_c!=seatsList->end(); it_c++) { - if((*it_c)->getMyActiveStatus()) { - sql += "," + boost::lexical_cast((*it_c)->getMyCash()); - } else { - sql += ",NULL"; - } - } - sql += ")"; - if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { - cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; - } + if( mySqliteLogDb != 0 ) { + // sqlite-db is open + int i; - } + sql = "INSERT INTO Hand ("; + sql += "HandID"; + sql += ",GameID"; + sql += ",Dealer_Seat"; + sql += ",Sb_Amount"; + sql += ",Sb_Seat"; + sql += ",Bb_Amount"; + sql += ",Bb_Seat"; + for(i=1; i<=MAX_NUMBER_OF_PLAYERS; i++) { + sql += ",Seat_" + boost::lexical_cast(i) + "_Cash"; + } + sql += ") VALUES ("; + sql += boost::lexical_cast(handID); + sql += "," + boost::lexical_cast(curGameID); + sql += "," + boost::lexical_cast(dealerPosition+1); + sql += "," + boost::lexical_cast(smallBlind); + sql += "," + boost::lexical_cast(smallBlindPosition+1); + sql += "," + boost::lexical_cast(bigBlind); + sql += "," + boost::lexical_cast(bigBlindPosition+1); + for(it_c = seatsList->begin(); it_c!=seatsList->end(); it_c++) { + if((*it_c)->getMyActiveStatus()) { + sql += "," + boost::lexical_cast((*it_c)->getMyCash()); + } else { + sql += ",NULL"; + } + } + sql += ")"; + if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { + cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; + } - } + // Action 'starts as dealer' + sql = "INSERT INTO Action ("; + sql += "HandID"; + sql += ",GameID"; + sql += ",BeRo"; + sql += ",Player"; + sql += ",Action"; + sql += ",Amount"; + sql += ") VALUES ("; + sql += boost::lexical_cast(handID); + sql += "," + boost::lexical_cast(curGameID); + sql += ",0"; + sql += "," + boost::lexical_cast(dealerPosition+1); + sql += ",'starts as dealer'"; + sql += ",NULL"; + sql += ")"; + if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { + cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; + } - } + // Action 'posts small blind' + sql = "INSERT INTO Action ("; + sql += "HandID"; + sql += ",GameID"; + sql += ",BeRo"; + sql += ",Player"; + sql += ",Action"; + sql += ",Amount"; + sql += ") VALUES ("; + sql += boost::lexical_cast(handID); + sql += "," + boost::lexical_cast(curGameID); + sql += ",0"; + sql += "," + boost::lexical_cast(smallBlindPosition+1); + sql += ",'posts small blind'"; + sql += "," + boost::lexical_cast(smallBlind); + sql += ")"; + if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { + cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; + } + + // Action 'posts big blind' + sql = "INSERT INTO Action ("; + sql += "HandID"; + sql += ",GameID"; + sql += ",BeRo"; + sql += ",Player"; + sql += ",Action"; + sql += ",Amount"; + sql += ") VALUES ("; + sql += boost::lexical_cast(handID); + sql += "," + boost::lexical_cast(curGameID); + sql += ",0"; + sql += "," + boost::lexical_cast(bigBlindPosition+1); + sql += ",\'posts big blind'"; + sql += "," + boost::lexical_cast(bigBlind); + sql += ")"; + if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { + cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; + } + } + } + } +} + +void Log::logBoardCards(GameState beroID, int boardCards[5]) +{ + if(SQLITE_LOG) { + + } } //void diff --git a/src/engine/log.h b/src/engine/log.h index 552099b2..0eda8f4c 100644 --- a/src/engine/log.h +++ b/src/engine/log.h @@ -34,12 +34,14 @@ public: void logNewGameMsg(int gameID, int startCash, int startSmallBlind, unsigned dealerPosition, PlayerList seatsList); void logNewHandMsg(int handID, unsigned dealerPosition, int smallBlind, unsigned smallBlindPosition, int bigBlind, unsigned bigBlindPosition, PlayerList seatsList); + void logBoardCards(GameState beroID, int boardCards[5]); // void closeLogDbAtExit(); private: sqlite3 *mySqliteLogDb; int curGameID; + int curHandID; bool logOnOff; }; diff --git a/src/engine/network_engine/clienthand.h b/src/engine/network_engine/clienthand.h index 61484017..5b4142c3 100644 --- a/src/engine/network_engine/clienthand.h +++ b/src/engine/network_engine/clienthand.h @@ -50,6 +50,10 @@ public: GuiInterface* getGuiInterface() const; boost::shared_ptr getCurrentBeRo() const; + Log* getLog() const { + return myLog; + } + void setMyID ( int theValue ); int getMyID() const;