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

#pragma once
#include <dawn/dawn.h>
#include "card.h"
#include "player.h"

/**
 * Initializes/Resets a dealer state.
 * 
 * @param dealer Dealer's state to reset.
 */
void pokerDealerInit(pokerdealer_t *dealer);

/**
 * Turns over cards from the deck onto the table (from the deck into the dealer
 * hand)
 * 
 * @param dealer Poker dealer instance.
 * @param count Count of cards to deal.
 */
void pokerDealerTurn(pokerdealer_t *dealer, uint8_t count);

/**
 * Burns a set of cards off the top of the deck into the graveyard.
 * 
 * @param dealer Poker dealer instance.
 * @param count Count of cards to burn.
 */
void pokerDealerBurn(pokerdealer_t *dealer, uint8_t count);

/**
 * Deal a card to a player.
 * 
 * @param dealer Poker dealer instance.
 * @param player Poker player to deal to.
 */
void pokerDealerDeal(pokerdealer_t *dealer, pokerplayer_t *player);

/**
 * Deal card(s) to every active player.
 * 
 * @param poker Poker game instance.
 * @param count Count of cards to deal.
 */
void pokerDealerDealAll(poker_t *poker, uint8_t count);