diff --git a/Mage.Client/src/mage/client/cards/CardDimensions.java b/Mage.Client/src/mage/client/cards/CardDimensions.java index 2a8c96af0c0..56c297401f8 100644 --- a/Mage.Client/src/mage/client/cards/CardDimensions.java +++ b/Mage.Client/src/mage/client/cards/CardDimensions.java @@ -61,8 +61,8 @@ public class CardDimensions { textYOffset = (int)(TEXT_MAX_YOFFSET * scaleFactor); textWidth = (int)(TEXT_MAX_WIDTH * scaleFactor); textHeight = (int)(TEXT_MAX_HEIGHT * scaleFactor); - powBoxTextTop = (int)(POWBOX_MAX_TOP * scaleFactor); - powBoxTextLeft = (int)(POWBOX_MAX_LEFT * scaleFactor); + powBoxTextTop = (int)(POWBOX_TEXT_MAX_TOP * scaleFactor); + powBoxTextLeft = (int)(POWBOX_TEXT_MAX_LEFT * scaleFactor); nameFontSize = Math.max(9, (int)(NAME_FONT_MAX_SIZE * scaleFactor)); } diff --git a/Mage.Client/src/mage/client/dialog/PickNumberDialog.form b/Mage.Client/src/mage/client/dialog/PickNumberDialog.form index eaaab5b6613..ef477c3cf85 100644 --- a/Mage.Client/src/mage/client/dialog/PickNumberDialog.form +++ b/Mage.Client/src/mage/client/dialog/PickNumberDialog.form @@ -19,17 +19,24 @@ - + + + + + + + + + + + + + + + + + - - - - - - - - - @@ -37,8 +44,10 @@ + + - + @@ -72,5 +81,10 @@ + + + + + diff --git a/Mage.Client/src/mage/client/dialog/PickNumberDialog.java b/Mage.Client/src/mage/client/dialog/PickNumberDialog.java index 8eafd783c07..baf8731462f 100644 --- a/Mage.Client/src/mage/client/dialog/PickNumberDialog.java +++ b/Mage.Client/src/mage/client/dialog/PickNumberDialog.java @@ -50,8 +50,9 @@ public class PickNumberDialog extends MageDialog { this.setModal(true); } - public void showDialog(int min, int max) { + public void showDialog(int min, int max, String message) { this.spnAmount.setModel(new SpinnerNumberModel(min, min, max, 1)); + this.lblMessage.setText(message); this.btnCancel.setVisible(false); this.setVisible(true); } @@ -76,8 +77,7 @@ public class PickNumberDialog extends MageDialog { spnAmount = new javax.swing.JSpinner(); btnCancel = new javax.swing.JButton(); btnOk = new javax.swing.JButton(); - - setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + lblMessage = new javax.swing.JLabel(); spnAmount.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(1), null, null, Integer.valueOf(1))); @@ -95,27 +95,35 @@ public class PickNumberDialog extends MageDialog { } }); + lblMessage.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap() - .addComponent(btnOk) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnCancel) - .addContainerGap()) .addGroup(layout.createSequentialGroup() - .addGap(61, 61, 61) - .addComponent(spnAmount, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(51, Short.MAX_VALUE)) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap(13, Short.MAX_VALUE) + .addComponent(btnOk) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnCancel)) + .addGroup(layout.createSequentialGroup() + .addGap(44, 44, 44) + .addComponent(spnAmount, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(lblMessage, javax.swing.GroupLayout.DEFAULT_SIZE, 121, Short.MAX_VALUE))) + .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() + .addComponent(lblMessage, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(spnAmount, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 15, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnCancel) .addComponent(btnOk)) @@ -138,6 +146,7 @@ public class PickNumberDialog extends MageDialog { // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnCancel; private javax.swing.JButton btnOk; + private javax.swing.JLabel lblMessage; private javax.swing.JSpinner spnAmount; // End of variables declaration//GEN-END:variables diff --git a/Mage.Client/src/mage/client/dialog/ShowCardsDialog.java b/Mage.Client/src/mage/client/dialog/ShowCardsDialog.java index ffb20e8eadb..a77c19fefc7 100644 --- a/Mage.Client/src/mage/client/dialog/ShowCardsDialog.java +++ b/Mage.Client/src/mage/client/dialog/ShowCardsDialog.java @@ -47,7 +47,6 @@ import mage.client.cards.CardDimensions; import mage.client.util.Config; import mage.view.CardView; import mage.view.CardsView; -import static mage.client.util.Constants.*; /** * diff --git a/Mage.Client/src/mage/client/game/GamePanel.java b/Mage.Client/src/mage/client/game/GamePanel.java index ae9d756bf97..030393f8bae 100644 --- a/Mage.Client/src/mage/client/game/GamePanel.java +++ b/Mage.Client/src/mage/client/game/GamePanel.java @@ -74,6 +74,7 @@ public class GamePanel extends javax.swing.JPanel { private UUID playerId; private Session session; private CombatDialog combat = new CombatDialog(); + private PickNumberDialog pickNumber = new PickNumberDialog(); /** Creates new form GamePanel */ public GamePanel() { @@ -144,6 +145,7 @@ public class GamePanel extends javax.swing.JPanel { combat.init(gameId, bigCard); MageFrame.getDesktop().add(combat, JLayeredPane.POPUP_LAYER); combat.setLocation(500, 300); + MageFrame.getDesktop().add(pickNumber, JLayeredPane.POPUP_LAYER); this.players.clear(); this.pnlBattlefield.removeAll(); //arrange players in a circle with the session player at the bottom left @@ -306,9 +308,8 @@ public class GamePanel extends javax.swing.JPanel { showCards.loadCards(title, cards, bigCard, Config.dimensions, gameId); } - public void getAmount(int min, int max) { - PickNumberDialog pickNumber = new PickNumberDialog(); - pickNumber.showDialog(min, max); + public void getAmount(int min, int max, String message) { + pickNumber.showDialog(min, max, message); if (pickNumber.isCancel()) session.sendPlayerBoolean(gameId, false); else diff --git a/Mage.Client/src/mage/client/remote/Client.java b/Mage.Client/src/mage/client/remote/Client.java index bac034e6914..d08ce3e941c 100644 --- a/Mage.Client/src/mage/client/remote/Client.java +++ b/Mage.Client/src/mage/client/remote/Client.java @@ -52,6 +52,7 @@ public class Client implements CallbackClient { private String userName; private MageFrame frame; private Session session; + private int messageId = 0; public Client(Session session, MageFrame frame, String userName) { @@ -63,84 +64,91 @@ public class Client implements CallbackClient { } @Override - public void processCallback(ClientCallback callback) { - 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()); - } - 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("gameUpdate")) { - session.getGame().updateGame((GameView) callback.getData()); - } - else if (callback.getMethod().equals("gameInform")) { - GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().inform(message.getMessage(), null, message.getGameView()); - } - 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().updateGame(message.getGameView()); - session.getGame().ask(message.getMessage()); - } - else if (callback.getMethod().equals("gameTarget")) { - GameClientMessage message = (GameClientMessage) callback.getData(); - if (message.isFlag()) { - session.getGame().inform(message.getMessage(), message.getCardsView(), message.getGameView()); - } else { - session.getGame().cancel(message.getMessage(), message.getCardsView(), message.getGameView()); + public synchronized void processCallback(ClientCallback callback) { + if (callback.getMessageId() > messageId) { + messageId = callback.getMessageId(); + 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()); + } + 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("gameUpdate")) { + session.getGame().updateGame((GameView) callback.getData()); + } + else if (callback.getMethod().equals("gameInform")) { + GameClientMessage message = (GameClientMessage) callback.getData(); + session.getGame().inform(message.getMessage(), null, message.getGameView()); + } + 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().updateGame(message.getGameView()); + session.getGame().ask(message.getMessage()); + } + else if (callback.getMethod().equals("gameTarget")) { + GameClientMessage message = (GameClientMessage) callback.getData(); + if (message.isFlag()) { + session.getGame().inform(message.getMessage(), message.getCardsView(), message.getGameView()); + } else { + session.getGame().cancel(message.getMessage(), message.getCardsView(), message.getGameView()); + } + } + 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("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()); - } - else if (callback.getMethod().equals("gameReveal")) { - GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().revealCards(message.getMessage(), message.getCardsView()); + else { + logger.warning("message out of sequence - ignoring"); } }