/** * Copyright (c) 2021 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "../libs.h" #include "player.h" #include "dealer.h" /** Size of the FULL hand used to calculate a winning. */ #define POKER_WINNING_FULL_SIZE POKER_PLAYER_HAND+POKER_DEALER_HAND /** How many cards make a winning set */ #define POKER_WINNING_SET_SIZE 5 /** Winning Types */ #define POKER_WINNING_TYPE_NULL 0x00 #define POKER_WINNING_TYPE_ROYAL_FLUSH 0x01 #define POKER_WINNING_TYPE_STRAIGHT_FLUSH 0x02 #define POKER_WINNING_TYPE_FOUR_OF_A_KIND 0x03 #define POKER_WINNING_TYPE_FULL_HOUSE 0x04 #define POKER_WINNING_TYPE_FLUSH 0x05 #define POKER_WINNING_TYPE_STRAIGHT 0x06 #define POKER_WINNING_TYPE_THREE_OF_A_KIND 0x07 #define POKER_WINNING_TYPE_TWO_PAIR 0x08 #define POKER_WINNING_TYPE_PAIR 0x09 #define POKER_WINNNIG_TYPE_HIGH_CARD 0x0A /** Holds information about a player's winning state */ typedef struct { /** The full set of both the dealer and player's hand */ card_t full[POKER_WINNING_FULL_SIZE]; uint8_t fullSize; /** Holds the winning set */ card_t set[POKER_WINNING_SET_SIZE]; uint8_t setSize; /** Winning Type */ uint8_t type; /** If there was a kicker card it will be here, otherwise -1 for no kicker */ card_t kicker; } pokerplayerwinning_t; typedef struct { /** Winning States */ pokerplayerwinning_t winnings[POKER_PLAYER_COUNT]; uint8_t winners[POKER_PLAYER_COUNT]; uint8_t winnerCount; } pokerwinner_t;