public boolean isTournamentStillValid() { if (table.getTournament() != null) { if (table.getState() != TableState.WAITING && table.getState() != TableState.READY_TO_START && table.getState() != TableState.STARTING) { return TournamentManager.instance.getTournamentController(table.getTournament().getId()) .map(tc -> tc.isTournamentStillValid(table.getState())) .orElse(false); } else { // check if table creator is still a valid user, if not removeUserFromAllTablesAndChat table return UserManager.instance.getUser(userId).isPresent(); } } return false; }
private void initTournamentTable(Table table) { this.matchId = table.getTournament().getId(); this.matchName = table.getName(); this.gameType = table.getGameType(); if (table.getTournament().getOptions().getNumberRounds() > 0) { this.gameType = new StringBuilder(this.gameType).append(' ').append(table.getTournament().getOptions().getNumberRounds()).append(" Rounds").toString(); if (!table.getTournament().getBoosterInfo().isEmpty()) { sbDeckType.append(' ').append(table.getTournament().getBoosterInfo()); for (TournamentPlayer tPlayer : table.getTournament().getPlayers()) { sb1.append(tPlayer.getPlayer().getName()).append(" (").append(tPlayer.getPoints()).append(" P.) "); if (!table.getTournament().getRounds().isEmpty()) { for (TournamentPlayer tPlayer : table.getTournament().getPlayers()) { sb2.append(tPlayer.getPlayer().getName()).append(": ").append(tPlayer.getResults()).append(' '); this.startTime = table.getTournament().getStartTime(); this.endTime = table.getTournament().getEndTime(); this.replayAvailable = false; this.rated = table.getTournament().getOptions().getMatchOptions().isRated();
@Override public boolean canJoinTable(Table table) { if (table.isTournament()) { TournamentType tournamentType = table.getTournament().getTournamentType(); if(tournamentType != null && tournamentType.isDraft()) { return true; } } return false; } }
final public void setState(TableState state) { this.state = state; if (isTournament()) { getTournament().setTournamentState(state.toString()); } if (state == TableState.FINISHED) { this.recorder.record(this); } }
if (table.isTournamentSubTable()) { sb.append("Your tournament match of round "); sb.append(table.getTournament().getRounds().size()); sb.append(" is over. "); } else {
if (table.isTournament()) { if (tableEntry.getKey() != null) { TournamentPlayer tournamentPlayer = table.getTournament().getPlayer(tableEntry.getKey()); if (tournamentPlayer != null) { if (!tournamentPlayer.isEliminated()) {
public boolean watchTable(UUID userId) { if (table.isTournament()) { UserManager.instance.getUser(userId).ifPresent(user -> user.ccShowTournament(table.getTournament().getId())); return true; } else { if (table.isTournamentSubTable() && !table.getTournament().getOptions().isWatchingAllowed()) { return false; } if (table.getState() != TableState.DUELING) { return false; } // you can't watch your own game if (userPlayerMap.get(userId) != null) { return false; } Optional<User> _user = UserManager.instance.getUser(userId); if (!_user.isPresent()) { return false; } return _user.get().ccWatchGame(match.getGame().getId()); } }
public void userQuitTournamentSubTables(UUID tournamentId, UUID userId) { for (TableController controller : getControllers()) { if (controller.getTable().isTournamentSubTable() && controller.getTable().getTournament().getId().equals(tournamentId)) { if (controller.hasPlayer(userId)) { controller.leaveTable(userId); } } } }
@Override public void quitDraft(final UUID draftId, final String sessionId) throws MageException { execute("quitDraft", sessionId, () -> { try { callExecutor.execute( () -> { Optional<Session> session = SessionManager.instance.getSession(sessionId); if (!session.isPresent()) { logger.error("Session not found : " + sessionId); } else { UUID userId = session.get().getUserId(); UUID tableId = DraftManager.instance.getControllerByDraftId(draftId).getTableId(); Table table = TableManager.instance.getTable(tableId); if (table.isTournament()) { UUID tournamentId = table.getTournament().getId(); TournamentManager.instance.quit(tournamentId, userId); } } } ); } catch (Exception ex) { handleException(ex); } } ); }
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(); } } }
if (!table.getTournament().getOptions().getPassword().isEmpty() && playerType == PlayerType.HUMAN) { if (!table.getTournament().getOptions().getPassword().equals(password)) { user.showUserMessage("Join Table", "Wrong password."); return false; if (!table.getTournament().getTournamentType().isLimited()) { if (deckList != null) { deck = Deck.load(deckList, false, false); int quitRatio = table.getTournament().getOptions().getQuitRatio(); if (quitRatio < user.getTourneyQuitRatio()) { String message = new StringBuilder("Your quit ratio ").append(user.getTourneyQuitRatio()) int minimumRating = table.getTournament().getOptions().getMinimumRating(); int userRating; if (table.getTournament().getOptions().getMatchOptions().isLimited()) { userRating = user.getUserData().getLimitedRating(); } else {
} else { if (table.isTournament()) { this.createTime = table.getTournament().getStartTime(); } else { this.createTime = table.getMatch().getStartTime(); if (table.getTournament().getOptions().getNumberRounds() > 0) { this.gameType = new StringBuilder(this.gameType).append(' ').append(table.getTournament().getOptions().getNumberRounds()).append(" Rounds").toString(); for (TournamentPlayer tp : table.getTournament().getPlayers()) { if (!tp.getPlayer().getName().equals(table.getControllerName())) { sb1.append(", ").append(tp.getPlayer().getName()); this.seatsInfo = "" + table.getTournament().getPlayers().size() + "/" + table.getNumberOfSeats(); StringBuilder infoText = new StringBuilder(); StringBuilder stateText = new StringBuilder(table.getState().toString()); infoText.append("Wins:").append(table.getTournament().getOptions().getMatchOptions().getWinsNeeded()); infoText.append(" Seats: ").append(this.seatsInfo); switch (table.getState()) { case WAITING: stateText.append(" (").append(table.getTournament().getPlayers().size()).append('/').append(table.getNumberOfSeats()).append(')'); case READY_TO_START: case STARTING: infoText.append(" Time: ").append(table.getTournament().getOptions().getMatchOptions().getMatchTimeLimit().toString()); if (table.getTournament().getOptions().getMatchOptions().getFreeMulligans() > 0) { infoText.append(" Fr.Mul: ").append(table.getTournament().getOptions().getMatchOptions().getFreeMulligans()); if (table.getTournament().getTournamentType().isLimited()) { infoText.append(" Constr.: ").append(table.getTournament().getOptions().getLimitedOptions().getConstructionTime() / 60).append(" Min.");
TournamentPlayer tournamentPlayer = table.getTournament().getPlayer(mPlayer.getPlayer().getId()); if (tournamentPlayer != null) { tournamentPlayer.setStateInfo(""); // reset sideboarding state
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(""); } } } }
logger.debug("Quit tournament sub tables for userId: " + userId); TableManager.instance.userQuitTournamentSubTables(tournament.getId(), userId); logger.debug("Quit tournament Id: " + table.getTournament().getId() + '(' + table.getTournament().getTournamentState() + ')'); TournamentManager.instance.quit(tournament.getId(), userId); } else {
TournamentManager.instance.removeTournament(table.getTournament().getId());
public TableProto toProto() { TableProto.Builder builder = TableProto.newBuilder(); if (this.isTournament()) { builder.getTourneyBuilder().mergeFrom(this.getTournament().toProto()); } else { builder.getMatchBuilder().mergeFrom(this.getMatch().toProto()); } return builder.setGameType(this.getGameType()) .setName(this.getName()) .setGameType(this.getGameType()) .setDeckType(this.getDeckType()) .setControllerName(this.getControllerName()) .setStartTimeMs(this.getStartTime() != null ? this.getStartTime().getTime() : 0L) .setEndTimeMs(this.getEndTime() != null ? this.getEndTime().getTime() : 0L) .build(); } }