Dawn/backup/poker/dealer.h

76 lines
1.9 KiB
C

// 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"
#include "player.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
/** Which VN Character index is the dealer */
#define POKER_DEALER_INDEX POKER_PLAYER_HUMAN_INDEX
/** 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;
/**
* 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 dealer Poker dealer instance.
* @param players Array of poker players.
* @param count Count of cards to deal.
*/
void pokerDealerDealAll(
pokerdealer_t *dealer, pokerplayer_t *players, uint8_t count
);