Dawn/src/poker/turn.c
2021-08-30 09:38:24 -07:00

51 lines
1.2 KiB
C

/**
* Copyright (c) 2021 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#include "turn.h"
pokerturn_t pokerTurnGet(poker_t *poker, uint8_t playerIndex) {
pokerturn_t turn;
pokerplayer_t *player;
bool canCheck;
player = poker->players + playerIndex;
// Can the player do anything?
turn.type = POKER_TURN_TYPE_OUT;
if(player->state & POKER_PLAYER_STATE_FOLDED) return turn;
if(player->state & POKER_PLAYER_STATE_OUT) return turn;
canCheck = player->currentBet >= poker->bet.currentBet;
if(canCheck) {
turn.type = POKER_TURN_TYPE_CHECK;
return turn;
}
// I have nfi
turn.type = POKER_TURN_TYPE_BET;
turn.chips = poker->bet.currentBet - player->currentBet;
turn.confidence = 1;
return turn;
}
void pokerTurnAction(poker_t *poker, pokerplayer_t *player, pokerturn_t *turn) {
switch(turn->type) {
case POKER_TURN_TYPE_BET:
case POKER_TURN_TYPE_CALL:
case POKER_TURN_TYPE_ALL_IN:
pokerBetPlayer(poker, player, turn->chips);
break;
case POKER_TURN_TYPE_FOLD:
player->state |= POKER_PLAYER_STATE_FOLDED;
break;
}
player->state |= POKER_PLAYER_STATE_ROUND_MOVE;
}