91 lines
2.3 KiB
C

/**
* Copyright (c) 2021 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#include "bet.h"
void _pokerGameActionBetOnStart(
queue_t *queue, queueaction_t *action, uint8_t i
) {
bool isHuman;
pokergame_t *game = (pokergame_t *)action->data;
// Reset the UI state.
isHuman = game->poker.better == POKER_WORLD_HUMAN_INDEX;
// if(isHuman) pokerUiBetShow(&game->ui);
}
void _pokerGameActionBetOnUpdate(
queue_t *queue, queueaction_t *action, uint8_t i
) {
// Restack
bool isHuman;
bool turnMade = false;
pokerturn_t turn;
pokergame_t *game = (pokergame_t *)action->data;
pokerplayer_t *player;
pokerdiscussiondata_t discussion;
// Are they human?
player = game->poker.players + game->poker.better;
isHuman = game->poker.better == POKER_WORLD_HUMAN_INDEX;
// Handle as an AI
if(isHuman) {
// turn = game->ui.betTurn;
// turnMade = game->ui.betTurnMade;
} else {
turn = pokerTurnGetForPlayer(&game->poker, game->poker.better);
turnMade = true;
}
// Now decide if we should do something.
if(!turnMade) return;
// Perform the action
// pokerTurnAction(&game->poker, player, &turn);
// Speak
// discussion.reason = pokerDiscussionGetTypeFromTurnType(turn.type);
discussion.poker = game;
discussion.playerCause = game->poker.better;
pokerDiscussionQueue(&discussion);
// Next.
queueNext(queue);
}
void _pokerGameActionBetOnEnd(
queue_t *queue, queueaction_t *action, uint8_t i
) {
pokergame_t *game = (pokergame_t *)action->data;
// // Get which player is remaining to move.
// game->poker.bet.better = pokerBetGetRemainingPlayer(
// &game->poker.bet, game->poker.players, game->poker.roundSmallBlind
// );
// // Restack
// pokerGameActionRestackAdd(game);
// // Are we waiting on any players?
// if(game->poker.bet.better != 0xFF) {
// pokerGameActionLookAdd(game, game->poker.bet.better);
// pokerGameActionBetAdd(game);
// return;
// }
// Not waiting, do next action.
pokerGameActionFlopAdd(game);
}
queueaction_t * pokerGameActionBetAdd(pokergame_t *game) {
queueaction_t *action = pokerGameActionAdd(game);
action->onStart = &_pokerGameActionBetOnStart;
action->onUpdate = &_pokerGameActionBetOnUpdate;
action->onEnd = &_pokerGameActionBetOnEnd;
return action;
}