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

#pragma once
#include <dawn/dawn.h>

/**
 * Fills a deck with a standard set of cards (unshuffled)
 * 
 * @param deck Deck to fill. Must be at least 52 elements.
 */
void cardDeckFill(card_t *deck);

/**
 * Shuffles the given hand or deck.
 * 
 * @param hand The hand/deck to shuffle.
 * @param cardCount The amount of cards that are in that deck/hand.
 */
void cardShuffle(card_t *hand, uint8_t cardCount);

/**
 * Deals a card of the top of the deck into the given hand.
 * 
 * @param deck Deck to take from.
 * @param hand Hand to put into.
 * @param deckSize Size of the current deck.
 * @param handSize Size of the current hand.
 */
void cardDeal(card_t *deck, card_t *hand, uint8_t deckSize, uint8_t handSize);