@Override public void stop() { super.stop(); deck.reset(); phase = PokerPhase.STANDBY; }
/** Rotates dealer and blinds, eliminates players, and prepares table for next hand. */ public void handEnd() { // Begin end hand phase phase = PokerPhase.HAND_END; // Eliminate players with no money for (PokerPlayer player : new ArrayList<>(getPlayers())) { if (player.getChips() == 0) { removePlayer(player); } } int playersLeft = getPlayers().size(); if (playersLeft > 0) { // Rotate dealer, small blind, and big blind getPlayers().add(0, getPlayers().remove(getPlayerCount() - 1)); // Eliminate players that can't afford blind while (playersLeft > 1) { PokerPlayer smallBlind = getSmallBlind(); if (smallBlind.getChips() < settings.getSmallBlind()) { removePlayer(smallBlind); playersLeft--; continue; } break; } while (playersLeft > 2) { PokerPlayer bigBlind = getBigBlind(); if (bigBlind.getChips() < settings.getBigBlind()) { removePlayer(bigBlind); playersLeft--; continue; } break; } } // Reset deck, open table, and wait to start next game deck.reset(); tableCards.clear(); for (PokerPlayer player : getPlayers()) { player.nextHand(); } setOpen(true); phase = PokerPhase.STANDBY; }