Moved code from card to poker
This commit is contained in:
99
include/dawn/poker/card.h
Normal file
99
include/dawn/poker/card.h
Normal file
@ -0,0 +1,99 @@
|
||||
/**
|
||||
* Copyright (c) 2021 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "../libs.h"
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Cards
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Aces
|
||||
#define CARD_CLUBS_ACE 0x00
|
||||
#define CARD_CLUBS_TWO 0x01
|
||||
#define CARD_CLUBS_THREE 0x02
|
||||
#define CARD_CLUBS_FOUR 0x03
|
||||
#define CARD_CLUBS_FIVE 0x04
|
||||
#define CARD_CLUBS_SIX 0x05
|
||||
#define CARD_CLUBS_SEVEN 0x06
|
||||
#define CARD_CLUBS_EIGHT 0x07
|
||||
#define CARD_CLUBS_NINE 0x08
|
||||
#define CARD_CLUBS_TEN 0x09
|
||||
#define CARD_CLUBS_JACK 0x0A
|
||||
#define CARD_CLUBS_QUEEN 0x0B
|
||||
#define CARD_CLUBS_KING 0x0C
|
||||
|
||||
// Diamonds
|
||||
#define CARD_DIAMONDS_ACE 0x0D
|
||||
#define CARD_DIAMONDS_TWO 0x0E
|
||||
#define CARD_DIAMONDS_THREE 0x0F
|
||||
#define CARD_DIAMONDS_FOUR 0x10
|
||||
#define CARD_DIAMONDS_FIVE 0x11
|
||||
#define CARD_DIAMONDS_SIX 0x12
|
||||
#define CARD_DIAMONDS_SEVEN 0x13
|
||||
#define CARD_DIAMONDS_EIGHT 0x14
|
||||
#define CARD_DIAMONDS_NINE 0x15
|
||||
#define CARD_DIAMONDS_TEN 0x16
|
||||
#define CARD_DIAMONDS_JACK 0x17
|
||||
#define CARD_DIAMONDS_QUEEN 0x18
|
||||
#define CARD_DIAMONDS_KING 0x19
|
||||
|
||||
// Hearts
|
||||
#define CARD_HEARTS_ACE 0x1A
|
||||
#define CARD_HEARTS_TWO 0x1B
|
||||
#define CARD_HEARTS_THREE 0x1C
|
||||
#define CARD_HEARTS_FOUR 0x1D
|
||||
#define CARD_HEARTS_FIVE 0x1E
|
||||
#define CARD_HEARTS_SIX 0x1F
|
||||
#define CARD_HEARTS_SEVEN 0x20
|
||||
#define CARD_HEARTS_EIGHT 0x21
|
||||
#define CARD_HEARTS_NINE 0x22
|
||||
#define CARD_HEARTS_TEN 0x23
|
||||
#define CARD_HEARTS_JACK 0x24
|
||||
#define CARD_HEARTS_QUEEN 0x25
|
||||
#define CARD_HEARTS_KING 0x26
|
||||
|
||||
// Spades
|
||||
#define CARD_SPADES_ACE 0x27
|
||||
#define CARD_SPADES_TWO 0x28
|
||||
#define CARD_SPADES_THREE 0x29
|
||||
#define CARD_SPADES_FOUR 0x2A
|
||||
#define CARD_SPADES_FIVE 0x2B
|
||||
#define CARD_SPADES_SIX 0x2C
|
||||
#define CARD_SPADES_SEVEN 0x2D
|
||||
#define CARD_SPADES_EIGHT 0x2E
|
||||
#define CARD_SPADES_NINE 0x2F
|
||||
#define CARD_SPADES_TEN 0x30
|
||||
#define CARD_SPADES_JACK 0x31
|
||||
#define CARD_SPADES_QUEEN 0x32
|
||||
#define CARD_SPADES_KING 0x33
|
||||
|
||||
// Special Cards
|
||||
#define CARD_RED_JOKER 0x34
|
||||
#define CARD_BLACK_JOKER 0x35
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Suits
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#define CARD_SUIT_CLUBS 0x01
|
||||
#define CARD_SUIT_DIAMONDS 0x02
|
||||
#define CARD_SUIT_HEARTS 0x03
|
||||
#define CARD_SUIT_SPADES 0x04
|
||||
|
||||
|
||||
/** Count of cards in each suit */
|
||||
#define CARD_COUNT_PER_SUIT 13
|
||||
|
||||
/** Standard Card Deck Size */
|
||||
#define CARD_DECK_SIZE 52
|
||||
|
||||
/** Full Card Deck Size */
|
||||
#define CARD_DECK_SIZE_FULL 54
|
||||
|
||||
/** Type Representing a card's id */
|
||||
typedef uint8_t card_t;
|
154
include/dawn/poker/holdem.h
Normal file
154
include/dawn/poker/holdem.h
Normal file
@ -0,0 +1,154 @@
|
||||
/**
|
||||
* Copyright (c) 2021 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "card.h"
|
||||
#include "../display/render.h"
|
||||
#include "../display/spritebatch.h"
|
||||
#include "../display/texture.h"
|
||||
#include "../display/tileset.h"
|
||||
#include "../display/framebuffer.h"
|
||||
|
||||
/** How many cards a player can hold in their hand */
|
||||
#define HOLDEM_PLAYER_HAND 2
|
||||
/** How many cards the dealer can hold in their hand */
|
||||
#define HOLDEM_DEALER_HAND 5
|
||||
/** How many players in a holdem game (excludes dealer) */
|
||||
#define HOLDEM_PLAYER_COUNT 5
|
||||
|
||||
/** State for whether or not a player has folded */
|
||||
#define HOLDEM_STATE_FOLDED 0x01
|
||||
/** State for whether or not a player is showing their hand */
|
||||
#define HOLDEM_STATE_SHOWING 0x02
|
||||
|
||||
/** Size of the Render frames */
|
||||
#define HOLDEM_GAME_FRAME_HEIGHT RENDER_STATE.height
|
||||
#define HOLDEM_GAME_FRAME_LEFT_WIDTH RENDER_STATE.width*0.65
|
||||
#define HOLDEM_GAME_FRAME_RIGHT_WIDTH (\
|
||||
RENDER_STATE.width - HOLDEM_GAME_FRAME_LEFT_WIDTH - 1\
|
||||
)
|
||||
|
||||
/** Size of the rendered card */
|
||||
#define HOLDEM_GAME_CARD_WIDTH 0.04
|
||||
#define HOLDEM_GAME_CARD_HEIGHT HOLDEM_GAME_CARD_WIDTH/2.5*3.5
|
||||
#define HOLDEM_GAME_CARD_DEPTH 0.0005
|
||||
#define HOLDEM_GAME_CARD_PADDING 0.0125
|
||||
|
||||
/** Various seats at the table that people can sit */
|
||||
#define HOLDEM_GAME_SEAT_DEALER 0x00
|
||||
#define HOLDEM_GAME_SEAT_PLAYER0 0x04
|
||||
#define HOLDEM_GAME_SEAT_PLAYER1 0x06
|
||||
#define HOLDEM_GAME_SEAT_PLAYER2 0x05
|
||||
#define HOLDEM_GAME_SEAT_PLAYER3 0x03
|
||||
#define HOLDEM_GAME_SEAT_PLAYER4 0x02
|
||||
|
||||
/** Macro for the angle (Yaw) that the seat has */
|
||||
#define HOLDEM_GAME_SEAT_ANGLE(seat) mathDeg2Rad(-45 * seat)
|
||||
|
||||
#define HOLDEM_GAME_CARD_SLOT_HAND0 0x00
|
||||
#define HOLDEM_GAME_CARD_SLOT_HAND1 0x01
|
||||
#define HOLDEM_GAME_CARD_SLOT_FLOP0 0x02
|
||||
#define HOLDEM_GAME_CARD_SLOT_FLOP1 0x03
|
||||
#define HOLDEM_GAME_CARD_SLOT_FLOP2 0x04
|
||||
#define HOLDEM_GAME_CARD_SLOT_FLOP3 0x05
|
||||
#define HOLDEM_GAME_CARD_SLOT_FLOP4 0x06
|
||||
|
||||
/** How many actions the queue can hold */
|
||||
#define HOLDEM_GAME_ACTION_QUEUE_SIZE 12
|
||||
|
||||
/** How much data (in length of sizeof size_t) each action has available */
|
||||
#define HOLDEM_GAME_ACTION_DATA_SIZE 256
|
||||
|
||||
|
||||
/** Texas Hold'em Player State */
|
||||
typedef struct {
|
||||
/** Cards in the players' hand */
|
||||
card_t cards[HOLDEM_PLAYER_HAND];
|
||||
uint8_t cardCount;
|
||||
|
||||
/** Current State of player */
|
||||
uint8_t state;
|
||||
|
||||
/** Chips in players' posession */
|
||||
uint32_t chips;
|
||||
|
||||
/** Current bet in current round player has placed */
|
||||
uint32_t currentBet;
|
||||
} holdemplayer_t;
|
||||
|
||||
/** Callback for actions to use */
|
||||
typedef void (*holdemActionCallback)(int32_t index, void *data);
|
||||
|
||||
/** Texas Hold'em Game action that can be queued and executed */
|
||||
typedef struct {
|
||||
holdemActionCallback init;
|
||||
holdemActionCallback update;
|
||||
holdemActionCallback dispose;
|
||||
} holdemaction_t;
|
||||
|
||||
typedef struct {
|
||||
/** Current Card Deck */
|
||||
card_t deck[CARD_DECK_SIZE];
|
||||
/** Count of cards in the deck */
|
||||
uint8_t deckSize;
|
||||
|
||||
/** How big is the current small blind */
|
||||
uint32_t blindSmall;
|
||||
/** How big is the current big blind */
|
||||
uint32_t blindBig;
|
||||
/** Current round pot */
|
||||
uint32_t pot;
|
||||
|
||||
/** Cards that have been dealt */
|
||||
card_t cards[HOLDEM_DEALER_HAND];
|
||||
/** How many dealt cards are face up */
|
||||
uint8_t cardsFacing;
|
||||
|
||||
/** Player States */
|
||||
holdemplayer_t players[HOLDEM_PLAYER_COUNT];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
texture_t *kagamiTexture;
|
||||
tileset_t *kagamiTileset;
|
||||
primitive_t *kagamiQuad;
|
||||
|
||||
/** Action and Allocated Data Space */
|
||||
holdemaction_t actionQueue[HOLDEM_GAME_ACTION_QUEUE_SIZE];
|
||||
void *actionData[HOLDEM_GAME_ACTION_DATA_SIZE*HOLDEM_GAME_ACTION_QUEUE_SIZE];
|
||||
bool actionInitState[HOLDEM_GAME_ACTION_DATA_SIZE];
|
||||
|
||||
/** Poker Table */
|
||||
primitive_t *tablePrimitive;
|
||||
texture_t *tableTexture;
|
||||
|
||||
texture_t *cardTexture;
|
||||
tileset_t *cardTileset;
|
||||
primitive_t *cardPrimitive;
|
||||
|
||||
texture_t *fontTexture;
|
||||
tileset_t *fontTileset;
|
||||
spritebatch_t *fontBatch;
|
||||
|
||||
/** Game Render Frames */
|
||||
framebuffer_t *frameLeft;
|
||||
framebuffer_t *frameRight;
|
||||
primitive_t *quadLeft;
|
||||
primitive_t *quadRight;
|
||||
camera_t cameraLeft;
|
||||
camera_t cameraRight;
|
||||
} holdemgame_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
float x, z;
|
||||
float yaw;
|
||||
} holdemrenderposition_t;
|
||||
|
||||
extern holdemgame_t HOLDEM_GAME_STATE;
|
Reference in New Issue
Block a user