protected Round createRoundRandom() { Round round = new Round(rounds.size() + 1, this); rounds.add(round); List<TournamentPlayer> roundPlayers = getActivePlayers(); // search the player with a bye last round List<TournamentPlayer> playerWithByes = getTournamentPlayersWithBye(roundPlayers); while (roundPlayers.size() > 1) { TournamentPlayer player1 = getNextAvailablePlayer(roundPlayers, playerWithByes); TournamentPlayer player2 = getNextAvailablePlayer(roundPlayers, playerWithByes); round.addPairing(new TournamentPairing(player1, player2)); } if (!roundPlayers.isEmpty()) { // player free round - add to bye players of this round TournamentPlayer player1 = roundPlayers.get(0); round.getPlayerByes().add(player1); player1.setState(TournamentPlayerState.WAITING); player1.setStateInfo("Round Bye"); updateResults(); } return round; }
private static String addRoundResult(int round, TournamentPairing pair, TournamentPlayer tournamentPlayer, TournamentPlayer opponentPlayer) { StringBuilder playerResult = new StringBuilder(tournamentPlayer.getResults()); playerResult.append('R').append(round).append(' '); playerResult.append(getMatchResultString(tournamentPlayer, opponentPlayer, pair.getMatch())); return playerResult.toString(); }
protected void winners() { List<TournamentPlayer> winners = new ArrayList<>(); int pointsWinner = 1; // with less than 1 point you can't win for (TournamentPlayer tournamentPlayer : this.getPlayers()) { if (pointsWinner < tournamentPlayer.getPoints()) { winners.clear(); winners.add(tournamentPlayer); pointsWinner = tournamentPlayer.getPoints(); } else if (pointsWinner == tournamentPlayer.getPoints()) { winners.add(tournamentPlayer); } } // set winner state for the players with the most points > 0 for (TournamentPlayer tournamentPlayer : winners) { tournamentPlayer.setStateInfo("Winner"); } }
public void construct() { tableEventSource.fireTableEvent(EventType.CONSTRUCT); if (!isAbort()) { for (final TournamentPlayer player : players.values()) { player.setConstructing(); new Thread( () -> player.getPlayer().construct(TournamentImpl.this, player.getDeck()) ).start(); } // add autosubmit trigger synchronized (this) { while (!isDoneConstructing()) { try { this.wait(); } catch (InterruptedException ex) { } } } } nextStep(); }
match.setTournamentRound(round.getRoundNumber()); if (tp1.getState() == TournamentPlayerState.DUELING) { if (round.getRoundNumber() == getNumberRounds()) { tp1.setState(TournamentPlayerState.FINISHED); } else { if (round.getRoundNumber() == getNumberRounds()) { tp2.setState(TournamentPlayerState.FINISHED); } else { tp1.setResults(addRoundResult(round.getRoundNumber(), pair, tp1, tp2)); tp2.setResults(addRoundResult(round.getRoundNumber(), pair, tp2, tp1));
@Override public TourneyProto toProto() { TourneyProto.Builder tourneyBuilder = TourneyProto.newBuilder() .setBoosterInfo(this.getBoosterInfo()); for (TournamentPlayer player : players.values()) { TournamentPlayer replacedPlayer = player.getReplacedTournamentPlayer(); .setGames(match.getNumGames()) .setDraws(match.getDraws()) .addPlayers(matchToProto(match, pair.getPlayer1())) .addPlayers(matchToProto(match, pair.getPlayer2())) .setMatchOptions(match.getOptions().toProto()) .setEndTimeMs((match.getEndTime() != null ? match.getEndTime() : new Date()).getTime());
@Override public void fireConstructEvent(UUID playerId) { playerQueryEventSource.construct(playerId, "Construct", getOptions().getLimitedOptions().getConstructionTime()); }