Made betting work correctly.

This commit is contained in:
2021-08-29 22:03:18 -07:00
parent 954b676f07
commit 063c7b12ed
8 changed files with 72 additions and 11 deletions

View File

@ -65,6 +65,9 @@ void _pokerGameActionBetOnUpdate(
break;
}
// Mark as move made.
player->state |= POKER_PLAYER_STATE_ROUND_MOVE;
// Speak
discussion.poker = game;
discussion.playerCause = game->poker.bet.better;
@ -78,7 +81,7 @@ void _pokerGameActionBetOnUpdate(
void _pokerGameActionBetOnEnd(
queue_t *queue, queueaction_t *action, uint8_t i
) {
uint8_t j;
uint8_t j, k, p;
pokerplayer_t *player;
queueaction_t *next;
pokerdiscussiondata_t discussion;
@ -90,18 +93,28 @@ void _pokerGameActionBetOnEnd(
playersPending = false;
// Check if each player needs to action.
k = POKER_BET_ROUND_PLAYER_DEFAULT(&game->poker);
for(j = 0; j < POKER_PLAYER_COUNT; j++) {
player = game->poker.players + j;
if(player->state & POKER_PLAYER_STATE_FOLDED) continue;
p = ((k + j) % POKER_PLAYER_COUNT);
player = game->poker.players + p;
if((player->state & POKER_PLAYER_STATE_FOLDED) != 0) continue;
if(player->state & POKER_PLAYER_STATE_OUT) continue;
if(player->currentBet >= game->poker.bet.currentBet) continue;
if(player->state & POKER_PLAYER_STATE_ROUND_MOVE) {
if(player->currentBet >= game->poker.bet.currentBet && player) continue;
}
// Yes, this player needs to check, raise or fold
game->poker.bet.better = p;
pokerGameActionBetAdd(game);
playersPending = true;
break;
}
// Restack
pokerGameActionRestackAdd(game);
// Are we waiting on any players?
if(playersPending) return;

View File

@ -12,7 +12,7 @@ void _pokerGameActionRestackOnStart(
) {
pokergame_t *game = (pokergame_t *)action->data;
printf("Restacking\n");
// pokerGameQueueRestack(game);
pokerGameQueueRestack(game);
queueNext(queue);
}

View File

@ -25,7 +25,13 @@ void pokerBetPlayer(poker_t *poker, pokerplayer_t *player, int32_t chips) {
}
void pokerBetResetBetter(poker_t *poker) {
poker->bet.better = (poker->roundSmallBlind + 1) % POKER_PLAYER_COUNT;
uint8_t i;
pokerplayer_t *player;
for(i = 0; i < POKER_PLAYER_COUNT; i++) {
player = poker->players + i;
player->state = flagOff(player->state, POKER_PLAYER_STATE_ROUND_MOVE);
}
poker->bet.better = POKER_BET_ROUND_PLAYER_DEFAULT(poker);
}
void pokerBetTakeBlinds(poker_t *poker) {