diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index a2306fef8a9..c78aa51de15 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -96,6 +96,7 @@ import java.util.prefs.Preferences; import static mage.client.dialog.PreferencesDialog.KEY_CONNECT_FLAG; import mage.cards.repository.ExpansionInfo; import mage.cards.repository.ExpansionRepository; +import mage.client.util.GameManager; import mage.client.util.audio.AudioManager; import mage.interfaces.ServerState; import mage.view.ChatMessage; @@ -1477,6 +1478,21 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { showTableWaitingDialog(roomId, tableId, chatId, owner, tournament); } + @Override + public void gameStarted(UUID gameId, UUID playerId) { +// try { + GameManager.getInstance().setCurrentPlayerUUID(playerId); + showGame(gameId, playerId); + logger.info("Game " + gameId + " started for player " + playerId); +// } catch (Exception ex) { +// handleException(ex); +// } + + if (Plugins.getInstance().isCounterPluginLoaded()) { + Plugins.getInstance().addGamesPlayed(); + } + } + } class MagePaneMenuItem extends JCheckBoxMenuItem { 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 eb46bf74c75..29ce7549cc8 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -382,10 +382,11 @@ public final class GamePanel extends javax.swing.JPanel { this.pnlReplay.setVisible(false); this.gameChatPanel.clear(); - this.gameChatPanel.connect(client.getGameChatId(gameId)); - if (!client.joinGame(gameId)) { + UUID chatId = client.joinGame(gameId); + if (chatId == null) { removeGame(); - } else { + } else { + this.gameChatPanel.connect(chatId); // play start sound AudioManager.playYourGameStarted(); } @@ -415,10 +416,13 @@ public final class GamePanel extends javax.swing.JPanel { this.pnlReplay.setVisible(false); this.gameChatPanel.clear(); - this.gameChatPanel.connect(client.getGameChatId(gameId)); - if (!client.watchGame(gameId)) { + UUID chatId = client.watchGame(gameId); + if (chatId == null) { removeGame(); } + else { + this.gameChatPanel.connect(chatId); + } for (PlayAreaPanel panel : getPlayers().values()) { panel.setPlayingMode(false); } diff --git a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java index dea27be8c6c..40b86bae5dc 100644 --- a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java +++ b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java @@ -91,10 +91,10 @@ public class CallbackClientImpl implements CallbackClient { switch (callback.getMethod()) { case "startGame": { - TableClientMessage message = (TableClientMessage) callback.getData(); - GameManager.getInstance().setCurrentPlayerUUID(message.getPlayerId()); - gameStarted(message.getGameId(), message.getPlayerId()); - break; +// TableClientMessage message = (TableClientMessage) callback.getData(); +// GameManager.getInstance().setCurrentPlayerUUID(message.getPlayerId()); +// gameStarted(message.getGameId(), message.getPlayerId()); +// break; } case "startTournament": { @@ -433,18 +433,18 @@ public class CallbackClientImpl implements CallbackClient { // } // } - protected void gameStarted(final UUID gameId, final UUID playerId) { - try { - frame.showGame(gameId, playerId); - logger.info("Game " + gameId + " started for player " + playerId); - } catch (Exception ex) { - handleException(ex); - } - - if (Plugins.getInstance().isCounterPluginLoaded()) { - Plugins.getInstance().addGamesPlayed(); - } - } +// protected void gameStarted(final UUID gameId, final UUID playerId) { +// try { +// frame.showGame(gameId, playerId); +// logger.info("Game " + gameId + " started for player " + playerId); +// } catch (Exception ex) { +// handleException(ex); +// } +// +// if (Plugins.getInstance().isCounterPluginLoaded()) { +// Plugins.getInstance().addGamesPlayed(); +// } +// } protected void draftStarted(UUID draftId, UUID playerId) { try { diff --git a/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java b/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java index b92d3f560f1..a8c52eca335 100644 --- a/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java +++ b/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java @@ -128,6 +128,11 @@ public class MultiConnectTest { public void joinedTable(UUID roomId, UUID tableId, UUID chatId, boolean owner, boolean tournament) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + + @Override + public void gameStarted(UUID gameId, UUID playerId) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } } public static void main(String[] argv) throws Exception { diff --git a/Mage.Network/src/main/java/org/mage/network/Client.java b/Mage.Network/src/main/java/org/mage/network/Client.java index 22f806306be..000852e336b 100644 --- a/Mage.Network/src/main/java/org/mage/network/Client.java +++ b/Mage.Network/src/main/java/org/mage/network/Client.java @@ -362,15 +362,20 @@ public class Client { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } - public UUID getGameChatId(UUID gameId) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. +// public UUID getGameChatId(UUID gameId) { +// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. +// } + + public UUID joinGame(UUID gameId) { + try { + return clientMessageHandler.joinGame(gameId); + } catch (Exception ex) { + logger.error("Error joining game", ex); + } + return null; } - public boolean joinGame(UUID gameId) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - public boolean watchGame(UUID gameId) { + public UUID watchGame(UUID gameId) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } diff --git a/Mage.Network/src/main/java/org/mage/network/Server.java b/Mage.Network/src/main/java/org/mage/network/Server.java index f51cd3edff9..50c910944a4 100644 --- a/Mage.Network/src/main/java/org/mage/network/Server.java +++ b/Mage.Network/src/main/java/org/mage/network/Server.java @@ -36,6 +36,7 @@ import org.mage.network.handlers.server.ServerRequestHandler; //import org.mage.network.handlers.server.TableMessageHandler; import org.mage.network.interfaces.MageServer; import org.mage.network.model.ChatMessageMessage; +import org.mage.network.model.GameStartedMessage; import org.mage.network.model.InformClientMessage; import org.mage.network.model.JoinedTableMessage; import org.mage.network.model.MessageType; @@ -179,5 +180,11 @@ public class Server { ch.writeAndFlush(new JoinedTableMessage(roomId, tableId, chatId, owner, tournament)).addListener(WriteListener.getInstance()); } + public void gameStarted(String sessionId, UUID gameId, UUID playerId) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameStartedMessage(gameId, playerId)).addListener(WriteListener.getInstance()); + } + } diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/ClientMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/ClientMessageHandler.java index bb3f77058a2..8ff7bfccb42 100644 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/ClientMessageHandler.java +++ b/Mage.Network/src/main/java/org/mage/network/handlers/client/ClientMessageHandler.java @@ -18,6 +18,7 @@ import org.mage.network.model.ClientMessage; import org.mage.network.model.CreateTableRequest; import org.mage.network.model.GetRoomRequest; import org.mage.network.model.JoinChatRequest; +import org.mage.network.model.JoinGameRequest; import org.mage.network.model.JoinTableRequest; import org.mage.network.model.LeaveChatRequest; import org.mage.network.model.LeaveTableRequest; @@ -104,6 +105,12 @@ public class ClientMessageHandler extends SimpleChannelInboundHandler entry: gameSessions.entrySet()) { - ccGameStarted(entry.getValue().getGameId(), entry.getKey()); + gameStarted(entry.getValue().getGameId(), entry.getKey()); entry.getValue().init(); GameManager.getInstance().sendPlayerString(entry.getValue().getGameId(), userId, ""); }