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

#pragma once
#include "../libs.h"
#include "card.h"

/** How many cards the dealer can hold in their hand */
#define POKER_DEALER_HAND_SIZE 5

/** How many cards the grave can hold */
#define POKER_DEALER_GRAVE_SIZE CARD_DECK_SIZE

/** Representation of the dealer state */
typedef struct {
  /** Current Card Deck */
  card_t deck[CARD_DECK_SIZE];
  uint8_t deckSize;

  /** Dealer Hand */
  card_t cards[POKER_DEALER_HAND_SIZE];
  uint8_t cardsFacing;

  /** Card grave (where spent cards go when burned */
  card_t grave[POKER_DEALER_GRAVE_SIZE];
  uint8_t graveSize;
} pokerdealer_t;