Files
pokerth/src/engine/network_engine/clienthand.cpp
T

326 lines
7.7 KiB
C++
Raw Normal View History

/***************************************************************************
* 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;
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),
smallBlind(sB), startCash(sC), lastPlayersTurn(0), allInCondition(0),
cardsShown(false), bettingRoundsPlayed(0)
{
2007-09-27 14:17:07 +00:00
PlayerListIterator it;
myBoard->setHand(this);
2007-09-27 14:17:07 +00:00
for(it=seatsList->begin(); it!=seatsList->end(); it++) {
(*it)->setHand(this);
// myFlipCards auf 0 setzen
2007-09-27 14:17:07 +00:00
(*it)->setMyCardsFlip(0, 0);
}
// roundStartCashArray fuellen
// cardsvalue zuruecksetzen
// remove all buttons
2007-09-27 14:17:07 +00:00
for(it=activePlayerList->begin(); it!=activePlayerList->end(); it++) {
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.
// Preflop, Flop, Turn und River erstellen
myBeRo = myFactory->createBeRo(this, myID, dealerPosition, smallBlind);
}
ClientHand::~ClientHand()
{
}
void
ClientHand::start()
{
}
2007-08-10 23:34:56 +00:00
std::vector<boost::shared_ptr<PlayerInterface> >
ClientHand::getPlayerArray() const
{
return playerArray;
}
PlayerListIterator
ClientHand::getSeatIt(unsigned uniqueId) const
{
PlayerListIterator it;
for(it=seatsList->begin(); it!=seatsList->end(); it++) {
if((*it)->getMyUniqueID() == uniqueId) {
break;
}
}
return it;
}
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;
}
BoardInterface*
ClientHand::getBoard() const
{
return myBoard;
}
boost::shared_ptr<BeRoInterface>
ClientHand::getPreflop() const
{
2007-09-27 14:17:07 +00:00
return myBeRo[GAME_STATE_PREFLOP];
}
boost::shared_ptr<BeRoInterface>
ClientHand::getFlop() const
{
2007-09-27 14:17:07 +00:00
return myBeRo[GAME_STATE_FLOP];
}
boost::shared_ptr<BeRoInterface>
ClientHand::getTurn() const
{
2007-09-27 14:17:07 +00:00
return myBeRo[GAME_STATE_TURN];
}
boost::shared_ptr<BeRoInterface>
ClientHand::getRiver() const
{
2007-09-27 14:17:07 +00:00
return myBeRo[GAME_STATE_RIVER];
}
boost::shared_ptr<BeRoInterface>
2007-08-05 13:07:23 +00:00
ClientHand::getCurrentBeRo() const
{
return myBeRo[actualRound];
2007-08-05 13:07:23 +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;
}
void
ClientHand::switchRounds()
{
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++;
}
}
}