/** * 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; //TODO: Fix this whole filee // Reset the UI state. // isHuman = game->poker.bet.better == POKER_PLAYER_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.bet.better; // isHuman = game->poker.bet.better == POKER_PLAYER_HUMAN_INDEX; // // Handle as an AI // if(isHuman) { // turn = game->ui.betTurn; // turnMade = game->ui.betTurnMade; // } else { // turn = pokerTurnGet(&game->poker, game->poker.bet.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.bet.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; }