Fixed bug when folding after raising.
This commit is contained in:
@@ -175,8 +175,8 @@ Player Action:
|
|||||||
0x05 - Raise
|
0x05 - Raise
|
||||||
0x06 - All in
|
0x06 - All in
|
||||||
Player Bet:
|
Player Bet:
|
||||||
0 (ignored) - states fold, check, call, all in
|
0 (ignored) - states fold, check,
|
||||||
> 0 - states bet, raise
|
> 0 - states call, bet, raise, all in
|
||||||
|
|
||||||
Server Notification: Player's Action Done
|
Server Notification: Player's Action Done
|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,11 @@ ClientThread::SendPlayerAction()
|
|||||||
NetPacketPlayersAction::Data actionData;
|
NetPacketPlayersAction::Data actionData;
|
||||||
actionData.gameState = static_cast<GameState>(GetGame()->getCurrentHand()->getActualRound());
|
actionData.gameState = static_cast<GameState>(GetGame()->getCurrentHand()->getActualRound());
|
||||||
actionData.playerAction = static_cast<PlayerAction>(GetGame()->getPlayerArray()[0]->getMyAction());
|
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);
|
static_cast<NetPacketPlayersAction *>(action.get())->SetData(actionData);
|
||||||
// The sender is thread-safe, so just dump the packet.
|
// The sender is thread-safe, so just dump the packet.
|
||||||
GetSender().Send(GetContext().GetSocket(), action);
|
GetSender().Send(GetContext().GetSocket(), action);
|
||||||
|
|||||||
@@ -670,10 +670,14 @@ ServerRecvStateWaitPlayerAction::InternalProcess(ServerRecvThread &server, Sessi
|
|||||||
assert(tmpPlayer); // TODO throw exception
|
assert(tmpPlayer); // TODO throw exception
|
||||||
|
|
||||||
tmpPlayer->setMyAction(actionData.playerAction);
|
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))
|
if (tmpPlayer->getMySet() > GetHighestSet(curGame))
|
||||||
SetHighestSet(curGame, tmpPlayer->getMySet());
|
SetHighestSet(curGame, tmpPlayer->getMySet());
|
||||||
|
}
|
||||||
|
|
||||||
boost::shared_ptr<NetPacket> notifyActionDone(new NetPacketPlayersActionDone);
|
boost::shared_ptr<NetPacket> notifyActionDone(new NetPacketPlayersActionDone);
|
||||||
NetPacketPlayersActionDone::Data actionDoneData;
|
NetPacketPlayersActionDone::Data actionDoneData;
|
||||||
@@ -766,12 +770,19 @@ ServerRecvStateNextHand::SetTimer(const boost::microsec_timer &timer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
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)
|
if (m_delayTimer.elapsed().seconds() >= SERVER_NEXT_HAND_DELAY_SEC)
|
||||||
server.SetState(ServerRecvStateStartHand::Instance());
|
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;
|
return MSG_SOCK_INTERNAL_PENDING;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -795,8 +806,6 @@ ServerRecvStateFinal::~ServerRecvStateFinal()
|
|||||||
int
|
int
|
||||||
ServerRecvStateFinal::InternalProcess(ServerRecvThread &server, SessionWrapper session, boost::shared_ptr<NetPacket> packet)
|
ServerRecvStateFinal::InternalProcess(ServerRecvThread &server, SessionWrapper session, boost::shared_ptr<NetPacket> packet)
|
||||||
{
|
{
|
||||||
Thread::Msleep(10);
|
|
||||||
|
|
||||||
return MSG_SOCK_INTERNAL_PENDING;
|
return MSG_SOCK_INTERNAL_PENDING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -190,6 +190,9 @@ public:
|
|||||||
|
|
||||||
virtual ~ServerRecvStateNextHand();
|
virtual ~ServerRecvStateNextHand();
|
||||||
|
|
||||||
|
// Overwrite default processing
|
||||||
|
virtual int Process(ServerRecvThread &server);
|
||||||
|
|
||||||
void SetTimer(const boost::microsec_timer &timer);
|
void SetTimer(const boost::microsec_timer &timer);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
Reference in New Issue
Block a user