From 4bb7ffd452772aa6b29977d1b531d7d0c384aafd Mon Sep 17 00:00:00 2001 From: betasteward Date: Sat, 11 Jul 2015 07:40:06 -0400 Subject: [PATCH] added watch game methods --- .../src/main/java/mage/client/MageFrame.java | 15 ++-- .../main/java/mage/client/game/GamePane.java | 5 +- .../main/java/mage/client/game/GamePanel.java | 4 +- .../mage/client/game/MultiConnectTest.java | 5 ++ .../main/java/org/mage/network/Client.java | 22 +++-- .../main/java/org/mage/network/Server.java | 7 +- .../handlers/client/ClientMessageHandler.java | 29 ++++-- .../mage/network/interfaces/MageClient.java | 1 + .../mage/network/interfaces/MageServer.java | 4 + .../messages/callback/WatchGameCallback.java | 28 ++++++ .../requests/StopWatchingRequest.java | 23 +++++ .../messages/requests/WatchGameRequest.java | 25 ++++++ .../messages/requests/WatchTableRequest.java | 25 ++++++ .../requests/WatchTournamentTableRequest.java | 23 +++++ .../src/main/java/mage/server/ServerMain.java | 89 ++++++------------- .../java/mage/server/TableController.java | 11 ++- .../main/java/mage/server/TableManager.java | 5 +- .../src/main/java/mage/server/User.java | 7 +- .../java/mage/server/game/GameController.java | 8 +- .../java/mage/server/game/GameManager.java | 5 +- .../main/java/mage/server/game/GamesRoom.java | 3 +- .../java/mage/server/game/GamesRoomImpl.java | 5 +- 22 files changed, 235 insertions(+), 114 deletions(-) create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/callback/WatchGameCallback.java create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/requests/StopWatchingRequest.java create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/requests/WatchGameRequest.java create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/requests/WatchTableRequest.java create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/requests/WatchTournamentTableRequest.java diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 26f52877701..6b5c43fa2cd 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -665,7 +665,8 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { }); } - public void watchGame(final UUID gameId) { + @Override + public void watchGame(final UUID gameId, final UUID chatId, final GameView game) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { @@ -681,7 +682,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { desktopPane.add(gamePane, JLayeredPane.DEFAULT_LAYER); gamePane.setMaximum(true); gamePane.setVisible(true); - gamePane.watchGame(gameId); + gamePane.watchGame(gameId, chatId, game); setActive(gamePane); } catch (PropertyVetoException ex) { } @@ -1524,13 +1525,9 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { @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); -// } + GameManager.getInstance().setCurrentPlayerUUID(playerId); + showGame(gameId, playerId); + logger.info("Game " + gameId + " started for player " + playerId); if (Plugins.getInstance().isCounterPluginLoaded()) { Plugins.getInstance().addGamesPlayed(); 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 9b7c00a5eb7..905a893fab5 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePane.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePane.java @@ -38,6 +38,7 @@ import java.util.UUID; import javax.swing.SwingUtilities; import static javax.swing.WindowConstants.DISPOSE_ON_CLOSE; import mage.client.MagePane; +import mage.view.GameView; /** * @@ -74,10 +75,10 @@ public class GamePane extends MagePane { this.removeFrame(); } - public void watchGame(UUID gameId) { + public void watchGame(UUID gameId, UUID chatId, GameView game) { this.setTitle("Watching " + gameId); this.gameId = gameId; - gamePanel.watchGame(gameId, this); + gamePanel.watchGame(gameId, chatId, game, this); } public void replayGame(UUID gameId) { 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 5f64dc2fb86..9341ca100eb 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -400,7 +400,7 @@ public final class GamePanel extends javax.swing.JPanel { } } - public synchronized void watchGame(UUID gameId, GamePane gamePane) { + public synchronized void watchGame(UUID gameId, UUID chatId, GameView game, GamePane gamePane) { this.gameId = gameId; this.gamePane = gamePane; this.playerId = null; @@ -423,13 +423,13 @@ public final class GamePanel extends javax.swing.JPanel { this.pnlReplay.setVisible(false); this.gameChatPanel.clear(); - UUID chatId = client.watchGame(gameId); if (chatId == null) { removeGame(); } else { this.gameChatPanel.connect(chatId); } + this.init(game); for (PlayAreaPanel panel : getPlayers().values()) { panel.setPlayingMode(false); } 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 ebfae09dceb..f4e22f60fd3 100644 --- a/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java +++ b/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java @@ -271,6 +271,11 @@ public class MultiConnectTest { public void tournamentStarted(UUID tournamentId) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + + @Override + public void watchGame(UUID gameId, UUID chatId, GameView game) { + 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 ed8d0aaebfa..f67e7fce48a 100644 --- a/Mage.Network/src/main/java/org/mage/network/Client.java +++ b/Mage.Network/src/main/java/org/mage/network/Client.java @@ -330,7 +330,11 @@ public class Client { } public void watchTournamentTable(UUID tableId) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + try { + clientMessageHandler.watchTournamentTable(tableId); + } catch (Exception ex) { + logger.error("Error watching tournament table", ex); + } } public UUID getTournamentChatId(UUID tournamentId) { @@ -369,7 +373,11 @@ public class Client { } public void watchTable(UUID roomId, UUID tableId) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + try { + clientMessageHandler.watchTable(roomId, tableId); + } catch (Exception ex) { + logger.error("Error watching table", ex); + } } public void replayGame(UUID gameId) { @@ -416,16 +424,16 @@ public class Client { return null; } - public UUID watchGame(UUID gameId) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - public boolean startReplay(UUID gameId) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } public void stopWatching(UUID gameId) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + try { + clientMessageHandler.stopWatching(gameId); + } catch (Exception ex) { + logger.error("Error stopping watching game", ex); + } } public void stopReplay(UUID gameId) { 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 c2161d23f68..67ac550d4eb 100644 --- a/Mage.Network/src/main/java/org/mage/network/Server.java +++ b/Mage.Network/src/main/java/org/mage/network/Server.java @@ -75,6 +75,7 @@ import org.mage.network.messages.callback.SideboardCallback; import org.mage.network.messages.callback.StartDraftCallback; import org.mage.network.messages.callback.TournamentStartedCallback; import org.mage.network.messages.callback.UserRequestDialogCallback; +import org.mage.network.messages.callback.WatchGameCallback; /** * @@ -364,8 +365,10 @@ public class Server { ch.writeAndFlush(new ShowTournamentCallback(tournamentId)).addListener(WriteListener.getInstance()); } - public void watchGame(String sessionId, UUID gameId) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + public void watchGame(String sessionId, UUID gameId, UUID chatId, GameView game) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new WatchGameCallback(gameId, chatId, game)).addListener(WriteListener.getInstance()); } public void replayGame(String sessionId, UUID gameId) { 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 39b3db1e2fc..4108299bfc9 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 @@ -1,12 +1,5 @@ package org.mage.network.handlers.client; -import org.mage.network.messages.requests.GetTournamentChatIdRequest; -import org.mage.network.messages.requests.GetTournamentRequest; -import org.mage.network.messages.requests.JoinTournamentRequest; -import org.mage.network.messages.requests.StartTournamentRequest; -import org.mage.network.messages.requests.CreateTournamentRequest; -import org.mage.network.messages.requests.QuitTournamentRequest; -import org.mage.network.messages.requests.QuitMatchRequest; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import java.io.Serializable; @@ -31,11 +24,15 @@ import org.mage.network.messages.ClientMessage; import org.mage.network.messages.requests.ChatMessageRequest; import org.mage.network.messages.requests.ChatRoomIdRequest; import org.mage.network.messages.requests.CreateTableRequest; +import org.mage.network.messages.requests.CreateTournamentRequest; import org.mage.network.messages.requests.GetRoomRequest; +import org.mage.network.messages.requests.GetTournamentChatIdRequest; +import org.mage.network.messages.requests.GetTournamentRequest; import org.mage.network.messages.requests.JoinChatRequest; import org.mage.network.messages.requests.JoinDraftRequest; import org.mage.network.messages.requests.JoinGameRequest; import org.mage.network.messages.requests.JoinTableRequest; +import org.mage.network.messages.requests.JoinTournamentRequest; import org.mage.network.messages.requests.JoinTournamentTableRequest; import org.mage.network.messages.requests.LeaveChatRequest; import org.mage.network.messages.requests.LeaveTableRequest; @@ -43,6 +40,8 @@ import org.mage.network.messages.requests.MarkCardRequest; import org.mage.network.messages.requests.PickCardRequest; import org.mage.network.messages.requests.PlayerActionRequest; import org.mage.network.messages.requests.QuitDraftRequest; +import org.mage.network.messages.requests.QuitMatchRequest; +import org.mage.network.messages.requests.QuitTournamentRequest; import org.mage.network.messages.requests.RemoveTableRequest; import org.mage.network.messages.requests.SendFeedbackRequest; import org.mage.network.messages.requests.SendPlayerBooleanRequest; @@ -53,10 +52,14 @@ import org.mage.network.messages.requests.SendPlayerUUIDRequest; import org.mage.network.messages.requests.ServerMessagesRequest; import org.mage.network.messages.requests.SetPreferencesRequest; import org.mage.network.messages.requests.StartMatchRequest; +import org.mage.network.messages.requests.StartTournamentRequest; +import org.mage.network.messages.requests.StopWatchingRequest; import org.mage.network.messages.requests.SubmitDeckRequest; import org.mage.network.messages.requests.SwapSeatRequest; import org.mage.network.messages.requests.TableWaitingRequest; import org.mage.network.messages.requests.UpdateDeckRequest; +import org.mage.network.messages.requests.WatchTableRequest; +import org.mage.network.messages.requests.WatchTournamentTableRequest; /** * @@ -301,4 +304,16 @@ public class ClientMessageHandler extends SimpleChannelInboundHandler