@botpoker/engine-holdem
Version:
Texas Hold'em poker engine
47 lines (33 loc) • 1.38 kB
JavaScript
;
const task = require("../task");
const next = require("../utils/next-player");
const isRunning = require("../utils/is-tournament-running");
const PlayerStates = require("../../../domain/player/states");
const Task = Object.create(task);
Task.name = "Assign Dealer button";
Task.shouldRun = isRunning;
Task.run =
(_, { gamestate }) => {
if (gamestate.handProgressiveId === 1) {
// It tracks how many times the dealer button
// has passed from its initial position
gamestate.dealerButtonRound = 0;
const i = gamestate.initialDealerButtonIndex =
(gamestate.gameProgressiveId - 1) % gamestate.players.length;
if (gamestate.dealerPosition >= 0) {
gamestate.players[gamestate.dealerPosition].unassignDealerButton();
}
gamestate.players[i].assignDealerButton();
} else {
let newDealerPosition = gamestate.dealerPosition;
gamestate.players[newDealerPosition].unassignDealerButton();
do {
newDealerPosition = next(gamestate.players, newDealerPosition);
if (newDealerPosition === gamestate.initialDealerButtonIndex) {
gamestate.dealerButtonRound += 1;
}
} while (gamestate.players[newDealerPosition].state !== PlayerStates.get("active"));
gamestate.players[newDealerPosition].assignDealerButton();
}
};
module.exports = Task;