59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright (c) 2022 Dominic Masters
 | |
| // 
 | |
| // This software is released under the MIT License.
 | |
| // https://opensource.org/licenses/MIT
 | |
| 
 | |
| #pragma once
 | |
| #include "PokerPlayer.hpp"
 | |
| 
 | |
| /** The default blind cost for the big blind. */
 | |
| #define POKER_BLIND_BIG_DEFAULT 600
 | |
| /** The default blind cost for the small blind. (Defaults half big blind) */
 | |
| #define POKER_BLIND_SMALL_DEFAULT (POKER_BLIND_BIG_DEFAULT/2)
 | |
| 
 | |
| /** How many cards are dealt for the flop, turn and river */
 | |
| #define POKER_FLOP_CARD_COUNT 3
 | |
| #define POKER_TURN_CARD_COUNT 1
 | |
| #define POKER_RIVER_CARD_COUNT 1
 | |
| 
 | |
| namespace Dawn {
 | |
|   class PokerGame : public SceneItemComponent {
 | |
|     protected:
 | |
|       std::vector<struct Card> deck;
 | |
|       std::vector<struct Card> grave;
 | |
|       std::vector<struct Card> community;
 | |
|       uint8_t dealerIndex;
 | |
|       uint8_t smallBlindIndex;
 | |
|       uint8_t bigBlindIndex;
 | |
|       int32_t smallBlind = POKER_BLIND_SMALL_DEFAULT;
 | |
|       int32_t bigBlind = POKER_BLIND_BIG_DEFAULT;
 | |
| 
 | |
|     public:
 | |
|       std::vector<PokerPlayer*> players;
 | |
|       std::vector<struct PokerPot> pots;
 | |
|       uint8_t betterIndex;
 | |
| 
 | |
|       PokerGame(std::weak_ptr<SceneItem> item);
 | |
| 
 | |
|       void onStart() override;
 | |
| 
 | |
|       void newGame();
 | |
|       void newRound();
 | |
|       void newBettingRound();
 | |
|       void takeBlinds();
 | |
|       void setBlinds(int32_t small, int32_t big);
 | |
|       uint8_t getRemainingBettersCount();
 | |
|       int32_t getCurrentCallValue();
 | |
|       uint8_t getNextBetterIndex();
 | |
|       void setDealer(uint8_t dealer);
 | |
|       void newDealer();
 | |
|       void burnCard();
 | |
|       void dealCard(PokerPlayer *player);
 | |
|       void dealToEveryone(uint8_t count);
 | |
|       void turn(uint8_t count);
 | |
|       uint8_t getCountOfCardsToTurn();
 | |
|       uint8_t getRemainingPlayersCount();
 | |
| 
 | |
|       friend class PokerPlayer;
 | |
|   };
 | |
| } |