public MatchView(Table table) { this.tableId = table.getId(); this.isTournament = table.isTournament(); if (table.isTournament()) { initTournamentTable(table); } else { initMatchTable(table); } }
match.cleanUpOnMatchEnd(ConfigSettings.instance.isSaveGameActivated(), table.isTournament());
@Override public boolean canJoinTable(Table table) { if (table.isTournament()) { TournamentType tournamentType = table.getTournament().getTournamentType(); if(tournamentType != null && tournamentType.isDraft()) { return true; } } return false; } }
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()); } }
private void reconnect() { logger.trace(userName + " started reconnect"); for (Entry<UUID, Table> entry : tables.entrySet()) { ccJoinedTable(entry.getValue().getRoomId(), entry.getValue().getId(), entry.getValue().isTournament());
public synchronized boolean submitDeck(UUID userId, DeckCardLists deckList) throws MageException { UUID playerId = userPlayerMap.get(userId); if (table.isTournament()) { TournamentPlayer player = tournament.getPlayer(playerId); if (player == null || player.hasQuit()) {
private boolean updateDeck(UUID userId, UUID playerId, Deck deck) { boolean validDeck = true; if (table.isTournament()) { if (tournament != null) { validDeck = TournamentManager.instance.updateDeck(tournament.getId(), playerId, deck); } else { logger.fatal("Tournament == null table: " + table.getId() + " userId: " + userId); } } else if (TableState.SIDEBOARDING == table.getState()) { validDeck = match.updateDeck(playerId, deck); } else { // deck was meanwhile submitted so the autoupdate can be ignored } return validDeck; }
return; if (table.isTournament() && tournament == null) { logger.error("No tournament object - userId: " + userId + " table: " + table.getId()); return; if (table.getState() == TableState.WAITING || table.getState() == TableState.READY_TO_START) { table.leaveNotStartedTable(playerId); if (table.isTournament()) { tournament.removePlayer(playerId); } else { if (table.isTournament()) { logger.debug("Quit tournament sub tables for userId: " + userId); TableManager.instance.userQuitTournamentSubTables(tournament.getId(), userId);
final public void setState(TableState state) { this.state = state; if (isTournament()) { getTournament().setTournamentState(state.toString()); } if (state == TableState.FINISHED) { this.recorder.record(this); } }
Table table = tableEntry.getValue(); if (table != null) { if (table.isTournament()) { if (tableEntry.getKey() != null) { TournamentPlayer tournamentPlayer = table.getTournament().getPlayer(tableEntry.getKey());
&& ((System.currentTimeMillis() - table.getStartTime().getTime()) / 1000) > 30) { // removeUserFromAllTablesAndChat only if table started longer than 30 seconds ago logger.debug(table.getId() + " [" + table.getName() + "] " + formatter.format(table.getStartTime() == null ? table.getCreateTime() : table.getCreateTime()) + " (" + table.getState().toString() + ") " + (table.isTournament() ? "- Tournament" : "")); getController(table.getId()).ifPresent(tableController -> { if ((table.isTournament() && !tableController.isTournamentStillValid()) || (!table.isTournament() && !tableController.isMatchTableStillValid())) { try { logger.warn("Removing unhealthy tableId " + table.getId());
@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 boolean isMatchTableStillValid() { if (!table.isTournament()) { if (!(table.getState() == TableState.WAITING || table.getState() == TableState.STARTING || table.getState() == TableState.READY_TO_START)) { if (match == null) {
this.createTime = table.getCreateTime(); } else { if (table.isTournament()) { this.createTime = table.getTournament().getStartTime(); } else { this.isTournament = table.isTournament(); for (Seat seat : table.getSeats()) { seats.add(new SeatView(seat)); if (!table.isTournament()) {
} else { if (table.isTournament()) { 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(); } }