From a57ebc5314e7efa6ed711934433e026863611578 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 19 Sep 2014 13:37:59 +0200 Subject: [PATCH] * Table handling - Fixed a bug that if table owner tried to create a table with invalid deck, the table was added to the finished tables with no players. --- .../main/java/mage/client/dialog/TableWaitingDialog.java | 8 ++------ .../src/main/java/mage/server/TableController.java | 4 ++++ Mage/src/mage/game/Table.java | 4 +++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java index f7573ac718d..c2166b34d4b 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java @@ -258,12 +258,8 @@ public class TableWaitingDialog extends MageDialog { private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed try { - if (session.isTableOwner(roomId, tableId)) { - session.removeTable(roomId, tableId); - } else { - if (!session.leaveTable(roomId, tableId)) { - return; // already started, so leave no more possible - } + if (!session.leaveTable(roomId, tableId)) { + return; // already started, so leave no more possible } } catch (Exception e) { //swallow exception diff --git a/Mage.Server/src/main/java/mage/server/TableController.java b/Mage.Server/src/main/java/mage/server/TableController.java index ff2c6bd43f9..303ea6f4d82 100644 --- a/Mage.Server/src/main/java/mage/server/TableController.java +++ b/Mage.Server/src/main/java/mage/server/TableController.java @@ -231,6 +231,10 @@ public class TableController { } sb.append("\n\nSelect a deck that is appropriate for the selected format and try again!"); user.showUserMessage("Join Table", sb.toString()); + if (isOwner(userId)) { + logger.debug("New table removed because owner submitted invalid deck tableId " + table.getId()); + TableManager.getInstance().removeTable(table.getId()); + } return false; } diff --git a/Mage/src/mage/game/Table.java b/Mage/src/mage/game/Table.java index ab72c78b11a..f2a11160848 100644 --- a/Mage/src/mage/game/Table.java +++ b/Mage/src/mage/game/Table.java @@ -136,7 +136,9 @@ public class Table implements Serializable { * */ public void closeTable() { - setState(TableState.FINISHED); + if (!getState().equals(TableState.WAITING) && !getState().equals(TableState.READY_TO_START)) { + setState(TableState.FINISHED); // otherwise the table can be removed completely + } this.validator = null; }