// Copyright (c) 2021 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "../libs.h" /** How many chips each player has by defautl */ #define POKER_BET_PLAYER_CHIPS_DEFAULT 10000 /** The default blind cost for the big blind. */ #define POKER_BET_BLIND_BIG_DEFAULT 600 /** The default blind cost for the small blind. (Defaults half big blind) */ #define POKER_BET_BLIND_SMALL_DEFAULT (POKER_BET_BLIND_BIG_DEFAULT/2) /** * The default betting player for the round. * * @param poker Pointer to the poker instance. * @return The Poker round default betting player. */ #define POKER_BET_ROUND_PLAYER_DEFAULT(poker) ( \ ((poker)->roundSmallBlind + 1) % POKER_PLAYER_COUNT \ ) typedef struct { /** Blinds */ int32_t blindSmall, blindBig; /** How big the current bet is for the round. */ int32_t currentBet; /** For Betting round, which player is currently betting */ uint8_t better; /** Current pot of chips */ int32_t pot; } pokerbet_t; /** * Initializes/resets the poker bet context. * * @param bet Poker bet instance. */ void pokerBetInit(pokerbet_t *bet); /** * Resets the bet state (for a new round). * * @param bet */ void pokerBetReset(pokerbet_t *bet); /** * Let a player bet chips into the pot. * * @param poker Poker game instance. * @param player Poker player instance. * @param chips Chips to bet. */ void pokerBetPlayer(poker_t *poker, pokerplayer_t *player, int32_t chips); /** * Reset the current better back to the round/turns default. The better will * always be the player to the right of the small blind player. * * @param poker Poker game to update for. */ void pokerBetResetBetter(poker_t *poker); /** * Returns whether or not a player can bet for the current round. * * @param bet Game bet state. * @param player Player to check. * @return True if the player can bet, otherwise false. */ bool pokerBetPlayerCanBet(pokerbet_t *bet, pokerplayer_t *player); /** * Returns the index of the first player that remains to bet for the current * round. * * @param poker Poker instance to fetch from. * @return The player index of the remaining player, otherwise 0xFF. */ uint8_t pokerBetGetRemainingPlayer(poker_t *poker); /** * Takes the current blinds from the correct players. * * @param poker Poker game to take the blinds from. */ void pokerBetTakeBlinds(poker_t *poker);