private void initMatchTable(Table table) { Match match = table.getMatch(); this.matchId = match.getId(); this.matchName = match.getName(); this.gameType = match.getOptions().getGameType(); this.deckType = match.getOptions().getDeckType() + " [" + table.getName() + ']'; } else { this.deckType = match.getOptions().getDeckType(); for (Game game: match.getGames()) { games.add(game.getId()); for (MatchPlayer matchPlayer: match.getPlayers()) { sb1.append(matchPlayer.getName()); if(matchPlayer.hasQuit()) { int lostGames = match.getNumGames() - (matchPlayer.getWins() + match.getDraws()); sb1.append(", "); sb2.append(matchPlayer.getName()).append(" ["); sb2.append(matchPlayer.getWins()).append('-'); if (match.getDraws() > 0) { sb2.append(match.getDraws()).append('-'); this.startTime = match.getStartTime(); this.endTime = match.getEndTime(); this.replayAvailable = match.isReplayAvailable(); this.rated = match.getOptions().isRated();
Game game = match.getGame(); if (game == null) { return true; UUID choosingPlayerId = match.getChooser(); match.endGame(); if (ConfigSettings.instance.isSaveGameActivated() && !game.isSimulation()) { if (GameManager.instance.saveGame(game.getId())) { match.setReplayAvailable(true); if (!match.hasEnded()) { if (match.getGame() != null && match.getGame().getGameType().isSideboardingAllowed()) { sideboard(); if (!match.hasEnded()) { startGame(choosingPlayerId); } else { logger.fatal(null, ex); return match.hasEnded();
private void matchEnd() { if (match != null) { for (Entry<UUID, UUID> entry : userPlayerMap.entrySet()) { MatchPlayer matchPlayer = match.getPlayer(entry.getValue()); sb.append(" is over. "); } else { sb.append("Match [").append(match.getName()).append("] is over. "); if (match.getPlayers().size() > 2) { sb.append("All your opponents have lost or quit the match."); } else { match.cleanUpOnMatchEnd(ConfigSettings.instance.isSaveGameActivated(), table.isTournament());
public synchronized void startMatch() { if (table.getState() == TableState.STARTING) { try { if (table.isTournamentSubTable()) { logger.info("Tourn. match started id:" + match.getId() + " tournId: " + table.getTournament().getId()); } else { UserManager.instance.getUser(userId).ifPresent(user -> { logger.info("MATCH started [" + match.getName() + "] " + match.getId() + '(' + user.getName() + ')'); logger.debug("- " + match.getOptions().getGameType() + " - " + match.getOptions().getDeckType()); }); } match.startMatch(); startGame(null); } catch (GameException ex) { logger.fatal("Error starting match ", ex); match.endGame(); } } }
private void autoSideboard() { for (MatchPlayer player : match.getPlayers()) { if (!player.isDoneSideboarding()) { match.submitDeck(player.getPlayer().getId(), player.generateDeck()); } } }
private void startGame(UUID choosingPlayerId) throws GameException { try { match.startGame(); table.initGame(); GameOptions gameOptions = new GameOptions(); gameOptions.rollbackTurnsAllowed = match.getOptions().isRollbackTurnsAllowed(); gameOptions.bannedUsers = match.getOptions().getBannedUsers(); gameOptions.planeChase = match.getOptions().isPlaneChase(); match.getGame().setGameOptions(gameOptions); GameManager.instance.createGameSession(match.getGame(), userPlayerMap, table.getId(), choosingPlayerId, gameOptions); String creator = null; StringBuilder opponent = new StringBuilder(); for (Entry<UUID, UUID> entry : userPlayerMap.entrySet()) { // do only for no AI players if (match.getPlayer(entry.getValue()) != null && !match.getPlayer(entry.getValue()).hasQuit()) { Optional<User> _user = UserManager.instance.getUser(entry.getKey()); if (_user.isPresent()) { User user = _user.get(); user.ccGameStarted(match.getGame().getId(), entry.getValue()); MatchPlayer matchPlayer = match.getPlayer(entry.getValue()); if (matchPlayer != null && !matchPlayer.hasQuit()) { matchPlayer.setQuit(true); for (MatchPlayer mPlayer : match.getPlayers()) { if (!mPlayer.getPlayer().isHuman()) { if (opponent.length() > 0) { logger.info("GAME started " + (match.getGame() != null ? match.getGame().getId() : "no Game") + " [" + match.getName() + "] " + creator + " - " + opponent.toString()); logger.debug("- matchId: " + match.getId() + " [" + match.getName() + ']'); if (match.getGame() != null) {
for (TournamentPairing pair : round.getPairs()) { Match match = pair.getMatch(); if (match != null && match.hasEnded()) { MatchProto.Builder matchBuilder = roundBuilder.addMatchesBuilder() .setName(match.getName()) .setGameType(match.getOptions().getGameType()) .setDeckType(match.getOptions().getDeckType()) .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());
this.createTime = table.getTournament().getStartTime(); } else { this.createTime = table.getMatch().getStartTime(); seatsInfo = "" + table.getMatch().getPlayers().size() + '/' + table.getSeats().length; if (table.getState() == TableState.WAITING || table.getState() == TableState.READY_TO_START) { tableStateText = table.getState().toString() + " (" + seatsInfo + ')'; for (Game game : table.getMatch().getGames()) { games.add(game.getId()); for (MatchPlayer matchPlayer : table.getMatch().getPlayers()) { if (matchPlayer.getPlayer() == null) { sb.append(", ").append("[unknown]"); if (table.getMatch().getDraws() > 0) { sbScore.append(" Draws: ").append(table.getMatch().getDraws()); if (table.getMatch().getGames().isEmpty()) { addInfo.append("Wins:").append(table.getMatch().getWinsNeeded()); addInfo.append(" Time: ").append(table.getMatch().getOptions().getMatchTimeLimit().toString()); if (table.getMatch().getFreeMulligans() > 0) { addInfo.append(" Free Mul.: ").append(table.getMatch().getFreeMulligans()); addInfo.append("Wins:").append(table.getMatch().getWinsNeeded()); addInfo.append(sbScore.toString()); addInfo.append(" Rng: ").append(table.getMatch().getOptions().getRange().toString());
if (match == null) { logger.warn("- Match table with no match:"); logger.warn("-- matchId:" + match.getId() + " , table : " + table.getId()); } else if (match.isDoneSideboarding() && match.getGame() == null) { logger.warn("-- matchId:" + match.getId() + " [" + match.getName() + ']'); int humanPlayers = 0; for (Map.Entry<UUID, UUID> userPlayerEntry : userPlayerMap.entrySet()) { MatchPlayer matchPlayer = match.getPlayer(userPlayerEntry.getValue()); if (matchPlayer == null) { logger.warn("- Match player not found:"); logger.warn("-- matchId:" + match.getId()); logger.warn("-- userId:" + userPlayerEntry.getKey()); logger.warn("-- playerId:" + userPlayerEntry.getValue()); || table.getState() == TableState.STARTING || table.getState() == TableState.READY_TO_START) || !match.isDoneSideboarding() || (!matchPlayer.hasQuit() && match.getGame() != null && matchPlayer.getPlayer().isInGame())) { Optional<User> user = UserManager.instance.getUser(userPlayerEntry.getKey()); if (!user.isPresent() || !user.get().isActive()) { logger.warn("- Active user of match is missing: " + matchPlayer.getName()); logger.warn("-- matchId:" + match.getId()); logger.warn("-- userId:" + userPlayerEntry.getKey()); logger.warn("-- playerId:" + userPlayerEntry.getValue());
matchHolder.id_match.setText(match.getId().toString()); matchHolder.nome_partita.setText(match.getName().toString()); matchHolder.citta.setText(match.getCitta().toString()); matchHolder.indirizzo.setText(match.getIndirizzo().toString()); matchHolder.data.setText(match.getData().toString()); matchHolder.ora.setText(match.getOra().toString());
tournament.removePlayer(playerId); } else { match.quitMatch(playerId); TournamentManager.instance.quit(tournament.getId(), userId); } else { MatchPlayer matchPlayer = match.getPlayer(playerId); if (matchPlayer != null && !match.hasEnded() && !matchPlayer.hasQuit()) { Game game = match.getGame(); if (game != null && !game.hasEnded()) { Player player = match.getPlayer(playerId).getPlayer(); if (player != null && player.isInGame()) { GameManager.instance.quitMatch(game.getId(), userId); match.quitMatch(playerId); } else { if (table.getState() == TableState.SIDEBOARDING) { match.quitMatch(playerId);
for (TournamentPairing pair : round.getPairs()) { Match match = pair.getMatch(); if (match != null && match.hasEnded()) { TournamentPlayer tp1 = pair.getPlayer1(); TournamentPlayer tp2 = pair.getPlayer2(); MatchPlayer mp1 = match.getPlayer(pair.getPlayer1().getPlayer().getId()); MatchPlayer mp2 = match.getPlayer(pair.getPlayer2().getPlayer().getId()); match.setTournamentRound(round.getRoundNumber()); if (tp1.getState() == TournamentPlayerState.DUELING) { if (round.getRoundNumber() == getNumberRounds()) {
/** * 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() {
public RoundView(Round round) { try { for (TournamentPairing pair : round.getPairs()) { // get info of finished games from match if (pair.getMatch() != null) { for (GameInfo gameInfo : pair.getMatch().getGamesInfo()) { games.add(new TournamentGameView(round.getRoundNumber(), gameInfo.getMatchId(), gameInfo.getGameId(), gameInfo.getState(), gameInfo.getResult(), gameInfo.getPlayers(), gameInfo.getTableId())); } if (!pair.getMatch().hasEnded()) { int numberSavedGames = pair.getMatch().getGamesInfo().size(); if (pair.getMatch() != null) { int gameCount = 0; for (Game game : pair.getMatch().getGames()) { gameCount++; if (gameCount > numberSavedGames) { // only unfinished game info directly from game games.add(new TournamentGameView(round.getRoundNumber(), pair, game)); } } } } } } } catch (Exception ex) { ex.printStackTrace(); } }
winsNeeded = match.getOptions().getWinsNeeded(); StringBuilder additonalText = new StringBuilder(); for (MatchPlayer matchPlayer : match.getPlayers()) { if (matchPlayer.getPlayer().equals(you)) { wins = matchPlayer.getWins();
public boolean isRoundOver() { boolean roundIsOver = true; if (this.match != null) { if (!this.match.hasEnded()) { roundIsOver = false; } } return roundIsOver; } }
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(); }
if (!table.getMatch().getOptions().getPassword().isEmpty() && playerType == PlayerType.HUMAN) { if (!table.getMatch().getOptions().getPassword().equals(password)) { user.showUserMessage("Join Table", "Wrong password."); return false; int quitRatio = table.getMatch().getOptions().getQuitRatio(); if (quitRatio < user.getMatchQuitRatio()) { String message = new StringBuilder("Your quit ratio ").append(user.getMatchQuitRatio()) int minimumRating = table.getMatch().getOptions().getMinimumRating(); int userRating; if (table.getMatch().getOptions().isLimited()) { userRating = user.getUserData().getLimitedRating(); } else { int edhPowerLevel = table.getMatch().getOptions().getEdhPowerLevel(); if (edhPowerLevel > 0 && table.getValidator().getName().toLowerCase(Locale.ENGLISH).equals("commander")) { int deckEdhPowerLevel = table.getValidator().getEdhPowerLevel(deck); return false; match.addPlayer(player, deck); table.joinTable(player, seat); logger.trace(player.getName() + " joined tableId: " + table.getId());
public boolean isUserStillActive(UUID userId) { UUID playerId = userPlayerMap.get(userId); if (playerId != null) { if (tournament != null) { TournamentPlayer tournamentPlayer = tournament.getPlayer(playerId); if (tournamentPlayer != null) { return tournamentPlayer.isInTournament(); } } else if (match != null) { MatchPlayer matchPlayer = match.getPlayer(playerId); return matchPlayer != null && !matchPlayer.hasQuit(); } } return false; }
private void sideboard() { table.sideboard(); setupTimeout(Match.SIDEBOARD_TIME); if (table.isTournamentSubTable()) { for (MatchPlayer matchPlayer : match.getPlayers()) { if (!matchPlayer.hasQuit()) { TournamentPlayer tournamentPlayer = table.getTournament().getPlayer(matchPlayer.getPlayer().getId()); if (tournamentPlayer != null) { tournamentPlayer.setStateInfo("sideboarding"); } } } } match.sideboard(); cancelTimeout(); if (table.isTournamentSubTable()) { for (MatchPlayer matchPlayer : match.getPlayers()) { TournamentPlayer tournamentPlayer = table.getTournament().getPlayer(matchPlayer.getPlayer().getId()); if (tournamentPlayer != null && tournamentPlayer.getStateInfo().equals("sideboarding")) { tournamentPlayer.setStateInfo(""); } } } }