Testing some UI interactions.

This commit is contained in:
2021-09-20 11:42:53 -07:00
parent b3e06a3837
commit c0ce11a44a
5 changed files with 117 additions and 21 deletions

View File

@ -7,10 +7,10 @@
#include "turn.h"
pokerturn_t pokerTurnGet(poker_t *poker, uint8_t playerIndex) {
pokerturn_t turn;
pokerplayer_t *player;
bool canCheck;
player = poker->players + playerIndex;
@ -19,9 +19,7 @@ pokerturn_t pokerTurnGet(poker_t *poker, uint8_t playerIndex) {
if(player->state & POKER_PLAYER_STATE_FOLDED) return turn;
if(player->state & POKER_PLAYER_STATE_OUT) return turn;
canCheck = player->currentBet >= poker->bet.currentBet;
if(canCheck) {
if(pokerTurnCanPlayerCheck(poker, playerIndex)) {
turn.type = POKER_TURN_TYPE_CHECK;
return turn;
}
@ -42,10 +40,42 @@ void pokerTurnAction(poker_t *poker, pokerplayer_t *player, pokerturn_t *turn) {
pokerBetPlayer(poker, player, turn->chips);
break;
case POKER_TURN_TYPE_CHECK:
break;
case POKER_TURN_TYPE_FOLD:
player->state |= POKER_PLAYER_STATE_FOLDED;
break;
}
player->state |= POKER_PLAYER_STATE_ROUND_MOVE;
}
pokerturn_t pokerTurnFold(poker_t *poker, uint8_t player) {
pokerturn_t turn;
turn.type = POKER_TURN_TYPE_FOLD;
return turn;
}
void pokerTurnCheck(poker_t *poker, uint8_t player) {
pokerturn_t turn;
turn.type = POKER_TURN_TYPE_CHECK;
turn.chips = 0;
return turn;
}
void pokerTurnCall(poker_t *poker, uint8_t playerIndex) {
pokerturn_t turn;
pokerplayer_t *player;
bool canCheck;
player = poker->players + playerIndex;
turn.type = POKER_TURN_TYPE_CHECK;
turn.chips = poker->bet.currentBet - player->chips;
return turn;
}
bool pokerTurnCanPlayerCheck(poker_t *poker, uint8_t playerIndex) {
return (poker->players + playerIndex)->currentBet >= poker->bet.currentBet;
}

View File

@ -35,6 +35,15 @@ typedef struct {
*/
pokerturn_t pokerTurnGet(poker_t *poker, uint8_t playerIndex);
/**
* Return a turn action for the given player to fold.
*
* @param poker Poker game instance.
* @param player Player index.
* @return A turn for a fold action.
*/
pokerturn_t pokerTurnFold(poker_t *poker, uint8_t player);
/**
* Perform the turn's action.
*
@ -42,4 +51,14 @@ pokerturn_t pokerTurnGet(poker_t *poker, uint8_t playerIndex);
* @param player Player instance.
* @param turn Turn to action.
*/
void pokerTurnAction(poker_t *poker, pokerplayer_t *player, pokerturn_t *turn);
void pokerTurnAction(poker_t *poker, pokerplayer_t *player, pokerturn_t *turn);
/**
* Determine whether or not a player CAN check, given the current max bet and
* the players current bet.
*
* @param poker Poker game instance.
* @param playerIndex Poker player index.
* @return True if the player can check, false if they need to call first.
*/
bool pokerTurnCanPlayerCheck(poker_t *poker, uint8_t playerIndex);