diff --git a/Mage.Common/src/mage/view/MatchView.java b/Mage.Common/src/mage/view/MatchView.java index c093248054f..e1240a83e20 100644 --- a/Mage.Common/src/mage/view/MatchView.java +++ b/Mage.Common/src/mage/view/MatchView.java @@ -89,8 +89,12 @@ public class MatchView implements Serializable { } this.players = sb1.toString(); StringBuilder sb2 = new StringBuilder(); - for (TournamentPlayer tPlayer : table.getTournament().getPlayers()) { - sb2.append(tPlayer.getPlayer().getName()).append(": ").append(tPlayer.getResults()).append(" "); + if (table.getTournament().getRounds().size() > 0) { + for (TournamentPlayer tPlayer : table.getTournament().getPlayers()) { + sb2.append(tPlayer.getPlayer().getName()).append(": ").append(tPlayer.getResults()).append(" "); + } + } else { + sb2.append("Canceled"); } this.result = sb2.toString(); this.startTime = table.getTournament().getStartTime(); diff --git a/Mage.Server/src/main/java/mage/server/TableController.java b/Mage.Server/src/main/java/mage/server/TableController.java index 6a5ea84f2b7..62cd69820da 100644 --- a/Mage.Server/src/main/java/mage/server/TableController.java +++ b/Mage.Server/src/main/java/mage/server/TableController.java @@ -53,6 +53,7 @@ import mage.game.match.MatchOptions; import mage.game.match.MatchPlayer; import mage.game.tournament.Tournament; import mage.game.tournament.TournamentOptions; +import mage.game.tournament.TournamentPlayer; import mage.players.Player; import mage.server.challenge.ChallengeManager; import mage.server.draft.DraftManager; @@ -216,6 +217,10 @@ public class TableController { public synchronized boolean submitDeck(UUID userId, DeckCardLists deckList) throws MageException { UUID playerId = userPlayerMap.get(userId); + TournamentPlayer player = tournament.getPlayer(playerId); + if (player.hasQuit()) { + return true; // so the construct panel closes after submit + } if (table.getState() != TableState.SIDEBOARDING && table.getState() != TableState.CONSTRUCTING) { return false; } diff --git a/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java b/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java index eeb90caefab..797482839d4 100644 --- a/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java +++ b/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java @@ -275,6 +275,7 @@ public class TournamentController { info = "during Construction phase"; } player.setQuit(info); + tournament.quit(playerId); } } } diff --git a/Mage/src/mage/game/tournament/Tournament.java b/Mage/src/mage/game/tournament/Tournament.java index ca37e5c8f53..aad1343ff5b 100644 --- a/Mage/src/mage/game/tournament/Tournament.java +++ b/Mage/src/mage/game/tournament/Tournament.java @@ -63,6 +63,7 @@ public interface Tournament { void autoSubmit(UUID playerId, Deck deck); boolean allJoined(); boolean isDoneConstructing(); + void quit(UUID playerId); void leave(UUID playerId); void nextStep(); diff --git a/Mage/src/mage/game/tournament/TournamentImpl.java b/Mage/src/mage/game/tournament/TournamentImpl.java index 47a096d93b9..bf96a3930d1 100644 --- a/Mage/src/mage/game/tournament/TournamentImpl.java +++ b/Mage/src/mage/game/tournament/TournamentImpl.java @@ -118,6 +118,13 @@ public abstract class TournamentImpl implements Tournament { return setsInfoShort; } + @Override + public void quit(UUID playerId) { + synchronized (this) { + this.notifyAll(); + } + } + @Override public void leave(UUID playerId) { if (players.containsKey(playerId)) {