/** * Copyright (c) 2021 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #include "bet.h" void pokerRoundBetPlayerNext(poker_t *poker) { // Go to next player, keep contained. poker->roundBetCurrent = (poker->roundBetCurrent + 1) % POKER_PLAYER_COUNT; // Did we go full circle? if(poker->roundBetCurrent == poker->roundSmallBlind) { if(poker->round == POKER_ROUND_BET3) { pokerWinnerInit(poker); return; } pokerFlopInit(poker); return; } // Init the next player pokerRoundBetPlayerInit(poker, poker->players + poker->roundBetCurrent); } void pokerRoundBetPlayerInit(poker_t *poker, pokerplayer_t *player) { // Check the player state (to see if we even can init, e.g. folded/not) if(!pokerPlayerIsAlive(player)) { pokerRoundBetPlayerNext(poker); return; } printf("Betting round player %u\n", poker->roundBetCurrent); if(pokerPlayerIsHuman(poker, player)) { pokerRoundBetPlayerNext(poker); return; } pokerRoundBetPlayerNext(poker); } void pokerRoundBetPlayerUpdate(poker_t *poker, pokerplayer_t *player) { } void pokerRoundBetInit(poker_t *poker) { printf("Betting round start\n"); if(poker->round == POKER_ROUND_DEAL) { poker->round = POKER_ROUND_BET0; printf("Betting 0\n"); } else if(poker->round == POKER_ROUND_FLOP) { poker->round = POKER_ROUND_BET1; printf("Betting 1\n"); } else if(poker->round == POKER_ROUND_TURN) { poker->round = POKER_ROUND_BET2; printf("Betting 2\n"); } else if(poker->round == POKER_ROUND_RIVER) { poker->round = POKER_ROUND_BET3; printf("Betting 3\n"); } // Set the inital player poker->roundBetCurrent = poker->roundSmallBlind; pokerRoundBetPlayerInit(poker, poker->players+poker->roundBetCurrent); } void pokerRoundBetUpdate(poker_t *poker) { // Take the current player pokerRoundBetPlayerUpdate(poker, poker->players + poker->roundBetCurrent); }