/** * Copyright (c) 2021 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #include "poker.h" void pokerGameWin(poker_t *poker) { uint8_t i; pokerplayerwinning_t *winning; pokerplayer_t *player; int32_t chipsRounded, chipsDifferent; float chipsEach; poker->state = POKER_STATE_DECIDING_WINNER; // Get the chips each. chipsEach = poker->bet.pot / ((float)poker->winner.winnerCount); // Now work out the rounded offset chips. chipsRounded = (int32_t)mathFloor(chipsEach); chipsDifferent = poker->bet.pot - chipsRounded; // Let's start by rewarding the winnings to the players. for(i = 0; i < poker->winner.winnerCount; i++) { player = poker->players + poker->winner.winners[i]; winning = poker->winner.winnings + i; player->chips += chipsRounded; if(i == 0) player->chips += chipsDifferent; } // Now kill the players who are terrible low life gamblers. for(i = 0; i < POKER_PLAYER_COUNT; i++) { player = poker->players + i; if(player->chips <= 0) player->state &= POKER_PLAYER_STATE_OUT; } }