2007-05-18 17:13:27 +00:00
|
|
|
/***************************************************************************
|
|
|
|
|
* Copyright (C) 2007 by Lothar May *
|
|
|
|
|
* *
|
|
|
|
|
* 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 "clienthand.h"
|
|
|
|
|
#include <game_defs.h>
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
2007-09-27 00:37:01 +00:00
|
|
|
ClientHand::ClientHand(boost::shared_ptr<EngineFactory> f, GuiInterface *g, BoardInterface *b, std::vector<boost::shared_ptr<PlayerInterface> > sl_old, PlayerList sl, PlayerList apl, PlayerList rpl, int id, int sP, int dP, int sB,int sC)
|
|
|
|
|
: myFactory(f), myGui(g), myBoard(b), playerArray(sl_old), seatsList(sl), activePlayerList(apl), runningPlayerList(rpl), myID(id), startQuantityPlayers(sP), dealerPosition(dP), actualRound(0),
|
2007-09-24 21:09:36 +00:00
|
|
|
smallBlind(sB), startCash(sC), lastPlayersTurn(0), allInCondition(0),
|
2007-06-06 21:16:52 +00:00
|
|
|
cardsShown(false), bettingRoundsPlayed(0)
|
2007-05-18 17:13:27 +00:00
|
|
|
{
|
2007-09-27 14:17:07 +00:00
|
|
|
PlayerListIterator it;
|
2007-05-21 19:52:26 +00:00
|
|
|
|
2007-05-22 23:27:21 +00:00
|
|
|
myBoard->setHand(this);
|
|
|
|
|
|
2007-09-27 14:17:07 +00:00
|
|
|
for(it=seatsList->begin(); it!=seatsList->end(); it++) {
|
|
|
|
|
(*it)->setHand(this);
|
2007-06-06 21:16:52 +00:00
|
|
|
// myFlipCards auf 0 setzen
|
2007-09-27 14:17:07 +00:00
|
|
|
(*it)->setMyCardsFlip(0, 0);
|
2007-05-22 23:27:21 +00:00
|
|
|
}
|
|
|
|
|
|
2007-06-10 12:46:29 +00:00
|
|
|
// roundStartCashArray fuellen
|
|
|
|
|
// cardsvalue zuruecksetzen
|
|
|
|
|
// remove all buttons
|
2007-09-27 14:17:07 +00:00
|
|
|
for(it=activePlayerList->begin(); it!=activePlayerList->end(); it++) {
|
2007-05-22 23:27:21 +00:00
|
|
|
|
2007-09-27 14:17:07 +00:00
|
|
|
boost::shared_ptr<PlayerInterface> tmpPlayer = *it;
|
|
|
|
|
|
|
|
|
|
tmpPlayer->setMyRoundStartCash(tmpPlayer->getMyCash());
|
|
|
|
|
tmpPlayer->setMyCardsValueInt(0);
|
|
|
|
|
tmpPlayer->setMyButton(0);
|
|
|
|
|
if (tmpPlayer->getMyUniqueID() == dealerPosition)
|
|
|
|
|
tmpPlayer->setMyButton(1);
|
|
|
|
|
}
|
2007-05-23 22:31:56 +00:00
|
|
|
|
|
|
|
|
// the rest of the buttons are assigned later as received from the server.
|
|
|
|
|
|
2007-05-24 20:26:23 +00:00
|
|
|
// Preflop, Flop, Turn und River erstellen
|
2007-09-24 10:02:17 +00:00
|
|
|
myBeRo = myFactory->createBeRo(this, myID, dealerPosition, smallBlind);
|
2007-05-18 17:13:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ClientHand::~ClientHand()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ClientHand::start()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2007-08-10 23:34:56 +00:00
|
|
|
std::vector<boost::shared_ptr<PlayerInterface> >
|
2007-06-11 17:48:22 +00:00
|
|
|
ClientHand::getPlayerArray() const
|
|
|
|
|
{
|
|
|
|
|
return playerArray;
|
|
|
|
|
}
|
|
|
|
|
|
2007-09-30 00:06:34 +00:00
|
|
|
PlayerList
|
|
|
|
|
ClientHand::getSeatsList() const
|
|
|
|
|
{
|
2007-10-02 20:50:28 +00:00
|
|
|
return seatsList;
|
2007-09-30 00:06:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PlayerList
|
|
|
|
|
ClientHand::getActivePlayerList() const
|
|
|
|
|
{
|
|
|
|
|
return activePlayerList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PlayerList
|
|
|
|
|
ClientHand::getRunningPlayerList() const
|
|
|
|
|
{
|
|
|
|
|
return runningPlayerList;
|
|
|
|
|
}
|
|
|
|
|
|
2007-09-27 00:37:01 +00:00
|
|
|
PlayerListIterator
|
|
|
|
|
ClientHand::getSeatIt(unsigned uniqueId) const
|
|
|
|
|
{
|
|
|
|
|
PlayerListIterator it;
|
|
|
|
|
|
|
|
|
|
for(it=seatsList->begin(); it!=seatsList->end(); it++) {
|
|
|
|
|
if((*it)->getMyUniqueID() == uniqueId) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return it;
|
|
|
|
|
}
|
|
|
|
|
|
2007-09-26 19:45:58 +00:00
|
|
|
PlayerListIterator
|
|
|
|
|
ClientHand::getActivePlayerIt(unsigned uniqueId) const
|
|
|
|
|
{
|
|
|
|
|
PlayerListIterator it;
|
|
|
|
|
|
|
|
|
|
for(it=activePlayerList->begin(); it!=activePlayerList->end(); it++) {
|
|
|
|
|
if((*it)->getMyUniqueID() == uniqueId) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return it;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PlayerListIterator
|
|
|
|
|
ClientHand::getRunningPlayerIt(unsigned uniqueId) const
|
|
|
|
|
{
|
|
|
|
|
PlayerListIterator it;
|
|
|
|
|
|
|
|
|
|
for(it=runningPlayerList->begin(); it!=runningPlayerList->end(); it++) {
|
|
|
|
|
if((*it)->getMyUniqueID() == uniqueId) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return it;
|
|
|
|
|
}
|
|
|
|
|
|
2007-06-11 17:48:22 +00:00
|
|
|
BoardInterface*
|
|
|
|
|
ClientHand::getBoard() const
|
|
|
|
|
{
|
|
|
|
|
return myBoard;
|
|
|
|
|
}
|
|
|
|
|
|
2007-08-06 20:35:26 +00:00
|
|
|
boost::shared_ptr<BeRoInterface>
|
2007-06-11 17:48:22 +00:00
|
|
|
ClientHand::getPreflop() const
|
|
|
|
|
{
|
2007-09-27 14:17:07 +00:00
|
|
|
return myBeRo[GAME_STATE_PREFLOP];
|
2007-06-11 17:48:22 +00:00
|
|
|
}
|
|
|
|
|
|
2007-08-06 20:35:26 +00:00
|
|
|
boost::shared_ptr<BeRoInterface>
|
2007-06-11 17:48:22 +00:00
|
|
|
ClientHand::getFlop() const
|
|
|
|
|
{
|
2007-09-27 14:17:07 +00:00
|
|
|
return myBeRo[GAME_STATE_FLOP];
|
2007-06-11 17:48:22 +00:00
|
|
|
}
|
|
|
|
|
|
2007-08-06 20:35:26 +00:00
|
|
|
boost::shared_ptr<BeRoInterface>
|
2007-06-11 17:48:22 +00:00
|
|
|
ClientHand::getTurn() const
|
|
|
|
|
{
|
2007-09-27 14:17:07 +00:00
|
|
|
return myBeRo[GAME_STATE_TURN];
|
2007-06-11 17:48:22 +00:00
|
|
|
}
|
|
|
|
|
|
2007-08-06 20:35:26 +00:00
|
|
|
boost::shared_ptr<BeRoInterface>
|
2007-06-11 17:48:22 +00:00
|
|
|
ClientHand::getRiver() const
|
|
|
|
|
{
|
2007-09-27 14:17:07 +00:00
|
|
|
return myBeRo[GAME_STATE_RIVER];
|
2007-06-11 17:48:22 +00:00
|
|
|
}
|
|
|
|
|
|
2007-08-06 20:35:26 +00:00
|
|
|
boost::shared_ptr<BeRoInterface>
|
2007-08-05 13:07:23 +00:00
|
|
|
ClientHand::getCurrentBeRo() const
|
|
|
|
|
{
|
2007-08-06 20:35:26 +00:00
|
|
|
return myBeRo[actualRound];
|
2007-08-05 13:07:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2007-06-11 17:48:22 +00:00
|
|
|
GuiInterface*
|
|
|
|
|
ClientHand::getGuiInterface() const
|
|
|
|
|
{
|
|
|
|
|
return myGui;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ClientHand::setMyID(int theValue)
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
myID = theValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
ClientHand::getMyID() const
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
return myID;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ClientHand::setStartQuantityPlayers(int theValue)
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
startQuantityPlayers = theValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
ClientHand::getStartQuantityPlayers() const
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
return startQuantityPlayers;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ClientHand::setActualRound(int theValue)
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
actualRound = theValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
ClientHand::getActualRound() const
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
return actualRound;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ClientHand::setDealerPosition(int theValue)
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
dealerPosition = theValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
ClientHand::getDealerPosition() const
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
return dealerPosition;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ClientHand::setSmallBlind(int theValue)
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
smallBlind = theValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
ClientHand::getSmallBlind() const
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
return smallBlind;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ClientHand::setAllInCondition(bool theValue)
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
allInCondition = theValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool
|
|
|
|
|
ClientHand::getAllInCondition() const
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
return allInCondition;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ClientHand::setStartCash(int theValue)
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
startCash = theValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
ClientHand::getStartCash() const
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
return startCash;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ClientHand::setBettingRoundsPlayed(int theValue)
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
bettingRoundsPlayed = theValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
ClientHand::getBettingRoundsPlayed() const
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
return bettingRoundsPlayed;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ClientHand::setLastPlayersTurn(int theValue)
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
lastPlayersTurn = theValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
ClientHand::getLastPlayersTurn() const
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
return lastPlayersTurn;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ClientHand::setCardsShown(bool theValue)
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
cardsShown = theValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool
|
|
|
|
|
ClientHand::getCardsShown() const
|
|
|
|
|
{
|
|
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
|
|
|
|
return cardsShown;
|
|
|
|
|
}
|
|
|
|
|
|
2007-05-18 17:13:27 +00:00
|
|
|
void
|
|
|
|
|
ClientHand::switchRounds()
|
|
|
|
|
{
|
2007-06-11 17:48:22 +00:00
|
|
|
boost::recursive_mutex::scoped_lock lock(m_syncMutex);
|
2007-09-27 14:17:07 +00:00
|
|
|
|
|
|
|
|
PlayerListIterator it, it_1;
|
|
|
|
|
|
|
|
|
|
// refresh runningPlayerList
|
|
|
|
|
for(it=runningPlayerList->begin(); it!=runningPlayerList->end(); ) {
|
|
|
|
|
if((*it)->getMyAction() == PLAYER_ACTION_FOLD || (*it)->getMyAction() == PLAYER_ACTION_ALLIN) {
|
|
|
|
|
it = runningPlayerList->erase(it);
|
|
|
|
|
if(!(runningPlayerList->empty())) {
|
|
|
|
|
|
|
|
|
|
it_1 = it;
|
|
|
|
|
if(it_1 == runningPlayerList->begin()) it_1 = runningPlayerList->end();
|
|
|
|
|
it_1--;
|
|
|
|
|
getCurrentBeRo()->setCurrentPlayersTurnId((*it_1)->getMyUniqueID());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
it++;
|
|
|
|
|
}
|
2007-06-06 21:16:52 +00:00
|
|
|
}
|
2007-05-18 17:13:27 +00:00
|
|
|
}
|
|
|
|
|
|