public void addPlayer(UUID userId, UUID tableId, TournamentPlayer player) throws GameException { if (controllers.containsKey(tableId)) { controllers.get(tableId).addPlayer(userId, player.getPlayer(), player.getPlayerType(), player.getDeck()); } }
TournamentPlayerView(TournamentPlayer tournamentPlayer) { this.name = tournamentPlayer.getPlayer().getName(); StringBuilder sb = new StringBuilder(tournamentPlayer.getState().toString()); String stateInfo = tournamentPlayer.getStateInfo(); if (!stateInfo.isEmpty()) { sb.append(" (").append(stateInfo).append(')'); } sb.append(tournamentPlayer.getDisconnectInfo()); this.state = sb.toString(); this.points = tournamentPlayer.getPoints(); this.results = tournamentPlayer.getResults(); this.quit = !tournamentPlayer.isInTournament(); this.history = tournamentPlayer.getPlayer().getUserData().getHistory(); this.flagName = tournamentPlayer.getPlayer().getUserData().getFlagName(); }
private boolean checkToReplaceDraftPlayerByAi(UUID userId, TournamentPlayer leavingPlayer) { int humans = 0; for (TournamentPlayer tPlayer : tournament.getPlayers()) { if (tPlayer.getPlayer().isHuman()) { humans++; } } // replace player that quits with draft bot if (humans > 1) { Optional<User> user = UserManager.instance.getUser(userId); TableManager.instance.getController(tableId).ifPresent(tableController -> { String replacePlayerName = "Draftbot"; if (user.isPresent()) { replacePlayerName = "Draftbot (" + user.get().getName() + ')'; } tableController.replaceDraftPlayer(leavingPlayer.getPlayer(), replacePlayerName, PlayerType.COMPUTER_DRAFT_BOT, 5); if (user.isPresent()) { user.get().removeDraft(leavingPlayer.getPlayer().getId()); user.get().removeTable(leavingPlayer.getPlayer().getId()); user.get().removeTournament(leavingPlayer.getPlayer().getId()); } ChatManager.instance.broadcast(chatId, "", leavingPlayer.getPlayer().getLogName() + " was replaced by draftbot", MessageColor.BLACK, true, MessageType.STATUS, null); }); return true; } return false; }
public void submitDeck(UUID playerId, Deck deck) { if (tournamentSessions.containsKey(playerId)) { TournamentPlayer player = tournament.getPlayer(playerId); if (player != null && !player.hasQuit()) { tournamentSessions.get(playerId).submitDeck(deck); ChatManager.instance.broadcast(chatId, "", player.getPlayer().getLogName() + " has submitted their tournament deck", MessageColor.BLACK, true, MessageType.STATUS, SoundToPlay.PlayerSubmittedDeck); } } }
private void checkPlayersState() { for (TournamentPlayer tournamentPlayer : tournament.getPlayers()) { if (!tournamentPlayer.isEliminated() && tournamentPlayer.getPlayer().isHuman()) { if (tournamentSessions.containsKey(tournamentPlayer.getPlayer().getId())) { if (tournamentSessions.get(tournamentPlayer.getPlayer().getId()).isKilled()) { tournamentPlayer.setEliminated(); tournamentPlayer.setStateInfo("disconnected"); } } else { tournamentPlayer.setEliminated(); tournamentPlayer.setStateInfo("no tournament session"); } } } }
private static String getMatchResultString(TournamentPlayer p1, TournamentPlayer p2, Match match) { MatchPlayer mp1 = match.getPlayer(p1.getPlayer().getId()); MatchPlayer mp2 = match.getPlayer(p2.getPlayer().getId()); StringBuilder matchResult = new StringBuilder(); matchResult.append(p2.getPlayer().getName()); matchResult.append(" [").append(mp1.getWins()); if (mp1.hasQuit()) { matchResult.append(mp1.getPlayer().hasIdleTimeout() ? "I" : (mp1.getPlayer().hasTimerTimeout() ? "T" : "Q")); } if (match.getDraws() > 0) { matchResult.append('-').append(match.getDraws()); } matchResult.append('-').append(mp2.getWins()); if (mp2.hasQuit()) { matchResult.append(mp2.getPlayer().hasIdleTimeout() ? "I" : (mp2.getPlayer().hasTimerTimeout() ? "T" : "Q")); } matchResult.append("] "); return matchResult.toString(); }
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(); }
protected void draft() { draft = new BoosterDraft((DraftOptions) options.getLimitedOptions(), getSets()); for (TournamentPlayer player: players.values()) { draft.addPlayer(player.getPlayer()); player.setState(TournamentPlayerState.DRAFTING); } tableEventSource.fireTableEvent(EventType.START_DRAFT, null, draft); }
@Override protected void draft() { draft = new RandomBoosterDraft((DraftOptions) options.getLimitedOptions(), getSets()); for (TournamentPlayer player: players.values()) { draft.addPlayer(player.getPlayer()); player.setState(TournamentPlayerState.DRAFTING); } tableEventSource.fireTableEvent(EventType.START_DRAFT, null, draft); } }
protected void draft() { draft = new RichManCubeBoosterDraft((DraftOptions) options.getLimitedOptions(), getSets()); for (TournamentPlayer player : players.values()) { draft.addPlayer(player.getPlayer()); player.setState(TournamentPlayerState.DRAFTING); } tableEventSource.fireTableEvent(EventType.START_DRAFT, null, draft); }
protected void draft() { draft = new BoosterDraft((DraftOptions) options.getLimitedOptions(), getSets()); for (TournamentPlayer player: players.values()) { draft.addPlayer(player.getPlayer()); player.setState(TournamentPlayerState.DRAFTING); } tableEventSource.fireTableEvent(TableEvent.EventType.START_DRAFT, null, draft); }
protected void draft() { draft = new RichManBoosterDraft((DraftOptions) options.getLimitedOptions(), getSets()); for (TournamentPlayer player : players.values()) { draft.addPlayer(player.getPlayer()); player.setState(TournamentPlayerState.DRAFTING); } tableEventSource.fireTableEvent(EventType.START_DRAFT, null, draft); }
@Override protected void draft() { draft = new RandomBoosterDraft((DraftOptions) options.getLimitedOptions(), getSets()); for (TournamentPlayer player: players.values()) { draft.addPlayer(player.getPlayer()); player.setState(TournamentPlayerState.DRAFTING); } tableEventSource.fireTableEvent(EventType.START_DRAFT, null, draft); } }
private MatchPlayerProto matchToProto(Match match, TournamentPlayer player) { MatchPlayer matchPlayer = match.getPlayer(player.getPlayer().getId()); MatchQuitStatus quit = !matchPlayer.hasQuit() ? MatchQuitStatus.NO_MATCH_QUIT : matchPlayer.getPlayer().hasIdleTimeout() ? MatchQuitStatus.IDLE_TIMEOUT : matchPlayer.getPlayer().hasTimerTimeout() ? MatchQuitStatus.TIMER_TIMEOUT : MatchQuitStatus.QUIT; return MatchPlayerProto.newBuilder() .setName(player.getPlayer().getName()) .setHuman(player.getPlayer().isHuman()) .setWins(matchPlayer.getWins()) .setQuit(quit) .build(); }
@Override protected void runTournament() { for (Entry<UUID, TournamentPlayer> entry : players.entrySet()) { if (entry.getValue().getPlayer().autoLoseGame()) { entry.getValue().setEliminated(); entry.getValue().setResults("Auto Eliminated"); } } if (options.matchOptions.getNumSeats() == 2) { while (this.getActivePlayers().size() > 1 && this.getNumberRounds() > this.getRounds().size()) { // check if some player got killed / disconnected meanwhile and update their state tableEventSource.fireTableEvent(TableEvent.EventType.CHECK_STATE_PLAYERS); // Swiss pairing Round round = createRoundSwiss(); playRound(round); } } else { options.matchOptions.setAttackOption(MultiplayerAttackOption.MULTIPLE); MultiplayerRound round = createMultiplayerRound(); playMultiplayerRound(round); } nextStep(); }
TournamentGameView(int roundNum, TournamentPairing pair, Game game) { this.roundNum = roundNum; this.matchId = pair.getMatch().getId(); this.gameId = game.getId(); this.players = pair.getPlayer1().getPlayer().getName() + " - " + pair.getPlayer2().getPlayer().getName(); String duelingTime = ""; if (game.hasEnded()) { if (game.getEndTime() != null && game.getStartTime() != null) { duelingTime = " (" + DateFormat.getDuration((game.getEndTime().getTime() - game.getStartTime().getTime())/1000) + ')'; } this.state = "Finished" + duelingTime; this.result = game.getWinner(); } else { if (game.getStartTime() != null) { duelingTime = " (" + DateFormat.getDuration((new Date().getTime() - game.getStartTime().getTime())/1000) + ')'; } this.state = "Dueling" + duelingTime; this.result = ""; } this.tableId = pair.getTableId(); }
/** * Called by eliminate tournaments after each match */ public void eliminatePlayers() { if (match != null && match.hasEnded()) { MatchPlayer mPlayer1 = match.getPlayer(player1.getPlayer().getId()); MatchPlayer mPlayer2 = match.getPlayer(player2.getPlayer().getId()); if (mPlayer1.hasQuit() || !mPlayer1.isMatchWinner()) { player1.setEliminated(); } if (mPlayer2.hasQuit() || !mPlayer2.isMatchWinner()) { player2.setEliminated(); } } } public void finishPlayersThatPlayedLastRound() {
private void startMultiplayerMatch(MultiplayerRound round, MatchOptions matchOptions) { try { TableManager tableManager = TableManager.instance; Table table = tableManager.createTable(GamesRoomManager.instance.getMainRoomId(), matchOptions); table.setTournamentSubTable(true); table.setTournament(tournament); table.setState(TableState.WAITING); if (round.getAllPlayers().stream().allMatch(tournamentPlayer -> getPlayerUserId(tournamentPlayer.getPlayer().getId()).isPresent())) { for (TournamentPlayer player : round.getAllPlayers()) { tableManager.addPlayer(getPlayerUserId(player.getPlayer().getId()).get(), table.getId(), player); } table.setState(TableState.STARTING); tableManager.startTournamentSubMatch(null, table.getId()); tableManager.getMatch(table.getId()).ifPresent(match -> { match.setTableId(tableId); round.setMatch(match); round.setTableId(table.getId()); for (TournamentPlayer player : round.getAllPlayers()) { player.setState(TournamentPlayerState.DUELING); } }); } } catch (GameException ex) { logger.fatal("TournamentController startMatch error", ex); } }