/**
 * Copyright (c) 2021 Dominic Masters
 * 
 * This software is released under the MIT License.
 * https://opensource.org/licenses/MIT
 */

#pragma once
#include "../libs.h"
#include "../util/flags.h"
#include "../util/array.h"
#include "../util/math.h"
#include "bet.h"
#include "card.h"
#include "dealer.h"
#include "fuck.h"
#include "player.h"
#include "pot.h"
#include "turn.h"
#include "winner.h"

// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fucked if I know

/**
 * Initialize the poker game instance.
 * 
 * @param poker Poker game instance.
 */
void pokerInit(poker_t *poker);

/**
 * Set the game's current blinds.
 * 
 * @param poker Poker game instance.
 * @param blindSmall Small blind value.
 * @param blindBig Big blind value.
 */
void pokerSetBlinds(poker_t *poker, int32_t blindSmall, int32_t blindBig);

/**
 * Reset the poker game instance for the new round.
 * 
 * @param poker Poker game instance.
 */
void pokerResetRound(poker_t *poker);

/**
 * Reset the poker betting round.
 * 
 * @param poker Poker game instance to reset for.
 */
void pokerResetBettingRound(poker_t *poker);

/**
 * Take the blinds from the blind players.
 * 
 * @param poker Poker game instance.
 */
void pokerTakeBlinds(poker_t *poker);


/**
 * Gets the count of players still currently left in the round.
 * 
 * @param poker Poker game instance.
 * @return The count of players in the round.
 */
uint8_t pokerInRoundGetCount(poker_t *poker);