use of mage.game.draft.Draft in project mage by magefree.
the class DraftController method init.
private void init() {
draft.addTableEventListener((Listener<TableEvent>) event -> {
try {
switch(event.getEventType()) {
case UPDATE:
updateDraft();
break;
case END:
endDraft();
break;
}
} catch (MageException ex) {
logger.fatal("Table event listener error", ex);
}
});
draft.addPlayerQueryEventListener((Listener<PlayerQueryEvent>) event -> {
try {
switch(event.getQueryType()) {
case PICK_CARD:
pickCard(event.getPlayerId(), event.getMax());
break;
}
} catch (MageException ex) {
logger.fatal("Table event listener error", ex);
}
});
for (DraftPlayer player : draft.getPlayers()) {
if (!player.getPlayer().isHuman()) {
player.setJoined();
logger.debug("player " + player.getPlayer().getId() + " has joined draft " + draft.getId());
}
}
checkStart();
}
use of mage.game.draft.Draft 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);
}
}
Aggregations