93 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|  * Copyright (c) 2021 Dominic Masters
 | |
|  * 
 | |
|  * This software is released under the MIT License.
 | |
|  * https://opensource.org/licenses/MIT
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| #include "card.h"
 | |
| #include "player.h"
 | |
| #include "render.h"
 | |
| #include "action.h"
 | |
| #include "../display/render.h"
 | |
| #include "../display/spritebatch.h"
 | |
| #include "../display/texture.h"
 | |
| #include "../display/tileset.h"
 | |
| #include "../display/framebuffer.h"
 | |
| 
 | |
| /** How many cards the dealer can hold in their hand */
 | |
| #define HOLDEM_DEALER_HAND 5
 | |
| 
 | |
| /** 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
 | |
| 
 | |
| 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 */
 | |
|   pokerplayer_t players[POKER_PLAYER_COUNT];
 | |
| 
 | |
| 
 | |
|   texture_t *kagamiTexture;
 | |
|   tileset_t *kagamiTileset;
 | |
|   primitive_t *kagamiQuad;
 | |
| 
 | |
|   /** Action and Allocated Data Space */
 | |
|   pokeraction_t actionQueue[POKER_ACTION_QUEUE_SIZE];
 | |
|   void *actionData[POKER_ACTION_DATA_SIZE*POKER_ACTION_QUEUE_SIZE];
 | |
|   bool actionInitState[POKER_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;
 | |
| } pokergame_t;
 | |
| 
 | |
| extern pokergame_t POKER_STATE; |