Fixed bug when folding after raising.

This commit is contained in:
lotodore
2007-06-02 16:35:41 +00:00
parent 9512133490
commit b7b09aed0b
4 changed files with 26 additions and 10 deletions
+5 -1
View File
@@ -90,7 +90,11 @@ ClientThread::SendPlayerAction()
NetPacketPlayersAction::Data actionData;
actionData.gameState = static_cast<GameState>(GetGame()->getCurrentHand()->getActualRound());
actionData.playerAction = static_cast<PlayerAction>(GetGame()->getPlayerArray()[0]->getMyAction());
actionData.playerBet = GetGame()->getPlayerArray()[0]->getMyLastRelativeSet();
// Only send last bet if not fold/checked.
if (actionData.playerAction != PLAYER_ACTION_FOLD && actionData.playerAction != PLAYER_ACTION_CHECK)
actionData.playerBet = GetGame()->getPlayerArray()[0]->getMyLastRelativeSet();
else
actionData.playerBet = 0;
static_cast<NetPacketPlayersAction *>(action.get())->SetData(actionData);
// The sender is thread-safe, so just dump the packet.
GetSender().Send(GetContext().GetSocket(), action);
+16 -7
View File
@@ -670,10 +670,14 @@ ServerRecvStateWaitPlayerAction::InternalProcess(ServerRecvThread &server, Sessi
assert(tmpPlayer); // TODO throw exception
tmpPlayer->setMyAction(actionData.playerAction);
tmpPlayer->setMySet(actionData.playerBet);
// Only change the player bet if action is not fold/check
if (actionData.playerAction != PLAYER_ACTION_FOLD && actionData.playerAction != PLAYER_ACTION_CHECK)
{
tmpPlayer->setMySet(actionData.playerBet);
if (tmpPlayer->getMySet() > GetHighestSet(curGame))
SetHighestSet(curGame, tmpPlayer->getMySet());
if (tmpPlayer->getMySet() > GetHighestSet(curGame))
SetHighestSet(curGame, tmpPlayer->getMySet());
}
boost::shared_ptr<NetPacket> notifyActionDone(new NetPacketPlayersActionDone);
NetPacketPlayersActionDone::Data actionDoneData;
@@ -766,12 +770,19 @@ ServerRecvStateNextHand::SetTimer(const boost::microsec_timer &timer)
}
int
ServerRecvStateNextHand::InternalProcess(ServerRecvThread &server, SessionWrapper session, boost::shared_ptr<NetPacket> packet)
ServerRecvStateNextHand::Process(ServerRecvThread &server)
{
int retVal = ServerRecvStateReceiving::Process(server);
if (m_delayTimer.elapsed().seconds() >= SERVER_NEXT_HAND_DELAY_SEC)
server.SetState(ServerRecvStateStartHand::Instance());
Thread::Msleep(10);
return retVal;
}
int
ServerRecvStateNextHand::InternalProcess(ServerRecvThread &server, SessionWrapper session, boost::shared_ptr<NetPacket> packet)
{
return MSG_SOCK_INTERNAL_PENDING;
}
@@ -795,8 +806,6 @@ ServerRecvStateFinal::~ServerRecvStateFinal()
int
ServerRecvStateFinal::InternalProcess(ServerRecvThread &server, SessionWrapper session, boost::shared_ptr<NetPacket> packet)
{
Thread::Msleep(10);
return MSG_SOCK_INTERNAL_PENDING;
}
+3
View File
@@ -190,6 +190,9 @@ public:
virtual ~ServerRecvStateNextHand();
// Overwrite default processing
virtual int Process(ServerRecvThread &server);
void SetTimer(const boost::microsec_timer &timer);
protected: