use of mage.game.tournament.TournamentPlayer in project mage by magefree.
the class TournamentController method endTournament.
private void endTournament() {
for (TournamentPlayer player : tournament.getPlayers()) {
player.setStateAtTournamentEnd();
}
for (final TournamentSession tournamentSession : tournamentSessions.values()) {
tournamentSession.tournamentOver();
}
this.tournamentSessions.clear();
managerFactory.tableManager().endTournament(tableId, tournament);
tournament.cleanUpOnTournamentEnd();
}
use of mage.game.tournament.TournamentPlayer in project mage by magefree.
the class TournamentController method submitDeck.
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);
managerFactory.chatManager().broadcast(chatId, "", player.getPlayer().getLogName() + " has submitted their tournament deck", MessageColor.BLACK, true, null, MessageType.STATUS, SoundToPlay.PlayerSubmittedDeck);
}
}
}
use of mage.game.tournament.TournamentPlayer in project mage by magefree.
the class TournamentController method construct.
private void construct(UUID playerId, int timeout) throws MageException {
if (tournamentSessions.containsKey(playerId)) {
TournamentSession tournamentSession = tournamentSessions.get(playerId);
tournamentSession.construct(timeout);
getPlayerUserId(playerId).ifPresent(userId -> {
managerFactory.userManager().getUser(userId).ifPresent(user -> {
user.addConstructing(playerId, tournamentSession);
TournamentPlayer player = tournament.getPlayer(playerId);
player.setState(TournamentPlayerState.CONSTRUCTING);
});
});
}
}
use of mage.game.tournament.TournamentPlayer in project mage by magefree.
the class TournamentController method quit.
public void quit(UUID userId) {
UUID playerId = userPlayerMap.get(userId);
if (playerId == null) {
logger.debug("Player not found userId:" + userId + " tournId: " + tournament.getId());
return;
}
TournamentPlayer tournamentPlayer = tournament.getPlayer(playerId);
if (tournamentPlayer == null) {
logger.debug("TournamentPlayer not found userId: " + userId + " tournId: " + tournament.getId());
return;
}
if (!started) {
tournament.leave(playerId);
return;
}
TournamentSession tournamentSession = tournamentSessions.get(playerId);
if (tournamentSession == null) {
logger.debug("TournamentSession not found userId: " + userId + " tournId: " + tournament.getId());
return;
}
tournamentSession.setKilled();
if (tournamentPlayer.isInTournament()) {
String info;
TourneyQuitStatus status;
if (tournament.isDoneConstructing()) {
info = new StringBuilder("during round ").append(tournament.getRounds().size()).toString();
// quit active matches of that tournament
managerFactory.tableManager().userQuitTournamentSubTables(tournament.getId(), userId);
status = TourneyQuitStatus.DURING_ROUND;
} else if (tournamentPlayer.getState() == TournamentPlayerState.DRAFTING) {
info = "during Draft phase";
if (!checkToReplaceDraftPlayerByAi(userId, tournamentPlayer)) {
this.abortDraftTournament();
} else {
managerFactory.draftManager().getController(tableId).ifPresent(draftController -> {
draftController.getDraftSession(playerId).ifPresent(draftSession -> managerFactory.draftManager().kill(draftSession.getDraftId(), userId));
});
}
status = TourneyQuitStatus.DURING_DRAFTING;
} else if (tournamentPlayer.getState() == TournamentPlayerState.CONSTRUCTING) {
info = "during Construction phase";
status = TourneyQuitStatus.DURING_CONSTRUCTION;
} else {
info = "";
status = TourneyQuitStatus.NO_TOURNEY_QUIT;
}
tournamentPlayer.setQuit(info, status);
tournament.quit(playerId);
tournamentSession.quit();
managerFactory.chatManager().broadcast(chatId, "", tournamentPlayer.getPlayer().getLogName() + " has quit the tournament", MessageColor.BLACK, true, null, MessageType.STATUS, SoundToPlay.PlayerQuitTournament);
}
}
use of mage.game.tournament.TournamentPlayer in project mage by magefree.
the class BoosterDraftSwissTournament method 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);
}
Aggregations