diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.form b/Mage.Client/src/main/java/mage/client/MageFrame.form index 26949b171a0..ca8d3dcd5ca 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.form +++ b/Mage.Client/src/main/java/mage/client/MageFrame.form @@ -1,4 +1,4 @@ - +
@@ -51,38 +51,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 1e35f66af24..dedc5d16e8a 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -49,7 +49,6 @@ import mage.client.remote.Session; import mage.client.util.EDTExceptionHandler; import mage.client.util.gui.ArrowBuilder; import mage.components.ImagePanel; -import mage.util.Logging; import javax.imageio.ImageIO; import javax.swing.*; @@ -69,25 +68,25 @@ import java.io.IOException; import java.io.InputStream; import java.util.*; import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import java.util.prefs.Preferences; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; +import mage.client.deckeditor.DeckEditorPane; import mage.client.draft.DraftPane; +import mage.client.game.GamePane; +import mage.client.table.TablesPane; import mage.client.tournament.TournamentPane; +import org.apache.log4j.Logger; /** * @author BetaSteward_at_googlemail.com */ public class MageFrame extends javax.swing.JFrame { - private final static Logger logger = Logging.getLogger(MageFrame.class.getName()); + private final static Logger logger = Logger.getLogger(MageFrame.class); private static Session session; private ConnectDialog connectDialog; - private static CombatDialog combat; - private static PickNumberDialog pickNumber; private static Preferences prefs = Preferences.userNodeForPackage(MageFrame.class); private JLabel title; private Rectangle titleRectangle; @@ -128,7 +127,7 @@ public class MageFrame extends javax.swing.JFrame { //MageSynthStyleFactory f = new MageSynthStyleFactory(SynthLookAndFeel.getStyleFactory()); //SynthLookAndFeel.setStyleFactory(f); } catch (Exception ex) { - logger.log(Level.SEVERE, null, ex); + logger.fatal(null, ex); } ManaSymbols.loadImages(); @@ -140,29 +139,21 @@ public class MageFrame extends javax.swing.JFrame { session = new Session(this); connectDialog = new ConnectDialog(); - combat = new CombatDialog(); - pickNumber = new PickNumberDialog(); desktopPane.add(connectDialog, JLayeredPane.POPUP_LAYER); - desktopPane.add(combat, JLayeredPane.POPUP_LAYER); - combat.hideDialog(); - desktopPane.add(pickNumber, JLayeredPane.POPUP_LAYER); session.getUI().addComponent(MageComponents.DESKTOP_PANE, desktopPane); - draftPane = new DraftPane(); - desktopPane.add(draftPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - try { - draftPane.setMaximum(true); - } catch (java.beans.PropertyVetoException e1) { - e1.printStackTrace(); - } + try { + tablesPane = new TablesPane(); + desktopPane.add(tablesPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + tablesPane.setMaximum(true); - tournamentPane = new TournamentPane(); - desktopPane.add(tournamentPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - try { - tournamentPane.setMaximum(true); - } catch (java.beans.PropertyVetoException e1) { - e1.printStackTrace(); - } + collectionViewerPane = new CollectionViewerPane(); + desktopPane.add(collectionViewerPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + collectionViewerPane.setMaximum(true); + + } catch (PropertyVetoException ex) { + logger.fatal(null, ex); + } addTooltipContainer(); setBackground(); @@ -395,33 +386,68 @@ public class MageFrame extends javax.swing.JFrame { } public void showGame(UUID gameId, UUID playerId) { - this.gamePane.setVisible(true); - this.gamePane.toFront(); - this.gamePane.showGame(gameId, playerId); + try { + GamePane gamePane = new GamePane(); + desktopPane.add(gamePane, javax.swing.JLayeredPane.DEFAULT_LAYER); + gamePane.setMaximum(true); + gamePane.setVisible(true); + gamePane.toFront(); + gamePane.showGame(gameId, playerId); + } catch (PropertyVetoException ex) { + logger.fatal(null, ex); + } } public void watchGame(UUID gameId) { - this.gamePane.setVisible(true); - this.gamePane.toFront(); - this.gamePane.watchGame(gameId); + try { + GamePane gamePane = new GamePane(); + desktopPane.add(gamePane, javax.swing.JLayeredPane.DEFAULT_LAYER); + gamePane.setMaximum(true); + gamePane.setVisible(true); + gamePane.toFront(); + gamePane.watchGame(gameId); + } catch (PropertyVetoException ex) { + logger.fatal(null, ex); + } } - public void replayGame() { - this.gamePane.setVisible(true); - this.gamePane.toFront(); - this.gamePane.replayGame(); + public void replayGame(UUID gameId) { + try { + GamePane gamePane = new GamePane(); + desktopPane.add(gamePane, javax.swing.JLayeredPane.DEFAULT_LAYER); + gamePane.setMaximum(true); + gamePane.setVisible(true); + gamePane.toFront(); + gamePane.replayGame(gameId); + } catch (PropertyVetoException ex) { + logger.fatal(null, ex); + } } public void showDraft(UUID draftId) { - this.draftPane.setVisible(true); - this.draftPane.toFront(); - this.draftPane.showDraft(draftId); + try { + DraftPane draftPane = new DraftPane(); + desktopPane.add(draftPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + draftPane.setMaximum(true); + draftPane.setVisible(true); + draftPane.toFront(); + draftPane.showDraft(draftId); + } catch (PropertyVetoException ex) { + logger.fatal(null, ex); + } } public void showTournament(UUID tournamentId) { - this.tournamentPane.setVisible(true); - this.tournamentPane.toFront(); - this.tournamentPane.showTournament(tournamentId); + try { + TournamentPane tournamentPane = new TournamentPane(); + desktopPane.add(tournamentPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + tournamentPane.setMaximum(true); + tournamentPane.setVisible(true); + tournamentPane.toFront(); + tournamentPane.showTournament(tournamentId); + } catch (PropertyVetoException ex) { + logger.fatal(null, ex); + } } public static boolean connect(String userName, String serverName, int port) { @@ -459,10 +485,6 @@ public class MageFrame extends javax.swing.JFrame { private void initComponents() { desktopPane = new MageJDesktop(); - tablesPane = new mage.client.table.TablesPane(); - gamePane = new mage.client.game.GamePane(); - deckEditorPane = new mage.client.deckeditor.DeckEditorPane(); - collectionViewerPane = new CollectionViewerPane(); mageToolbar = new javax.swing.JToolBar(); btnConnect = new javax.swing.JButton(); jSeparator5 = new javax.swing.JToolBar.Separator(); @@ -482,34 +504,6 @@ public class MageFrame extends javax.swing.JFrame { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); //setMinimumSize(new java.awt.Dimension(1024, 768)); - tablesPane.setBounds(20, 10, 560, 440); - desktopPane.add(tablesPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - try { - tablesPane.setMaximum(true); - } catch (java.beans.PropertyVetoException e1) { - e1.printStackTrace(); - } - gamePane.setBounds(20, 30, -1, -1); - desktopPane.add(gamePane, javax.swing.JLayeredPane.DEFAULT_LAYER); - try { - gamePane.setMaximum(true); - } catch (java.beans.PropertyVetoException e1) { - e1.printStackTrace(); - } - deckEditorPane.setBounds(140, 50, -1, -1); - desktopPane.add(deckEditorPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - try { - deckEditorPane.setMaximum(true); - } catch (java.beans.PropertyVetoException e1) { - e1.printStackTrace(); - } - collectionViewerPane.setBounds(140, 50, -1, -1); - desktopPane.add(collectionViewerPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - try { - collectionViewerPane.setMaximum(true); - } catch (java.beans.PropertyVetoException e1) { - e1.printStackTrace(); - } mageToolbar.setFloatable(false); mageToolbar.setRollover(true); @@ -686,9 +680,16 @@ public class MageFrame extends javax.swing.JFrame { } public void showDeckEditor(DeckEditorMode mode, Deck deck, UUID tableId, int time) { - this.deckEditorPane.setVisible(true); - this.deckEditorPane.toFront(); - this.deckEditorPane.show(mode, deck, tableId, time); + try { + DeckEditorPane deckEditorPane = new DeckEditorPane(); + desktopPane.add(deckEditorPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + deckEditorPane.setMaximum(true); + deckEditorPane.setVisible(true); + deckEditorPane.toFront(); + deckEditorPane.show(mode, deck, tableId, time); + } catch (PropertyVetoException ex) { + logger.fatal(null, ex); + } } public void showCollectionViewer() { @@ -696,20 +697,12 @@ public class MageFrame extends javax.swing.JFrame { this.collectionViewerPane.toFront(); } - public static CombatDialog getCombatDialog() { - return combat; - } - - public static PickNumberDialog getPickNumberDialog() { - return pickNumber; - } - static void renderSplashFrame(Graphics2D g) { g.setComposite(AlphaComposite.Clear); g.fillRect(120, 140, 200, 40); g.setPaintMode(); g.setColor(Color.white); - g.drawString("Version 0.5.1", 560, 460); + g.drawString("Version 0.6.1", 560, 460); } /** @@ -727,7 +720,7 @@ public class MageFrame extends javax.swing.JFrame { Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread t, Throwable e) { - logger.log(Level.SEVERE, null, e); + logger.fatal(null, e); } }); SwingUtilities.invokeLater(new Runnable() { @@ -745,10 +738,7 @@ public class MageFrame extends javax.swing.JFrame { private javax.swing.JButton btnPreferences; private javax.swing.JButton btnExit; private javax.swing.JButton btnGames; - private mage.client.deckeditor.DeckEditorPane deckEditorPane; - private CollectionViewerPane collectionViewerPane; private static MageJDesktop desktopPane; - private mage.client.game.GamePane gamePane; private javax.swing.JToolBar.Separator jSeparator1; private javax.swing.JToolBar.Separator jSeparator2; private javax.swing.JToolBar.Separator jSeparator3; @@ -757,13 +747,12 @@ public class MageFrame extends javax.swing.JFrame { private javax.swing.JToolBar.Separator jSeparator6; private javax.swing.JLabel lblStatus; private javax.swing.JToolBar mageToolbar; - private mage.client.table.TablesPane tablesPane; // End of variables declaration//GEN-END:variables private static final long serialVersionUID = -9104885239063142218L; private ImagePanel backgroundPane; - private DraftPane draftPane; - private TournamentPane tournamentPane; + private TablesPane tablesPane; + private CollectionViewerPane collectionViewerPane; public void setStatusText(String status) { this.lblStatus.setText(status); diff --git a/Mage.Client/src/main/java/mage/client/cards/Card.form b/Mage.Client/src/main/java/mage/client/cards/Card.form index 9bfc6954424..3f9a08b3b93 100644 --- a/Mage.Client/src/main/java/mage/client/cards/Card.form +++ b/Mage.Client/src/main/java/mage/client/cards/Card.form @@ -1,4 +1,4 @@ - + diff --git a/Mage.Client/src/main/java/mage/client/cards/Card.java b/Mage.Client/src/main/java/mage/client/cards/Card.java index 58596c2e5eb..ee084b15824 100644 --- a/Mage.Client/src/main/java/mage/client/cards/Card.java +++ b/Mage.Client/src/main/java/mage/client/cards/Card.java @@ -377,18 +377,18 @@ public class Card extends MagePermanent implements MouseMotionListener, MouseLis popup = factory.getPopup(this, popupText, (int) this.getLocationOnScreen().getX() + Config.dimensions.frameWidth, (int) this.getLocationOnScreen().getY() + 40); popup.show(); popupShowing = true; - + // Draw Arrows for targets List targets = card.getTargets(); if (targets != null) { for (UUID uuid : targets) { - PlayAreaPanel p = session.getGame().getPlayers().get(uuid); + PlayAreaPanel p = session.getGame(gameId).getPlayers().get(uuid); if (p != null) { Point target = p.getLocationOnScreen(); Point me = this.getLocationOnScreen(); ArrowBuilder.addArrow((int)me.getX() + 35, (int)me.getY(), (int)target.getX() + 40, (int)target.getY() - 40, Color.red); } else { - for (PlayAreaPanel pa : session.getGame().getPlayers().values()) { + for (PlayAreaPanel pa : session.getGame(gameId).getPlayers().values()) { MagePermanent permanent = pa.getBattlefieldPanel().getPermanents().get(uuid); if (permanent != null) { Point target = permanent.getLocationOnScreen(); diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java index 48267da7cb6..9b7114ae341 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java @@ -120,7 +120,8 @@ public class DeckEditorPanel extends javax.swing.JPanel { this.cardSelector.loadCards(new ArrayList(deck.getSideboard()), this.bigCard, mode == DeckEditorMode.Limited); this.btnExit.setVisible(false); this.btnImport.setVisible(false); - this.btnLoad.setVisible(false); + if (!MageFrame.getSession().isTestMode()) + this.btnLoad.setVisible(false); this.deckArea.showSideboard(false); countdown.stop(); this.timeout = time; @@ -134,7 +135,8 @@ public class DeckEditorPanel extends javax.swing.JPanel { this.cardSelector.loadCards(this.bigCard); this.btnExit.setVisible(true); this.btnImport.setVisible(true); - this.btnLoad.setVisible(true); + if (!MageFrame.getSession().isTestMode()) + this.btnLoad.setVisible(true); this.deckArea.showSideboard(true); this.txtTimeRemaining.setVisible(false); break; @@ -193,6 +195,15 @@ public class DeckEditorPanel extends javax.swing.JPanel { this.repaint(); } + public void hideDeckEditor() { + Component c = this.getParent(); + while (c != null && !(c instanceof DeckEditorPane)) { + c = c.getParent(); + } + if (c != null) + c.setVisible(false); + } + private BigCard getBigCard() { return this.bigCard; } @@ -451,12 +462,7 @@ public class DeckEditorPanel extends javax.swing.JPanel { }//GEN-LAST:event_btnNewActionPerformed private void btnExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExitActionPerformed - Component c = this.getParent(); - while (c != null && !(c instanceof DeckEditorPane)) { - c = c.getParent(); - } - if (c != null) - c.setVisible(false); + hideDeckEditor(); }//GEN-LAST:event_btnExitActionPerformed private void btnImportActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnImportActionPerformed @@ -491,7 +497,7 @@ public class DeckEditorPanel extends javax.swing.JPanel { private void btnSubmitActionPerformed(java.awt.event.ActionEvent evt) { if (MageFrame.getSession().submitDeck(tableId, deck.getDeckCardLists())) - this.setVisible(false); + hideDeckEditor(); } private void btnAddLandActionPerformed(java.awt.event.ActionEvent evt) { diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java index b9531dcb82b..19e12351e91 100644 --- a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java +++ b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java @@ -81,7 +81,7 @@ public class DraftPanel extends javax.swing.JPanel { public synchronized void showDraft(UUID draftId) { this.draftId = draftId; session = MageFrame.getSession(); - session.setDraft(this); + session.addDraft(draftId, this); if (!session.joinDraft(draftId)) hideDraft(); } diff --git a/Mage.Client/src/main/java/mage/client/game/GamePane.form b/Mage.Client/src/main/java/mage/client/game/GamePane.form index f2f67e79ec2..f535b8520fd 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePane.form +++ b/Mage.Client/src/main/java/mage/client/game/GamePane.form @@ -1,4 +1,4 @@ - + @@ -19,23 +19,13 @@ - + - + - - - - - - - - - - diff --git a/Mage.Client/src/main/java/mage/client/game/GamePane.java b/Mage.Client/src/main/java/mage/client/game/GamePane.java index eb068f38467..74963061084 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePane.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePane.java @@ -88,8 +88,8 @@ public class GamePane extends MagePane { this.toFront(); } - public void replayGame() { - gamePanel.replayGame(); + public void replayGame(UUID gameId) { + gamePanel.replayGame(gameId); this.toFront(); } diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index 73b687819f7..1b35de11dda 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -39,9 +39,7 @@ import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.io.Serializable; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import java.util.UUID; import java.util.logging.Level; @@ -54,9 +52,10 @@ import javax.swing.border.LineBorder; import mage.client.MageFrame; import mage.client.cards.Cards; -import mage.client.deckeditor.collection.viewer.MageBook; +import mage.client.dialog.CombatDialog; import mage.client.dialog.ExileZoneDialog; import mage.client.dialog.PickChoiceDialog; +import mage.client.dialog.PickNumberDialog; import mage.client.dialog.ShowCardsDialog; import mage.client.game.FeedbackPanel.FeedbackMode; import mage.client.plugins.impl.Plugins; @@ -64,7 +63,6 @@ import mage.client.remote.Session; import mage.client.util.Config; import mage.client.util.GameManager; import mage.client.util.PhaseManager; -import mage.client.util.gui.ArrowBuilder; import mage.util.Logging; import mage.view.AbilityPickerView; import mage.view.CardsView; @@ -87,6 +85,8 @@ public class GamePanel extends javax.swing.JPanel { private UUID gameId; private UUID playerId; private Session session; + private CombatDialog combat; + private PickNumberDialog pickNumber; private static final Dimension handCardDimension = new Dimension(75, (int)(75 * 3.5f / 2.5f)); @@ -95,7 +95,12 @@ public class GamePanel extends javax.swing.JPanel { initComponents(); hand.setHScrollSpeed(8); - + combat = new CombatDialog(); + pickNumber = new PickNumberDialog(); + MageFrame.getDesktop().add(combat, JLayeredPane.POPUP_LAYER); + combat.hideDialog(); + MageFrame.getDesktop().add(pickNumber, JLayeredPane.POPUP_LAYER); + //FIXME: remove from here try { // Override layout (I can't edit generated code) @@ -104,8 +109,8 @@ public class GamePanel extends javax.swing.JPanel { j.setSize(1024,768); this.add(j); j.add(jSplitPane1, JLayeredPane.DEFAULT_LAYER); - - Map ui = getUIComponents(j); + + Map ui = getUIComponents(j); Plugins.getInstance().updateGamePanel(ui); // Enlarge jlayeredpane on resize @@ -118,7 +123,7 @@ public class GamePanel extends javax.swing.JPanel { jSplitPane1.setSize(width, height); } }); - + } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); @@ -140,8 +145,8 @@ public class GamePanel extends javax.swing.JPanel { } public void cleanUp() { - MageFrame.getCombatDialog().hideDialog(); - MageFrame.getPickNumberDialog().hide(); + combat.hideDialog(); + pickNumber.hide(); for (ExileZoneDialog exile: exiles.values()) { exile.hide(); } @@ -154,7 +159,7 @@ public class GamePanel extends javax.swing.JPanel { this.gameId = gameId; this.playerId = playerId; session = MageFrame.getSession(); - session.setGame(this); + session.addGame(gameId, this); this.feedbackPanel.init(gameId); this.feedbackPanel.clear(); this.abilityPicker.init(session, gameId); @@ -172,7 +177,7 @@ public class GamePanel extends javax.swing.JPanel { this.gameId = gameId; this.playerId = null; session = MageFrame.getSession(); - session.setGame(this); + session.addGame(gameId, this); this.feedbackPanel.init(gameId); this.feedbackPanel.clear(); this.btnConcede.setVisible(false); @@ -185,17 +190,18 @@ public class GamePanel extends javax.swing.JPanel { hideGame(); } - public synchronized void replayGame() { + public synchronized void replayGame(UUID gameId) { + this.gameId = gameId; this.playerId = null; session = MageFrame.getSession(); - session.setGame(this); + session.addGame(gameId, this); this.feedbackPanel.clear(); this.btnConcede.setVisible(false); this.btnStopWatching.setVisible(false); this.pnlReplay.setVisible(true); this.setVisible(true); this.chatPanel.clear(); - if (!session.replayGame()) + if (!session.replayGame(gameId)) hideGame(); } @@ -204,7 +210,7 @@ public class GamePanel extends javax.swing.JPanel { this.players.clear(); logger.log(Level.FINE, "players clear."); this.pnlBattlefield.removeAll(); - MageFrame.getCombatDialog().hideDialog(); + combat.hideDialog(); Component c = this.getParent(); while (c != null && !(c instanceof GamePane)) { c = c.getParent(); @@ -215,8 +221,8 @@ public class GamePanel extends javax.swing.JPanel { public synchronized void init(GameView game) { logger.warning("init."); - MageFrame.getCombatDialog().init(gameId, bigCard); - MageFrame.getCombatDialog().setLocation(500, 300); + combat.init(gameId, bigCard); + combat.setLocation(500, 300); addPlayers(game); logger.warning("added players."); updateGame(game); @@ -335,10 +341,10 @@ public class GamePanel extends javax.swing.JPanel { } showRevealed(game); if (game.getCombat().size() > 0) { - MageFrame.getCombatDialog().showDialog(game.getCombat()); + combat.showDialog(game.getCombat()); } else { - MageFrame.getCombatDialog().hideDialog(); + combat.hideDialog(); } this.revalidate(); this.repaint(); @@ -424,11 +430,11 @@ public class GamePanel extends javax.swing.JPanel { } public void getAmount(int min, int max, String message) { - MageFrame.getPickNumberDialog().showDialog(min, max, message); - if (MageFrame.getPickNumberDialog().isCancel()) + pickNumber.showDialog(min, max, message); + if (pickNumber.isCancel()) session.sendPlayerBoolean(gameId, false); else - session.sendPlayerInteger(gameId, MageFrame.getPickNumberDialog().getAmount()); + session.sendPlayerInteger(gameId, pickNumber.getAmount()); } public void getChoice(String message, String[] choices) { diff --git a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java index 37e6829402c..1c0eb452380 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java +++ b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java @@ -85,13 +85,13 @@ public class MageActionCallback implements ActionCallback { for (UUID uuid : targets) { //System.out.println("Getting play area panel for uuid: " + uuid); - PlayAreaPanel p = session.getGame().getPlayers().get(uuid); + PlayAreaPanel p = session.getGame(data.gameId).getPlayers().get(uuid); if (p != null) { Point target = p.getLocationOnScreen(); target.translate(-parentPoint.x, -parentPoint.y); ArrowBuilder.addArrow((int) me.getX() + 35, (int) me.getY(), (int) target.getX() + 40, (int) target.getY() - 40, Color.red); } else { - for (PlayAreaPanel pa : session.getGame().getPlayers().values()) { + for (PlayAreaPanel pa : session.getGame(data.gameId).getPlayers().values()) { MagePermanent permanent = pa.getBattlefieldPanel().getPermanents().get(uuid); if (permanent != null) { Point target = permanent.getLocationOnScreen(); @@ -108,7 +108,7 @@ public class MageActionCallback implements ActionCallback { Point me = new Point(data.locationOnScreen); me.translate(-parentPoint.x, -parentPoint.y); UUID uuid = data.card.getParentId(); - for (PlayAreaPanel pa : session.getGame().getPlayers().values()) { + for (PlayAreaPanel pa : session.getGame(data.gameId).getPlayers().values()) { MagePermanent permanent = pa.getBattlefieldPanel().getPermanents().get(uuid); if (permanent != null) { Point source = permanent.getLocationOnScreen(); diff --git a/Mage.Client/src/main/java/mage/client/remote/Client.java b/Mage.Client/src/main/java/mage/client/remote/Client.java index 17848e48ff2..c066fb8011f 100644 --- a/Mage.Client/src/main/java/mage/client/remote/Client.java +++ b/Mage.Client/src/main/java/mage/client/remote/Client.java @@ -30,19 +30,18 @@ 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 javax.swing.SwingUtilities; import mage.cards.decks.Deck; import mage.client.MageFrame; import mage.client.chat.ChatPanel; import mage.client.constants.Constants.DeckEditorMode; +import mage.client.draft.DraftPanel; +import mage.client.game.GamePanel; import mage.client.plugins.impl.Plugins; import mage.client.util.GameManager; import mage.interfaces.callback.CallbackClient; import mage.interfaces.callback.ClientCallback; -import mage.util.Logging; import mage.view.AbilityPickerView; import mage.view.ChatMessage; import mage.view.DraftClientMessage; @@ -50,6 +49,7 @@ import mage.view.DraftView; import mage.view.GameClientMessage; import mage.view.GameView; import mage.view.TableClientMessage; +import org.apache.log4j.Logger; /** * @@ -57,7 +57,7 @@ import mage.view.TableClientMessage; */ public class Client implements CallbackClient { - private final static Logger logger = Logging.getLogger(Client.class.getName()); + private final static Logger logger = Logger.getLogger(Client.class); private UUID clientId; private String userName; @@ -95,76 +95,109 @@ public class Client implements CallbackClient { draftStarted(message.getGameId(), message.getPlayerId()); } else if (callback.getMethod().equals("replayGame")) { - replayGame(); + replayGame(callback.getObjectId()); } else if (callback.getMethod().equals("watchGame")) { watchGame((UUID) callback.getData()); } else if (callback.getMethod().equals("chatMessage")) { ChatMessage message = (ChatMessage) callback.getData(); - ChatPanel panel = session.getChats().get(message.getChatId()); + ChatPanel panel = session.getChat(callback.getObjectId()); if (panel != null) panel.receiveMessage(message.getMessage(), message.getColor()); } else if (callback.getMethod().equals("replayInit")) { - session.getGame().init((GameView) callback.getData()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.init((GameView) callback.getData()); } else if (callback.getMethod().equals("replayDone")) { - session.getGame().modalMessage((String) callback.getData()); - session.getGame().hideGame(); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) { + panel.modalMessage((String) callback.getData()); + panel.hideGame(); + } } else if (callback.getMethod().equals("replayUpdate")) { - session.getGame().updateGame((GameView) callback.getData()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.updateGame((GameView) callback.getData()); } else if (callback.getMethod().equals("gameInit")) { - session.getGame().init((GameView) callback.getData()); - session.ack("gameInit"); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) { + panel.init((GameView) callback.getData()); + session.ack("gameInit"); + } } else if (callback.getMethod().equals("gameOver")) { - session.getGame().modalMessage((String) callback.getData()); - session.getGame().hideGame(); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) { + panel.modalMessage((String) callback.getData()); + panel.hideGame(); + } } else if (callback.getMethod().equals("gameAsk")) { GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().ask(message.getMessage(), message.getGameView()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.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.getTargets(), message.isFlag(), message.getOptions()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.pickTarget(message.getMessage(), message.getCardsView(), message.getGameView(), message.getTargets(), message.isFlag(), message.getOptions()); } else if (callback.getMethod().equals("gameSelect")) { GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().select(message.getMessage(), message.getGameView()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.select(message.getMessage(), message.getGameView()); } else if (callback.getMethod().equals("gameChooseAbility")) { - session.getGame().pickAbility((AbilityPickerView) callback.getData()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.pickAbility((AbilityPickerView) callback.getData()); } else if (callback.getMethod().equals("gameChoose")) { GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().getChoice(message.getMessage(), message.getStrings()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.getChoice(message.getMessage(), message.getStrings()); } else if (callback.getMethod().equals("gamePlayMana")) { GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().playMana(message.getMessage(), message.getGameView()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.playMana(message.getMessage(), message.getGameView()); } else if (callback.getMethod().equals("gamePlayXMana")) { GameClientMessage message = (GameClientMessage) callback.getData(); - session.getGame().playXMana(message.getMessage(), message.getGameView()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.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()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.getAmount(message.getMin(), message.getMax(), message.getMessage()); } else if (callback.getMethod().equals("gameUpdate")) { - session.getGame().updateGame((GameView) callback.getData()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.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()); + GamePanel panel = session.getGame(callback.getObjectId()); + if (panel != null) + panel.inform(message.getMessage(), message.getGameView()); } else { - logger.warning("message out of sequence - ignoring"); + logger.warn("message out of sequence - ignoring"); } } else if (callback.getMethod().equals("sideboard")) { @@ -176,21 +209,27 @@ public class Client implements CallbackClient { construct(message.getDeck(), message.getTableId(), message.getTime()); } else if (callback.getMethod().equals("draftOver")) { - session.getDraft().hideDraft(); + DraftPanel panel = session.getDraft(callback.getObjectId()); + if (panel != null) + panel.hideDraft(); } else if (callback.getMethod().equals("draftPick")) { DraftClientMessage message = (DraftClientMessage) callback.getData(); - session.getDraft().loadBooster(message.getDraftPickView()); + DraftPanel panel = session.getDraft(callback.getObjectId()); + if (panel != null) + panel.loadBooster(message.getDraftPickView()); } else if (callback.getMethod().equals("draftUpdate")) { - session.getDraft().updateDraft((DraftView) callback.getData()); + DraftPanel panel = session.getDraft(callback.getObjectId()); + if (panel != null) + panel.updateDraft((DraftView) callback.getData()); } else if (callback.getMethod().equals("draftInform")) { if (callback.getMessageId() > messageId) { DraftClientMessage message = (DraftClientMessage) callback.getData(); } else { - logger.warning("message out of sequence - ignoring"); + logger.warn("message out of sequence - ignoring"); } } else if (callback.getMethod().equals("draftInit")) { @@ -256,9 +295,9 @@ public class Client implements CallbackClient { } } - protected void replayGame() { + protected void replayGame(UUID gameId) { try { - frame.replayGame(); + frame.replayGame(gameId); logger.info("Replaying game"); } catch (Exception ex) { @@ -275,7 +314,7 @@ public class Client implements CallbackClient { } private void handleException(Exception ex) { - logger.log(Level.SEVERE, "Client error\n", ex); + logger.fatal("Client error\n", ex); JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Unrecoverable client error. Disconnecting", "Error", JOptionPane.ERROR_MESSAGE); session.disconnect(); frame.disableButtons(); diff --git a/Mage.Client/src/main/java/mage/client/remote/Session.java b/Mage.Client/src/main/java/mage/client/remote/Session.java index 202124dd8fd..00170da4f64 100644 --- a/Mage.Client/src/main/java/mage/client/remote/Session.java +++ b/Mage.Client/src/main/java/mage/client/remote/Session.java @@ -77,9 +77,9 @@ public class Session { private MageFrame frame; private ServerState serverState; private Map chats = new HashMap(); - private GamePanel game; - private DraftPanel draft; - private TournamentPanel tournament; + private Map games = new HashMap(); + private Map drafts = new HashMap(); + private Map tournaments = new HashMap(); private CallbackClientDaemon callbackDaemon; private MageUI ui = new MageUI(); @@ -171,28 +171,28 @@ public class Session { return serverState.isTestMode(); } - public Map getChats() { - return chats; + public ChatPanel getChat(UUID chatId) { + return chats.get(chatId); } - public GamePanel getGame() { - return game; + public GamePanel getGame(UUID gameId) { + return games.get(gameId); } - public void setGame(GamePanel gamePanel) { - game = gamePanel; + public void addGame(UUID gameId, GamePanel gamePanel) { + games.put(gameId, gamePanel); } - public DraftPanel getDraft() { - return draft; + public DraftPanel getDraft(UUID draftId) { + return drafts.get(draftId); } - public void setDraft(DraftPanel draftPanel) { - draft = draftPanel; + public void addDraft(UUID draftId, DraftPanel draftPanel) { + drafts.put(draftId, draftPanel); } - public void setTournament(TournamentPanel tournament) { - this.tournament = tournament; + public void addTournament(UUID tournamentId, TournamentPanel tournament) { + tournaments.put(tournamentId, tournament); } public UUID getMainRoomId() { @@ -480,9 +480,9 @@ public class Session { return false; } - public boolean replayGame() { + public boolean replayGame(UUID gameId) { try { - server.replayGame(sessionId); + server.replayGame(gameId, sessionId); return true; } catch (RemoteException ex) { handleRemoteException(ex); diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.form b/Mage.Client/src/main/java/mage/client/table/TablesPanel.form index f87a3125cc7..bcdad1179a2 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.form +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.form @@ -43,7 +43,7 @@ - + @@ -64,7 +64,7 @@ - + diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java index 2e50ac427de..70a2b12dcec 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -59,8 +59,6 @@ import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; import mage.client.dialog.NewTournamentDialog; -import mage.game.draft.DraftOptions; -import mage.game.tournament.TournamentOptions; /** @@ -222,7 +220,7 @@ public class TablesPanel extends javax.swing.JPanel implements Observer { jScrollPane1 = new javax.swing.JScrollPane(); tableTables = new javax.swing.JTable(); - btnNewTable.setText("New Table"); + btnNewTable.setText("New Match"); btnNewTable.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnNewTableActionPerformed(evt); @@ -254,7 +252,7 @@ public class TablesPanel extends javax.swing.JPanel implements Observer { .addComponent(btnNewTournament) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnQuickStart) - .addContainerGap(416, Short.MAX_VALUE)) + .addContainerGap(414, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) diff --git a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java index 13f3b203ac9..220ff946776 100644 --- a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java +++ b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java @@ -34,6 +34,7 @@ package mage.client.tournament; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -41,15 +42,17 @@ import java.util.List; import java.util.Observable; import java.util.Observer; import java.util.UUID; -import javax.swing.Timer; +import javax.swing.*; import javax.swing.table.AbstractTableModel; import mage.client.MageFrame; import mage.client.remote.MageRemoteException; import mage.client.remote.Session; +import mage.client.util.ButtonColumn; import mage.view.RoundView; import mage.view.TournamentGameView; import mage.view.TournamentPlayerView; import mage.view.TournamentView; +import org.apache.log4j.Logger; /** * @@ -57,6 +60,8 @@ import mage.view.TournamentView; */ public class TournamentPanel extends javax.swing.JPanel implements Observer { + private final static Logger logger = Logger.getLogger(TournamentPanel.class); + private UUID tournamentId; private Session session; private TournamentPlayersTableModel playersModel; @@ -73,12 +78,30 @@ public class TournamentPanel extends javax.swing.JPanel implements Observer { tablePlayers.createDefaultColumnsFromModel(); tableMatches.createDefaultColumnsFromModel(); + Action action = new AbstractAction() + { + @Override + public void actionPerformed(ActionEvent e) + { + int modelRow = Integer.valueOf( e.getActionCommand() ); + UUID tableId = UUID.fromString((String)tableMatches.getValueAt(modelRow, 3)); + String state = (String)tableMatches.getValueAt(modelRow, 4); + + if (state.equals("Finished")) { + logger.info("Replaying table " + tableId); + session.replayTable(null, tableId); + } + } + }; + + ButtonColumn buttonColumn = new ButtonColumn(tableMatches, action, 6); + } public synchronized void showTournament(UUID tournamentId) { this.tournamentId = tournamentId; session = MageFrame.getSession(); - session.setTournament(this); + session.addTournament(tournamentId, this); UUID chatRoomId = session.getTournamentChatId(tournamentId); if (session.joinTournament(tournamentId) && chatRoomId != null) { this.chatPanel1.connect(chatRoomId); @@ -218,7 +241,7 @@ class TournamentPlayersTableModel extends AbstractTableModel { } class TournamentMatchesTableModel extends AbstractTableModel { - private String[] columnNames = new String[]{"Round Number", "Players", "Match Id", "Game Id", "State", "Result"}; + private String[] columnNames = new String[]{"Round Number", "Players", "Match Id", "Game Id", "State", "Result", "Action"}; private TournamentGameView[] games = new TournamentGameView[0]; public void loadData(TournamentView tournament) { @@ -257,6 +280,11 @@ class TournamentMatchesTableModel extends AbstractTableModel { return games[arg0].getState(); case 5: return games[arg0].getResult(); + case 6: + if (games[arg0].getState().equals("Finished")) { + return "Replay"; + } + return ""; } return ""; } @@ -278,7 +306,9 @@ class TournamentMatchesTableModel extends AbstractTableModel { @Override public boolean isCellEditable(int rowIndex, int columnIndex) { - return false; + if (columnIndex != 6) + return false; + return true; } } diff --git a/Mage.Common/src/mage/interfaces/Server.java b/Mage.Common/src/mage/interfaces/Server.java index d11f445c7fe..d0b6d2278ad 100644 --- a/Mage.Common/src/mage/interfaces/Server.java +++ b/Mage.Common/src/mage/interfaces/Server.java @@ -102,7 +102,7 @@ public interface Server extends Remote, CallbackServer { public DraftPickView sendCardPick(UUID draftId, UUID sessionId, UUID cardId) throws RemoteException, MageException; //replay methods - public void replayGame(UUID sessionId) throws RemoteException, MageException; + public void replayGame(UUID gameId, UUID sessionId) throws RemoteException, MageException; public void stopReplay(UUID sessionId) throws RemoteException, MageException; public void nextPlay(UUID sessionId) throws RemoteException, MageException; public void previousPlay(UUID sessionId) throws RemoteException, MageException; diff --git a/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java b/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java index 655e07f6d2b..508a4a70fbf 100644 --- a/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java +++ b/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java @@ -87,6 +87,7 @@ public class CallbackServerSession { } callback.setMethod(call.getMethod()); callback.setData(call.getData()); + callback.setObjectId(call.getObjectId()); callback.setMessageId(call.getMessageId()); callbackCalled.signal(); } diff --git a/Mage.Common/src/mage/interfaces/callback/ClientCallback.java b/Mage.Common/src/mage/interfaces/callback/ClientCallback.java index f29d13d06d8..963eccb513b 100644 --- a/Mage.Common/src/mage/interfaces/callback/ClientCallback.java +++ b/Mage.Common/src/mage/interfaces/callback/ClientCallback.java @@ -29,26 +29,29 @@ package mage.interfaces.callback; import java.io.Serializable; +import java.util.UUID; /** * * @author BetaSteward_at_googlemail.com */ public class ClientCallback implements Serializable { - + + private UUID objectId; private Object data; private String method; private int messageId; public ClientCallback() {} - public ClientCallback(String method, Object data) { + public ClientCallback(String method, UUID objectId, Object data) { this.method = method; + this.objectId = objectId; this.data = data; } - public ClientCallback(String method) { - this(method, null); + public ClientCallback(String method, UUID objectId) { + this(method, objectId, null); } public void clear() { @@ -56,6 +59,14 @@ public class ClientCallback implements Serializable { data = null; } + public UUID getObjectId() { + return objectId; + } + + public void setObjectId(UUID objectId) { + this.objectId = objectId; + } + public Object getData() { return data; } diff --git a/Mage.Common/src/mage/view/ChatMessage.java b/Mage.Common/src/mage/view/ChatMessage.java index dde62bf3412..1ca09361ab3 100644 --- a/Mage.Common/src/mage/view/ChatMessage.java +++ b/Mage.Common/src/mage/view/ChatMessage.java @@ -38,7 +38,6 @@ import java.util.UUID; public class ChatMessage implements Serializable { private static final long serialVersionUID = 1L; - private UUID chatId; private String message; private MessageColor color; @@ -46,8 +45,7 @@ public class ChatMessage implements Serializable { BLACK, RED, GREEN, BLUE, ORANGE; } - public ChatMessage(UUID chatId, String message, MessageColor color) { - this.chatId = chatId; + public ChatMessage(String message, MessageColor color) { this.message = message; this.color = color; } @@ -56,10 +54,6 @@ public class ChatMessage implements Serializable { return message; } - public UUID getChatId() { - return chatId; - } - public MessageColor getColor() { return color; } diff --git a/Mage.Common/src/mage/view/GameView.java b/Mage.Common/src/mage/view/GameView.java index 0360e51ad87..91992a3fb43 100644 --- a/Mage.Common/src/mage/view/GameView.java +++ b/Mage.Common/src/mage/view/GameView.java @@ -31,6 +31,7 @@ package mage.view; import java.io.Serializable; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import mage.MageObject; import mage.Constants.PhaseStep; @@ -68,7 +69,7 @@ public class GameView implements Serializable { public GameView(GameState state, Game game) { for (Player player: state.getPlayers().values()) { - players.add(new PlayerView(player, game)); + players.add(new PlayerView(player, state, game)); } for (StackObject stackObject: state.getStack()) { if (stackObject instanceof StackAbility) { diff --git a/Mage.Common/src/mage/view/PlayerView.java b/Mage.Common/src/mage/view/PlayerView.java index d0715544b19..3eb7c0945b6 100644 --- a/Mage.Common/src/mage/view/PlayerView.java +++ b/Mage.Common/src/mage/view/PlayerView.java @@ -58,7 +58,7 @@ public class PlayerView implements Serializable { private CardsView graveyard = new CardsView(); private Map battlefield = new HashMap(); - public PlayerView(Player player, Game game) { + public PlayerView(Player player, GameState state, Game game) { this.playerId = player.getId(); this.name = player.getName(); this.life = player.getLife(); @@ -66,26 +66,26 @@ public class PlayerView implements Serializable { this.libraryCount = player.getLibrary().size(); this.handCount = player.getHand().size(); this.manaPool = new ManaPoolView(player.getManaPool()); - this.isActive = (player.getId().equals(game.getActivePlayerId())); + this.isActive = (player.getId().equals(state.getActivePlayerId())); this.hasLeft = player.hasLeft(); for (Card card: player.getGraveyard().getCards(game)) { graveyard.put(card.getId(), new CardView(card)); } - for (Permanent permanent: game.getBattlefield().getAllPermanents()) { - if (showInBattlefield(permanent, game)) { + for (Permanent permanent: state.getBattlefield().getAllPermanents()) { + if (showInBattlefield(permanent, state)) { PermanentView view = new PermanentView(permanent, game.getCard(permanent.getId())); battlefield.put(view.getId(), view); } } } - private boolean showInBattlefield(Permanent permanent, Game game) { + private boolean showInBattlefield(Permanent permanent, GameState state) { //show permanents controlled by player or attachments to permanents controlled by player if (permanent.getAttachedTo() == null) return permanent.getControllerId().equals(playerId); else { - Permanent attachedTo = game.getPermanent(permanent.getAttachedTo()); + Permanent attachedTo = state.getPermanent(permanent.getAttachedTo()); if (attachedTo != null) return attachedTo.getControllerId().equals(playerId); else diff --git a/Mage.Server/plugins/mage-player-ai.jar b/Mage.Server/plugins/mage-player-ai.jar index 08710ea9eec..75031eae3bf 100644 Binary files a/Mage.Server/plugins/mage-player-ai.jar and b/Mage.Server/plugins/mage-player-ai.jar differ diff --git a/Mage.Server/src/main/java/mage/server/ChatSession.java b/Mage.Server/src/main/java/mage/server/ChatSession.java index 49cfb33f9c0..fd9b55be5ce 100644 --- a/Mage.Server/src/main/java/mage/server/ChatSession.java +++ b/Mage.Server/src/main/java/mage/server/ChatSession.java @@ -78,7 +78,7 @@ public class ChatSession { for (UUID sessionId: clients.keySet()) { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("chatMessage", new ChatMessage(chatId, msg, color))); + session.fireCallback(new ClientCallback("chatMessage", chatId, new ChatMessage(msg, color))); else kill(sessionId); } diff --git a/Mage.Server/src/main/java/mage/server/ServerImpl.java b/Mage.Server/src/main/java/mage/server/ServerImpl.java index 4f68a20b88a..c2dc3c8d946 100644 --- a/Mage.Server/src/main/java/mage/server/ServerImpl.java +++ b/Mage.Server/src/main/java/mage/server/ServerImpl.java @@ -636,7 +636,7 @@ public class ServerImpl extends RemoteServer implements Server { } @Override - public void replayGame(final UUID sessionId) throws MageException { + public void replayGame(final UUID gameID, final UUID sessionId) throws MageException { try { rmiExecutor.execute( new Runnable() { diff --git a/Mage.Server/src/main/java/mage/server/Session.java b/Mage.Server/src/main/java/mage/server/Session.java index d15017b863f..eef8a75b16c 100644 --- a/Mage.Server/src/main/java/mage/server/Session.java +++ b/Mage.Server/src/main/java/mage/server/Session.java @@ -91,23 +91,23 @@ public class Session { } public void gameStarted(final UUID gameId, final UUID playerId) { - fireCallback(new ClientCallback("startGame", new TableClientMessage(gameId, playerId))); + fireCallback(new ClientCallback("startGame", gameId, new TableClientMessage(gameId, playerId))); } public void draftStarted(final UUID draftId, final UUID playerId) { - fireCallback(new ClientCallback("startDraft", new TableClientMessage(draftId, playerId))); + fireCallback(new ClientCallback("startDraft", draftId, new TableClientMessage(draftId, playerId))); } public void tournamentStarted(final UUID tournamentId, final UUID playerId) { - fireCallback(new ClientCallback("startTournament", new TableClientMessage(tournamentId, playerId))); + fireCallback(new ClientCallback("startTournament", tournamentId, new TableClientMessage(tournamentId, playerId))); } public void sideboard(final Deck deck, final UUID tableId, final int time) { - fireCallback(new ClientCallback("sideboard", new TableClientMessage(deck, tableId, time))); + fireCallback(new ClientCallback("sideboard", tableId, new TableClientMessage(deck, tableId, time))); } public void construct(final Deck deck, final UUID tableId, final int time) { - fireCallback(new ClientCallback("construct", new TableClientMessage(deck, tableId, time))); + fireCallback(new ClientCallback("construct", tableId, new TableClientMessage(deck, tableId, time))); } public void watchGame(final UUID gameId) { diff --git a/Mage.Server/src/main/java/mage/server/draft/DraftSession.java b/Mage.Server/src/main/java/mage/server/draft/DraftSession.java index eeae95f9bee..724ff217907 100644 --- a/Mage.Server/src/main/java/mage/server/draft/DraftSession.java +++ b/Mage.Server/src/main/java/mage/server/draft/DraftSession.java @@ -72,7 +72,7 @@ public class DraftSession { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) { session.clearAck(); - session.fireCallback(new ClientCallback("draftInit", draftView)); + session.fireCallback(new ClientCallback("draftInit", draft.getId(), draftView)); if (waitForAck("draftInit")) return true; } @@ -92,7 +92,7 @@ public class DraftSession { if (!killed) { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("draftUpdate", draftView)); + session.fireCallback(new ClientCallback("draftUpdate", draft.getId(), draftView)); } } @@ -100,7 +100,7 @@ public class DraftSession { if (!killed) { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("draftInform", new DraftClientMessage(draftView, message))); + session.fireCallback(new ClientCallback("draftInform", draft.getId(), new DraftClientMessage(draftView, message))); } } @@ -108,7 +108,7 @@ public class DraftSession { if (!killed) { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("draftOver")); + session.fireCallback(new ClientCallback("draftOver", draft.getId())); } } @@ -117,7 +117,7 @@ public class DraftSession { setupTimeout(timeout); Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("draftPick", new DraftClientMessage(draftPickView))); + session.fireCallback(new ClientCallback("draftPick", draft.getId(), new DraftClientMessage(draftPickView))); } } diff --git a/Mage.Server/src/main/java/mage/server/game/GameSession.java b/Mage.Server/src/main/java/mage/server/game/GameSession.java index a97b0ce17e9..526d3a4ee33 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameSession.java +++ b/Mage.Server/src/main/java/mage/server/game/GameSession.java @@ -69,7 +69,7 @@ public class GameSession extends GameWatcher { setupTimeout(); Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gameAsk", new GameClientMessage(gameView, question))); + session.fireCallback(new ClientCallback("gameAsk", game.getId(), new GameClientMessage(gameView, question))); } } @@ -78,7 +78,7 @@ public class GameSession extends GameWatcher { setupTimeout(); Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gameTarget", new GameClientMessage(gameView, question, cardView, targets, required, options))); + session.fireCallback(new ClientCallback("gameTarget", game.getId(), new GameClientMessage(gameView, question, cardView, targets, required, options))); } } @@ -87,7 +87,7 @@ public class GameSession extends GameWatcher { setupTimeout(); Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gameSelect", new GameClientMessage(gameView, message))); + session.fireCallback(new ClientCallback("gameSelect", game.getId(), new GameClientMessage(gameView, message))); } } @@ -96,7 +96,7 @@ public class GameSession extends GameWatcher { setupTimeout(); Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gameChooseAbility", abilities)); + session.fireCallback(new ClientCallback("gameChooseAbility", game.getId(), abilities)); } } @@ -105,7 +105,7 @@ public class GameSession extends GameWatcher { setupTimeout(); Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gameChoose", new GameClientMessage(choices.toArray(new String[0]), message))); + session.fireCallback(new ClientCallback("gameChoose", game.getId(), new GameClientMessage(choices.toArray(new String[0]), message))); } } @@ -114,7 +114,7 @@ public class GameSession extends GameWatcher { setupTimeout(); Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gamePlayMana", new GameClientMessage(gameView, message))); + session.fireCallback(new ClientCallback("gamePlayMana", game.getId(), new GameClientMessage(gameView, message))); } } @@ -123,7 +123,7 @@ public class GameSession extends GameWatcher { setupTimeout(); Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gamePlayXMana", new GameClientMessage(gameView, message))); + session.fireCallback(new ClientCallback("gamePlayXMana", game.getId(), new GameClientMessage(gameView, message))); } } @@ -132,7 +132,7 @@ public class GameSession extends GameWatcher { setupTimeout(); Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gameSelectAmount", new GameClientMessage(message, min, max))); + session.fireCallback(new ClientCallback("gameSelectAmount", game.getId(), new GameClientMessage(message, min, max))); } } @@ -140,7 +140,7 @@ public class GameSession extends GameWatcher { if (!killed) { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gameReveal", new GameClientMessage(cardView, name))); + session.fireCallback(new ClientCallback("gameReveal", game.getId(), new GameClientMessage(cardView, name))); } } diff --git a/Mage.Server/src/main/java/mage/server/game/GameWatcher.java b/Mage.Server/src/main/java/mage/server/game/GameWatcher.java index c35c8165f58..1adc2b5d91e 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameWatcher.java +++ b/Mage.Server/src/main/java/mage/server/game/GameWatcher.java @@ -61,7 +61,7 @@ public class GameWatcher { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) { session.clearAck(); - session.fireCallback(new ClientCallback("gameInit", gameView)); + session.fireCallback(new ClientCallback("gameInit", gameId, gameView)); if (waitForAck("gameInit")) return true; } @@ -81,7 +81,7 @@ public class GameWatcher { if (!killed) { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gameUpdate", gameView)); + session.fireCallback(new ClientCallback("gameUpdate", gameId, gameView)); } } @@ -89,7 +89,7 @@ public class GameWatcher { if (!killed) { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gameInform", new GameClientMessage(gameView, message))); + session.fireCallback(new ClientCallback("gameInform", gameId, new GameClientMessage(gameView, message))); } } @@ -97,7 +97,7 @@ public class GameWatcher { if (!killed) { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gameOver", message)); + session.fireCallback(new ClientCallback("gameOver", gameId, message)); } } diff --git a/Mage.Server/src/main/java/mage/server/game/ReplaySession.java b/Mage.Server/src/main/java/mage/server/game/ReplaySession.java index ac050e8af45..5683e74bb78 100644 --- a/Mage.Server/src/main/java/mage/server/game/ReplaySession.java +++ b/Mage.Server/src/main/java/mage/server/game/ReplaySession.java @@ -59,7 +59,7 @@ public class ReplaySession implements GameCallback { replay.start(); Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("replayInit", new GameView(replay.next(), replay.getGame()))); + session.fireCallback(new ClientCallback("replayInit", replay.getGame().getId(), new GameView(replay.next(), replay.getGame()))); } public void stop() { @@ -78,7 +78,7 @@ public class ReplaySession implements GameCallback { public void gameResult(final String result) { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("replayDone", result)); + session.fireCallback(new ClientCallback("replayDone", replay.getGame().getId(), result)); } private void updateGame(final GameState state, Game game) { @@ -88,7 +88,7 @@ public class ReplaySession implements GameCallback { else { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("replayUpdate", new GameView(state, game))); + session.fireCallback(new ClientCallback("replayUpdate", replay.getGame().getId(), new GameView(state, game))); } } diff --git a/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java b/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java index 34abc7d3f16..5286f79b5d5 100644 --- a/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java +++ b/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java @@ -72,7 +72,7 @@ public class TournamentSession { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) { session.clearAck(); - session.fireCallback(new ClientCallback("tournamentInit", tournamentView)); + session.fireCallback(new ClientCallback("tournamentInit", tournament.getId(), tournamentView)); if (waitForAck("tournamentInit")) return true; } @@ -92,7 +92,7 @@ public class TournamentSession { if (!killed) { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("tournamentUpdate", tournamentView)); + session.fireCallback(new ClientCallback("tournamentUpdate", tournament.getId(), tournamentView)); } } @@ -100,7 +100,7 @@ public class TournamentSession { if (!killed) { Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("tournamentOver", message)); + session.fireCallback(new ClientCallback("tournamentOver", tournament.getId(), message)); } } diff --git a/Mage/src/mage/game/tournament/TournamentImpl.java b/Mage/src/mage/game/tournament/TournamentImpl.java index 6c48e4ebee7..01f16f20f78 100644 --- a/Mage/src/mage/game/tournament/TournamentImpl.java +++ b/Mage/src/mage/game/tournament/TournamentImpl.java @@ -41,7 +41,6 @@ import java.util.logging.Logger; import mage.cards.Card; import mage.cards.ExpansionSet; import mage.cards.decks.Deck; -import mage.game.Table; import mage.game.events.Listener; import mage.game.events.PlayerQueryEvent; import mage.game.events.PlayerQueryEventSource;