diff --git a/Mage.Client/src/mage/client/MageFrame.java b/Mage.Client/src/mage/client/MageFrame.java index 9245e4a3293..95dc10b8a0c 100644 --- a/Mage.Client/src/mage/client/MageFrame.java +++ b/Mage.Client/src/mage/client/MageFrame.java @@ -37,8 +37,6 @@ package mage.client; import java.awt.Cursor; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; -import java.rmi.NotBoundException; -import java.rmi.RemoteException; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; diff --git a/Mage.Client/src/mage/client/cards/Card.java b/Mage.Client/src/mage/client/cards/Card.java index 9afa1c775bc..d76ea699aec 100644 --- a/Mage.Client/src/mage/client/cards/Card.java +++ b/Mage.Client/src/mage/client/cards/Card.java @@ -205,7 +205,9 @@ public class Card extends javax.swing.JPanel implements MouseMotionListener, Mou for (String rule: getRules()) { sb.append("\n").append(rule); } - sb.append("\n").append(Sets.getInstance().get(card.getExpansionSetCode()).getName()).append(" - ").append(card.getRarity().toString()); + if (card.getExpansionSetCode().length() > 0) { + sb.append("\n").append(Sets.getInstance().get(card.getExpansionSetCode()).getName()).append(" - ").append(card.getRarity().toString()); + } } // sb.append("\n").append(card.getId()); return sb.toString(); diff --git a/Mage.Client/src/mage/client/cards/Permanent.java b/Mage.Client/src/mage/client/cards/Permanent.java index 7819a611dbc..dfcb5d9038b 100644 --- a/Mage.Client/src/mage/client/cards/Permanent.java +++ b/Mage.Client/src/mage/client/cards/Permanent.java @@ -113,7 +113,9 @@ public class Permanent extends Card { for (String rule: getRules()) { sb.append("\n").append(rule); } - sb.append("\n").append(Sets.getInstance().get(permanent.getOriginal().getExpansionSetCode()).getName()).append(" - ").append(permanent.getOriginal().getRarity().toString()); + if (permanent.getOriginal().getExpansionSetCode().length() > 0) { + sb.append("\n").append(Sets.getInstance().get(permanent.getOriginal().getExpansionSetCode()).getName()).append(" - ").append(permanent.getOriginal().getRarity().toString()); + } // sb.append("\n").append(card.getId()); return sb.toString(); diff --git a/Mage.Client/src/mage/client/deckeditor/CardSelector.java b/Mage.Client/src/mage/client/deckeditor/CardSelector.java index 4632e0edd53..cd67bd3a270 100644 --- a/Mage.Client/src/mage/client/deckeditor/CardSelector.java +++ b/Mage.Client/src/mage/client/deckeditor/CardSelector.java @@ -72,11 +72,11 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene public void loadCards(BigCard bigCard) { this.bigCard = bigCard; cbExpansionSet.setModel(new DefaultComboBoxModel(Sets.getInstance().values().toArray())); - cbExpansionSet.insertItemAt("All sets", 0); - cbExpansionSet.setSelectedIndex(0); +// cbExpansionSet.insertItemAt("All sets", 0); for (ExpansionSet set: Sets.getInstance().values()) { allCards.addAll(set.createCards()); } + cbExpansionSet.setSelectedIndex(0); filter.setUseColor(true); filter.getColor().setBlack(true); filter.getColor().setBlue(true); @@ -95,6 +95,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene filter.getCardType().add(CardType.PLANESWALKER); filter.getCardType().add(CardType.SORCERY); filter.setScopeCardType(ComparisonScope.Any); + filter.getExpansionSetCode().add(((ExpansionSet)this.cbExpansionSet.getSelectedItem()).getCode()); filterCards(); } diff --git a/Mage.Client/src/mage/client/remote/Client.java b/Mage.Client/src/mage/client/remote/Client.java index 116d3cd7371..387c269093f 100644 --- a/Mage.Client/src/mage/client/remote/Client.java +++ b/Mage.Client/src/mage/client/remote/Client.java @@ -30,7 +30,9 @@ package mage.client.remote; import java.rmi.RemoteException; import java.util.UUID; +import java.util.logging.Level; import java.util.logging.Logger; +import javax.swing.JOptionPane; import mage.client.MageFrame; import mage.interfaces.callback.CallbackClient; import mage.interfaces.callback.ClientCallback; @@ -66,85 +68,90 @@ public class Client implements CallbackClient { @Override public synchronized void processCallback(ClientCallback callback) { logger.info(callback.getMessageId() + " - " + callback.getMethod()); - if (callback.getMethod().equals("startGame")) { - UUID[] data = (UUID[]) callback.getData(); - gameStarted(data[0], data[1]); - } - else if (callback.getMethod().equals("replayGame")) { - replayGame(); - } - else if (callback.getMethod().equals("watchGame")) { - watchGame((UUID) callback.getData()); - } - else if (callback.getMethod().equals("chatMessage")) { - ChatMessage message = (ChatMessage) callback.getData(); - session.getChats().get(message.getChatId()).receiveMessage(message.getMessage(), message.getColor()); - } - else if (callback.getMethod().equals("replayInit")) { - session.getGame().init((GameView) callback.getData()); - } - else if (callback.getMethod().equals("replayDone")) { - session.getGame().modalMessage((String) callback.getData()); - session.getGame().hideGame(); - } - else if (callback.getMethod().equals("replayUpdate")) { - session.getGame().updateGame((GameView) callback.getData()); - } - else if (callback.getMethod().equals("gameInit")) { - session.getGame().init((GameView) callback.getData()); - } - else if (callback.getMethod().equals("gameOver")) { - session.getGame().modalMessage((String) callback.getData()); - session.getGame().hideGame(); - } - else if (callback.getMethod().equals("gameAsk")) { - GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().ask(message.getMessage(), message.getGameView()); - } - else if (callback.getMethod().equals("gameTarget")) { - GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().pickTarget(message.getMessage(), message.getCardsView(), message.getGameView(), message.isFlag()); - } - else if (callback.getMethod().equals("gameSelect")) { - GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().select(message.getMessage(), message.getGameView()); - } - else if (callback.getMethod().equals("gameChooseAbility")) { - session.getGame().pickAbility((AbilityPickerView) callback.getData()); - } - else if (callback.getMethod().equals("gameChoose")) { - GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().getChoice(message.getMessage(), message.getStrings()); - } - else if (callback.getMethod().equals("gamePlayMana")) { - GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().playMana(message.getMessage(), message.getGameView()); - } - else if (callback.getMethod().equals("gamePlayXMana")) { - GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().playXMana(message.getMessage(), message.getGameView()); - } - else if (callback.getMethod().equals("gameSelectAmount")) { - GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().getAmount(message.getMin(), message.getMax(), message.getMessage()); - } - else if (callback.getMethod().equals("gameReveal")) { - GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().revealCards(message.getMessage(), message.getCardsView()); - } - else if (callback.getMethod().equals("gameUpdate")) { - session.getGame().updateGame((GameView) callback.getData()); - } - else if (callback.getMethod().equals("gameInform")) { - if (callback.getMessageId() > messageId) { + try { + if (callback.getMethod().equals("startGame")) { + UUID[] data = (UUID[]) callback.getData(); + gameStarted(data[0], data[1]); + } + else if (callback.getMethod().equals("replayGame")) { + replayGame(); + } + else if (callback.getMethod().equals("watchGame")) { + watchGame((UUID) callback.getData()); + } + else if (callback.getMethod().equals("chatMessage")) { + ChatMessage message = (ChatMessage) callback.getData(); + session.getChats().get(message.getChatId()).receiveMessage(message.getMessage(), message.getColor()); + } + else if (callback.getMethod().equals("replayInit")) { + session.getGame().init((GameView) callback.getData()); + } + else if (callback.getMethod().equals("replayDone")) { + session.getGame().modalMessage((String) callback.getData()); + session.getGame().hideGame(); + } + else if (callback.getMethod().equals("replayUpdate")) { + session.getGame().updateGame((GameView) callback.getData()); + } + else if (callback.getMethod().equals("gameInit")) { + session.getGame().init((GameView) callback.getData()); + } + else if (callback.getMethod().equals("gameOver")) { + session.getGame().modalMessage((String) callback.getData()); + session.getGame().hideGame(); + } + else if (callback.getMethod().equals("gameAsk")) { GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().inform(message.getMessage(), message.getGameView()); + session.getGame().ask(message.getMessage(), message.getGameView()); } - else { - logger.warning("message out of sequence - ignoring"); + else if (callback.getMethod().equals("gameTarget")) { + GameClientMessage message = (GameClientMessage) callback.getData(); + session.getGame().pickTarget(message.getMessage(), message.getCardsView(), message.getGameView(), message.isFlag()); } + else if (callback.getMethod().equals("gameSelect")) { + GameClientMessage message = (GameClientMessage) callback.getData(); + session.getGame().select(message.getMessage(), message.getGameView()); + } + else if (callback.getMethod().equals("gameChooseAbility")) { + session.getGame().pickAbility((AbilityPickerView) callback.getData()); + } + else if (callback.getMethod().equals("gameChoose")) { + GameClientMessage message = (GameClientMessage) callback.getData(); + session.getGame().getChoice(message.getMessage(), message.getStrings()); + } + else if (callback.getMethod().equals("gamePlayMana")) { + GameClientMessage message = (GameClientMessage) callback.getData(); + session.getGame().playMana(message.getMessage(), message.getGameView()); + } + else if (callback.getMethod().equals("gamePlayXMana")) { + GameClientMessage message = (GameClientMessage) callback.getData(); + session.getGame().playXMana(message.getMessage(), message.getGameView()); + } + else if (callback.getMethod().equals("gameSelectAmount")) { + GameClientMessage message = (GameClientMessage) callback.getData(); + session.getGame().getAmount(message.getMin(), message.getMax(), message.getMessage()); + } + else if (callback.getMethod().equals("gameReveal")) { + GameClientMessage message = (GameClientMessage) callback.getData(); + session.getGame().revealCards(message.getMessage(), message.getCardsView()); + } + else if (callback.getMethod().equals("gameUpdate")) { + session.getGame().updateGame((GameView) callback.getData()); + } + else if (callback.getMethod().equals("gameInform")) { + if (callback.getMessageId() > messageId) { + GameClientMessage message = (GameClientMessage) callback.getData(); + session.getGame().inform(message.getMessage(), message.getGameView()); + } + else { + logger.warning("message out of sequence - ignoring"); + } + } + messageId = callback.getMessageId(); + } + catch (Exception ex) { + handleException(ex); } - messageId = callback.getMessageId(); } public UUID getId() throws RemoteException { @@ -152,18 +159,40 @@ public class Client implements CallbackClient { } protected void gameStarted(UUID gameId, UUID playerId) { - frame.showGame(gameId, playerId); - logger.info("Game " + gameId + " started for player " + playerId); + try { + frame.showGame(gameId, playerId); + logger.info("Game " + gameId + " started for player " + playerId); + } + catch (Exception ex) { + handleException(ex); + } } protected void watchGame(UUID gameId) { - frame.watchGame(gameId); - logger.info("Watching game " + gameId); + try { + frame.watchGame(gameId); + logger.info("Watching game " + gameId); + } + catch (Exception ex) { + handleException(ex); + } } protected void replayGame() { - frame.replayGame(); - logger.info("Replaying game"); + try { + frame.replayGame(); + logger.info("Replaying game"); + } + catch (Exception ex) { + handleException(ex); + } + } + + private void handleException(Exception ex) { + logger.log(Level.SEVERE, "Client error", ex); + JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Unrecoverable client error. Disconnecting", "Error", JOptionPane.ERROR_MESSAGE); + session.disconnect(); + frame.disableButtons(); } } diff --git a/Mage.Client/src/mage/client/remote/Session.java b/Mage.Client/src/mage/client/remote/Session.java index 9b0f31ed077..ab83d8c17f7 100644 --- a/Mage.Client/src/mage/client/remote/Session.java +++ b/Mage.Client/src/mage/client/remote/Session.java @@ -28,7 +28,6 @@ package mage.client.remote; -import java.awt.Cursor; import java.rmi.NotBoundException; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; diff --git a/Mage.Client/src/mage/client/util/ImageHelper.java b/Mage.Client/src/mage/client/util/ImageHelper.java index cbd36009c03..972ad5e7399 100644 --- a/Mage.Client/src/mage/client/util/ImageHelper.java +++ b/Mage.Client/src/mage/client/util/ImageHelper.java @@ -41,6 +41,7 @@ import java.util.HashMap; import java.util.List; import javax.imageio.ImageIO; import mage.Constants.CardType; +import mage.Constants.Rarity; import mage.client.cards.CardDimensions; import mage.sets.Sets; import mage.view.AbilityView; @@ -110,7 +111,7 @@ public class ImageHelper { g.drawImage(art, CONTENT_MAX_XOFFSET, ART_MAX_YOFFSET, null); } - if (card.getExpansionSetCode() != null && card.getRarity() != null) { + if (card.getExpansionSetCode() != null && card.getExpansionSetCode().length() > 0 && card.getRarity() != null && card.getRarity() != Rarity.NA) { String symbolCode = Sets.getInstance().get(card.getExpansionSetCode()).getSymbolCode(); if (symbolCode != null && symbolCode.length() > 0) { StringBuilder sb = new StringBuilder();