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-23 21:30:51 +00:00
|
|
|
ClientHand::ClientHand(boost::shared_ptr<EngineFactory> f, GuiInterface *g, BoardInterface *b, std::vector<boost::shared_ptr<PlayerInterface> > sl, PlayerList apl, PlayerList rpl, int id, int sP, int aP, int dP, int sB,int sC)
|
2007-09-24 10:02:17 +00:00
|
|
|
: myFactory(f), myGui(g), myBoard(b), playerArray(sl), activePlayerList(apl), runningPlayerList(rpl), myID(id), startQuantityPlayers(sP), dealerPosition(dP), actualRound(0),
|
2007-06-06 21:16:52 +00:00
|
|
|
smallBlind(sB), startCash(sC), activePlayersCounter(aP), lastPlayersTurn(0), allInCondition(0),
|
|
|
|
|
cardsShown(false), bettingRoundsPlayed(0)
|
2007-05-18 17:13:27 +00:00
|
|
|
{
|
2007-05-22 23:27:21 +00:00
|
|
|
int i;
|
|
|
|
|
lastPlayersTurn = 0;
|
2007-05-21 19:52:26 +00:00
|
|
|
|
2007-05-22 23:27:21 +00:00
|
|
|
myBoard->setHand(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for(i=0; i<startQuantityPlayers; i++) {
|
2007-06-14 20:29:59 +00:00
|
|
|
playerArray[i]->setHand(this);
|
2007-06-06 21:16:52 +00:00
|
|
|
// myFlipCards auf 0 setzen
|
2007-05-29 13:15:58 +00:00
|
|
|
playerArray[i]->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-05-22 23:27:21 +00:00
|
|
|
for(i=0; i<MAX_NUMBER_OF_PLAYERS; i++) {
|
|
|
|
|
playerArray[i]->setMyRoundStartCash(playerArray[i]->getMyCash());
|
2007-06-10 12:46:29 +00:00
|
|
|
playerArray[i]->setMyCardsValueInt(0);
|
|
|
|
|
playerArray[i]->setMyButton(0);
|
2007-05-22 23:27:21 +00:00
|
|
|
}
|
|
|
|
|
|
2007-05-23 22:31:56 +00:00
|
|
|
// assign dealer button
|
|
|
|
|
playerArray[dealerPosition]->setMyButton(1);
|
|
|
|
|
|
|
|
|
|
// 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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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-08-06 20:35:26 +00:00
|
|
|
return myBeRo[actualRound];
|
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-08-06 20:35:26 +00:00
|
|
|
return myBeRo[actualRound];
|
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-08-06 20:35:26 +00:00
|
|
|
return myBeRo[actualRound];
|
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-08-06 20:35:26 +00:00
|
|
|
return myBeRo[actualRound];
|
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-06-03 13:36:24 +00:00
|
|
|
// update active players counter.
|
2007-06-06 21:16:52 +00:00
|
|
|
activePlayersCounter = 0;
|
|
|
|
|
for (int i = 0; i < MAX_NUMBER_OF_PLAYERS; i++) {
|
|
|
|
|
if (playerArray[i]->getMyAction() != 1 && playerArray[i]->getMyActiveStatus() == 1) activePlayersCounter++;
|
|
|
|
|
}
|
2007-05-18 17:13:27 +00:00
|
|
|
}
|
|
|
|
|
|