From 72a301d60481ab2925274d3d432407e828aef56b Mon Sep 17 00:00:00 2001 From: betasteward Date: Thu, 25 Jun 2015 21:32:05 -0400 Subject: [PATCH] add more methods + refactored some packages --- .../src/main/java/mage/client/MageFrame.java | 184 ++++++++++++------ .../client/remote/CallbackClientImpl.java | 97 ++++----- .../mage/client/game/MultiConnectTest.java | 29 ++- .../main/java/org/mage/network/Client.java | 9 +- .../main/java/org/mage/network/Server.java | 77 +++++--- .../network/handlers/PingMessageHandler.java | 4 +- .../handlers/client/ClientMessageHandler.java | 55 +++--- .../ClientRegisteredMessageHandler.java | 6 +- .../handlers/client/HeartbeatHandler.java | 2 +- .../handlers/server/HeartbeatHandler.java | 4 +- .../handlers/server/ServerRequestHandler.java | 2 +- .../mage/network/interfaces/MageClient.java | 9 +- .../mage/network/interfaces/MageServer.java | 1 + .../ChatMessageMessage.java | 2 +- .../{model => messages}/ClientMessage.java | 2 +- .../{model => messages}/GameAskMessage.java | 2 +- .../GameChooseAbilityMessage.java | 2 +- .../GameChooseChoiceMessage.java | 2 +- .../GameChoosePileMessage.java | 2 +- .../GameEndInfoMessage.java | 2 +- .../network/messages/GameErrorMessage.java | 24 +++ .../network/messages/GameInformMessage.java | 25 +++ .../messages/GameInformPersonalMessage.java | 25 +++ .../{model => messages}/GameInitMessage.java | 2 +- .../network/messages/GameOverMessage.java | 24 +++ .../GamePlayManaMessage.java | 2 +- .../GamePlayXManaMessage.java | 2 +- .../GameSelectAmountMessage.java | 2 +- .../GameSelectMessage.java | 2 +- .../GameStartedMessage.java | 2 +- .../GameTargetMessage.java | 2 +- .../network/messages/GameUpdateMessage.java | 25 +++ .../InformClientMessage.java | 2 +- .../JoinedTableMessage.java | 2 +- .../{model => messages}/LeftTableMessage.java | 3 +- .../{model => messages}/MessageType.java | 2 +- .../{model => messages}/PingMessage.java | 2 +- .../{model => messages}/PongMessage.java | 2 +- .../UserRequestDialogMessage.java | 2 +- .../requests}/ChatMessageRequest.java | 2 +- .../requests}/ChatRoomIdRequest.java | 3 +- .../requests}/CreateTableRequest.java | 3 +- .../requests}/GetRoomRequest.java | 3 +- .../requests}/JoinChatRequest.java | 2 +- .../requests}/JoinGameRequest.java | 3 +- .../requests}/JoinTableRequest.java | 3 +- .../requests}/LeaveChatRequest.java | 2 +- .../requests}/LeaveTableRequest.java | 3 +- .../requests}/PlayerActionRequest.java | 2 +- .../requests}/RegisterClientRequest.java | 3 +- .../requests}/RemoveTableRequest.java | 2 +- .../requests}/SendFeedbackRequest.java | 2 +- .../requests}/SendPlayerBooleanRequest.java | 2 +- .../requests}/SendPlayerIntegerRequest.java | 2 +- .../requests}/SendPlayerManaTypeRequest.java | 2 +- .../requests}/SendPlayerStringRequest.java | 2 +- .../requests}/SendPlayerUUIDRequest.java | 2 +- .../requests}/ServerMessagesRequest.java | 3 +- .../requests}/ServerRequest.java | 2 +- .../requests}/SetPreferencesRequest.java | 2 +- .../requests}/StartMatchRequest.java | 3 +- .../messages/requests/SubmitDeckRequest.java | 28 +++ .../requests}/SwapSeatRequest.java | 2 +- .../requests}/TableWaitingRequest.java | 3 +- .../responses}/ChatRoomIdMessage.java | 3 +- .../responses}/ClientRegisteredMessage.java | 2 +- .../responses}/CreateTableMessage.java | 3 +- .../responses}/JoinGameMessage.java | 3 +- .../responses}/JoinTableMessage.java | 3 +- .../responses}/RoomMessage.java | 3 +- .../responses}/ServerMessagesMessage.java | 3 +- .../responses}/StartMatchMessage.java | 3 +- .../messages/responses/SubmitDeckMessage.java | 23 +++ .../responses}/TableWaitingMessage.java | 3 +- .../mage/server/console/ConsoleFrame.java | 29 ++- .../java/org/mage/server/test/TestClient.java | 28 ++- .../src/main/java/mage/server/ServerMain.java | 47 +++-- .../main/java/mage/server/SessionManager.java | 2 +- .../java/mage/server/TableController.java | 17 +- .../main/java/mage/server/TableManager.java | 3 +- .../src/main/java/mage/server/User.java | 34 +++- .../mage/server/game/GameSessionWatcher.java | 11 +- Mage/src/mage/cards/decks/DeckValidator.java | 10 + 83 files changed, 693 insertions(+), 268 deletions(-) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/ChatMessageMessage.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/ClientMessage.java (88%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GameAskMessage.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GameChooseAbilityMessage.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GameChooseChoiceMessage.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GameChoosePileMessage.java (95%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GameEndInfoMessage.java (94%) create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/GameErrorMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/GameInformMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/GameInformPersonalMessage.java rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GameInitMessage.java (93%) create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/GameOverMessage.java rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GamePlayManaMessage.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GamePlayXManaMessage.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GameSelectAmountMessage.java (95%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GameSelectMessage.java (95%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GameStartedMessage.java (93%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/GameTargetMessage.java (97%) create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/GameUpdateMessage.java rename Mage.Network/src/main/java/org/mage/network/{model => messages}/InformClientMessage.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/JoinedTableMessage.java (95%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/LeftTableMessage.java (81%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/MessageType.java (74%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/PingMessage.java (77%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/PongMessage.java (77%) rename Mage.Network/src/main/java/org/mage/network/{model => messages}/UserRequestDialogMessage.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/ChatMessageRequest.java (93%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/ChatRoomIdRequest.java (84%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/CreateTableRequest.java (87%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/GetRoomRequest.java (85%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/JoinChatRequest.java (91%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/JoinGameRequest.java (85%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/JoinTableRequest.java (91%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/LeaveChatRequest.java (91%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/LeaveTableRequest.java (86%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/PlayerActionRequest.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/RegisterClientRequest.java (92%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/RemoveTableRequest.java (93%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/SendFeedbackRequest.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/SendPlayerBooleanRequest.java (92%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/SendPlayerIntegerRequest.java (92%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/SendPlayerManaTypeRequest.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/SendPlayerStringRequest.java (93%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/SendPlayerUUIDRequest.java (92%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/ServerMessagesRequest.java (81%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/ServerRequest.java (88%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/SetPreferencesRequest.java (92%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/StartMatchRequest.java (86%) create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/requests/SubmitDeckRequest.java rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/SwapSeatRequest.java (94%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/requests}/TableWaitingRequest.java (86%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/responses}/ChatRoomIdMessage.java (81%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/responses}/ClientRegisteredMessage.java (89%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/responses}/CreateTableMessage.java (82%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/responses}/JoinGameMessage.java (81%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/responses}/JoinTableMessage.java (81%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/responses}/RoomMessage.java (83%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/responses}/ServerMessagesMessage.java (83%) rename Mage.Network/src/main/java/org/mage/network/{model => messages/responses}/StartMatchMessage.java (81%) create mode 100644 Mage.Network/src/main/java/org/mage/network/messages/responses/SubmitDeckMessage.java rename Mage.Network/src/main/java/org/mage/network/{model => messages/responses}/TableWaitingMessage.java (82%) diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 3dba3dcf775..69ec5dcf154 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -27,59 +27,22 @@ */ package mage.client; -import mage.cards.decks.Deck; -import mage.cards.repository.CardCriteria; -import mage.cards.repository.CardInfo; -import mage.cards.repository.CardRepository; -import mage.client.cards.BigCard; -import mage.client.chat.ChatPanel; -import mage.client.components.MageComponents; -import mage.client.components.MageJDesktop; -import mage.client.components.MageRoundPane; -import mage.client.components.MageUI; -import mage.client.components.ext.dlg.DialogManager; -import mage.client.components.tray.MageTray; -import mage.client.constants.Constants.DeckEditorMode; -import mage.client.deckeditor.DeckEditorPane; -import mage.client.deckeditor.collection.viewer.CollectionViewerPane; -import mage.client.dialog.*; -import mage.client.draft.DraftPane; -import mage.client.draft.DraftPanel; -import mage.client.game.GamePane; -import mage.client.game.GamePanel; -import mage.client.plugins.impl.Plugins; -import mage.client.remote.CallbackClientImpl; -import mage.client.table.TablesPane; -import mage.client.tournament.TournamentPane; -import mage.client.util.EDTExceptionHandler; -import mage.client.util.SettingsManager; -import mage.client.util.SystemUtil; -import mage.client.util.audio.MusicPlayer; -import mage.client.util.gui.ArrowBuilder; -import mage.client.util.stats.UpdateMemUsageTask; -import mage.components.ImagePanel; -//import mage.interfaces.MageClient; -import mage.interfaces.callback.CallbackClient; -import mage.interfaces.callback.ClientCallback; -import mage.remote.Connection; -import mage.remote.Connection.ProxyType; -//import mage.remote.Session; -//import mage.remote.SessionImpl; -import mage.utils.MageVersion; -import mage.view.GameEndView; -import org.apache.log4j.Logger; -import org.mage.card.arcane.ManaSymbols; -import org.mage.plugins.card.constants.Constants; -import org.mage.plugins.card.images.DownloadPictures; -import org.mage.plugins.card.utils.impl.ImageManagerImpl; - -import javax.imageio.ImageIO; -import javax.swing.*; -import javax.swing.JToolBar.Separator; -import javax.swing.event.PopupMenuEvent; -import javax.swing.event.PopupMenuListener; -import java.awt.*; -import java.awt.event.*; +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Component; +import java.awt.Cursor; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Rectangle; +import java.awt.SplashScreen; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.beans.PropertyVetoException; import java.io.IOException; @@ -91,28 +54,92 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; import java.util.prefs.Preferences; -import static mage.client.dialog.PreferencesDialog.KEY_CONNECT_FLAG; +import javax.imageio.ImageIO; +import javax.swing.AbstractButton; +import javax.swing.Box; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JComponent; +import javax.swing.JDesktopPane; +import javax.swing.JEditorPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.JLabel; +import javax.swing.JLayeredPane; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JToggleButton; +import javax.swing.JToolBar.Separator; +import javax.swing.SwingConstants; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.event.PopupMenuEvent; +import javax.swing.event.PopupMenuListener; +import mage.cards.decks.Deck; +import mage.cards.repository.CardCriteria; +import mage.cards.repository.CardInfo; +import mage.cards.repository.CardRepository; import mage.cards.repository.ExpansionInfo; import mage.cards.repository.ExpansionRepository; +import mage.client.cards.BigCard; +import mage.client.chat.ChatPanel; +import mage.client.components.MageComponents; +import mage.client.components.MageJDesktop; +import mage.client.components.MageRoundPane; +import mage.client.components.MageUI; +import mage.client.components.ext.dlg.DialogManager; +import mage.client.components.tray.MageTray; +import mage.client.constants.Constants.DeckEditorMode; +import mage.client.deckeditor.DeckEditorPane; +import mage.client.deckeditor.collection.viewer.CollectionViewerPane; +import mage.client.dialog.AboutDialog; +import mage.client.dialog.ConnectDialog; +import mage.client.dialog.ErrorDialog; +import mage.client.dialog.FeedbackDialog; +import mage.client.dialog.GameEndDialog; +import mage.client.dialog.PreferencesDialog; +import mage.client.dialog.TableWaitingDialog; +import mage.client.dialog.UserRequestDialog; +import mage.client.draft.DraftPane; +import mage.client.draft.DraftPanel; +import mage.client.game.GamePane; +import mage.client.game.GamePanel; +import mage.client.plugins.impl.Plugins; +import mage.client.table.TablesPane; +import mage.client.tournament.TournamentPane; +import mage.client.util.EDTExceptionHandler; import mage.client.util.GameManager; -import mage.client.util.audio.AudioManager; -import mage.game.Table; +import mage.client.util.SettingsManager; +import mage.client.util.SystemUtil; +import mage.client.util.audio.MusicPlayer; +import mage.client.util.gui.ArrowBuilder; +import mage.client.util.stats.UpdateMemUsageTask; +import mage.components.ImagePanel; import mage.interfaces.ServerState; +import mage.remote.Connection; +import mage.remote.Connection.ProxyType; +import mage.utils.MageVersion; import mage.view.AbilityPickerView; import mage.view.CardsView; import mage.view.ChatMessage; +import mage.view.GameClientMessage; +import mage.view.GameEndView; import mage.view.GameView; import mage.view.UserRequestMessage; import net.java.truevfs.access.TArchiveDetector; import net.java.truevfs.access.TConfig; import net.java.truevfs.kernel.spec.FsAccessOption; +import org.apache.log4j.Logger; +import org.mage.card.arcane.ManaSymbols; import org.mage.network.Client; import org.mage.network.interfaces.MageClient; -import org.mage.network.model.MessageType; +import org.mage.network.messages.MessageType; +import org.mage.plugins.card.constants.Constants; +import org.mage.plugins.card.images.DownloadPictures; +import org.mage.plugins.card.utils.impl.ImageManagerImpl; /** * @author BetaSteward_at_googlemail.com @@ -1581,6 +1608,43 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { public void userRequestDialog(UUID gameId, UserRequestMessage userRequestMessage) { showUserRequestDialog(userRequestMessage); } + + @Override + public void gameUpdate(UUID gameId, GameView gameView) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.updateGame(gameView); + } + } + + @Override + public void gameInform(UUID gameId, GameClientMessage message) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.inform(message.getMessage(), message.getGameView()); + } + } + + @Override + public void gameInformPersonal(UUID gameId, GameClientMessage message) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + JOptionPane.showMessageDialog(panel, message.getMessage(), "Game message", JOptionPane.INFORMATION_MESSAGE); + } + } + + @Override + public void gameOver(UUID gameId, String message) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.endMessage(message); + } + } + + @Override + public void gameError(UUID gameId, String message) { + this.showErrorDialog("Game Error", message); + } } 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 4b67000e136..18926cb49bf 100644 --- a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java +++ b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java @@ -33,32 +33,19 @@ import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import mage.cards.decks.Deck; import mage.client.MageFrame; -import mage.client.chat.ChatPanel; -import static mage.client.chat.ChatPanel.ChatType.TABLES; -import static mage.client.chat.ChatPanel.ChatType.TOURNAMENT; 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.DeckUtil; -import mage.client.util.GameManager; import mage.client.util.audio.AudioManager; import mage.client.util.object.SaveObjectUtil; import mage.interfaces.callback.CallbackClient; import mage.interfaces.callback.ClientCallback; import mage.utils.CompressUtil; -import mage.view.AbilityPickerView; import mage.view.ChatMessage; -import mage.view.ChatMessage.MessageType; -import static mage.view.ChatMessage.SoundToPlay.PlayerLeft; -import static mage.view.ChatMessage.SoundToPlay.PlayerQuitTournament; -import static mage.view.ChatMessage.SoundToPlay.PlayerSubmittedDeck; -import static mage.view.ChatMessage.SoundToPlay.PlayerWhispered; import mage.view.DeckView; import mage.view.DraftClientMessage; import mage.view.DraftView; -import mage.view.GameClientMessage; -import mage.view.GameEndView; import mage.view.GameView; import mage.view.TableClientMessage; import mage.view.UserRequestMessage; @@ -195,16 +182,16 @@ public class CallbackClientImpl implements CallbackClient { // panel.init((GameView) callback.getData()); // } break; // } - case "gameOver": - { - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.endMessage((String) callback.getData()); - } break; - } - case "gameError": - frame.showErrorDialog("Game Error", (String) callback.getData()); - break; +// case "gameOver": +// { +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.endMessage((String) callback.getData()); +// } break; +// } +// case "gameError": +// frame.showErrorDialog("Game Error", (String) callback.getData()); +// break; // case "gameAsk": // { // GameClientMessage message = (GameClientMessage) callback.getData(); @@ -281,13 +268,13 @@ public class CallbackClientImpl implements CallbackClient { // panel.getAmount(message.getMin(), message.getMax(), message.getMessage()); // } break; // } - case "gameUpdate": - { - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.updateGame((GameView) callback.getData()); - } break; - } +// case "gameUpdate": +// { +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.updateGame((GameView) callback.getData()); +// } break; +// } // case "endGameInfo": // MageFrame.getInstance().showGameEndDialog((GameEndView) callback.getData()); // break; @@ -296,31 +283,31 @@ public class CallbackClientImpl implements CallbackClient { if (messageData.size() == 2) { JOptionPane.showMessageDialog(null, messageData.get(1), messageData.get(0), JOptionPane.WARNING_MESSAGE); } break; - case "gameInform": - if (callback.getMessageId() > gameInformMessageId) { - { - GameClientMessage message = (GameClientMessage) callback.getData(); - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.inform(message.getMessage(), message.getGameView()); - } - } -// no longer needed because phase skip handling on server side now - } else { - logger.warn(new StringBuilder("message out of sequence - ignoring").append("MessageId = ").append(callback.getMessageId()).append(" method = ").append(callback.getMethod())); - //logger.warn("message out of sequence - ignoring"); - } - gameInformMessageId = messageId; - break; - case "gameInformPersonal": - { - GameClientMessage message = (GameClientMessage) callback.getData(); - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - JOptionPane.showMessageDialog(panel, message.getMessage(), "Game message", - JOptionPane.INFORMATION_MESSAGE); - } break; - } +// case "gameInform": +// if (callback.getMessageId() > gameInformMessageId) { +// { +// GameClientMessage message = (GameClientMessage) callback.getData(); +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.inform(message.getMessage(), message.getGameView()); +// } +// } +//// no longer needed because phase skip handling on server side now +// } else { +// logger.warn(new StringBuilder("message out of sequence - ignoring").append("MessageId = ").append(callback.getMessageId()).append(" method = ").append(callback.getMethod())); +// //logger.warn("message out of sequence - ignoring"); +// } +// gameInformMessageId = messageId; +// break; +// case "gameInformPersonal": +// { +// GameClientMessage message = (GameClientMessage) callback.getData(); +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// JOptionPane.showMessageDialog(panel, message.getMessage(), "Game message", +// JOptionPane.INFORMATION_MESSAGE); +// } break; +// } case "sideboard": { TableClientMessage message = (TableClientMessage) callback.getData(); 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 567c6ea2d68..91ea6fd8509 100644 --- a/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java +++ b/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java @@ -17,17 +17,17 @@ import org.junit.Ignore; import javax.swing.*; import java.util.concurrent.CountDownLatch; import mage.choices.Choice; -import mage.game.Table; import mage.interfaces.ServerState; import mage.view.AbilityPickerView; import mage.view.CardsView; import mage.view.ChatMessage; +import mage.view.GameClientMessage; import mage.view.GameEndView; import mage.view.GameView; import mage.view.UserRequestMessage; import org.mage.network.Client; import org.mage.network.interfaces.MageClient; -import org.mage.network.model.MessageType; +import org.mage.network.messages.MessageType; /** * Test for emulating the connection from multi mage clients. @@ -203,6 +203,31 @@ public class MultiConnectTest { public void userRequestDialog(UUID gameId, UserRequestMessage userRequestMessage) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + + @Override + public void gameUpdate(UUID gameId, GameView gameView) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameInform(UUID gameId, GameClientMessage message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameInformPersonal(UUID gameId, GameClientMessage message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameOver(UUID gameId, String message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameError(UUID gameId, String message) { + 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 6e6745c8105..13c1039cd8b 100644 --- a/Mage.Network/src/main/java/org/mage/network/Client.java +++ b/Mage.Network/src/main/java/org/mage/network/Client.java @@ -39,7 +39,7 @@ import org.mage.network.handlers.client.ClientMessageHandler; import org.mage.network.handlers.client.ClientRegisteredMessageHandler; import org.mage.network.handlers.client.HeartbeatHandler; import org.mage.network.interfaces.MageClient; -import org.mage.network.model.MessageType; +import org.mage.network.messages.MessageType; /** * @@ -195,7 +195,12 @@ public class Client { } public boolean submitDeck(UUID tableId, DeckCardLists deckCardLists) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + try { + return clientMessageHandler.submitDeck(tableId, deckCardLists); + } catch (Exception ex) { + logger.error("Error submitting deck", ex); + } + return false; } public void updateDeck(UUID tableId, DeckCardLists deckCardLists) { 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 c6b99c73cff..eb135347ade 100644 --- a/Mage.Network/src/main/java/org/mage/network/Server.java +++ b/Mage.Network/src/main/java/org/mage/network/Server.java @@ -1,14 +1,5 @@ package org.mage.network; -import org.mage.network.model.UserRequestDialogMessage; -import org.mage.network.model.GameEndInfoMessage; -import org.mage.network.model.GameSelectAmountMessage; -import org.mage.network.model.GamePlayXManaMessage; -import org.mage.network.model.GamePlayManaMessage; -import org.mage.network.model.GameChooseChoiceMessage; -import org.mage.network.model.GameChoosePileMessage; -import org.mage.network.model.GameChooseAbilityMessage; -import org.mage.network.model.GameSelectMessage; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; @@ -34,31 +25,44 @@ import java.util.Map; import java.util.Set; import java.util.UUID; import mage.choices.Choice; -import mage.game.Table; import mage.view.AbilityPickerView; import mage.view.CardsView; import mage.view.ChatMessage; +import mage.view.GameClientMessage; import mage.view.GameEndView; import mage.view.GameView; import mage.view.UserRequestMessage; import org.apache.log4j.Logger; import org.mage.network.handlers.ExceptionHandler; -import org.mage.network.handlers.MessageHandler; -import org.mage.network.handlers.server.HeartbeatHandler; import org.mage.network.handlers.PingMessageHandler; import org.mage.network.handlers.WriteListener; import org.mage.network.handlers.server.ConnectionHandler; +import org.mage.network.handlers.server.HeartbeatHandler; import org.mage.network.handlers.server.ServerRequestHandler; import org.mage.network.interfaces.MageServer; -import org.mage.network.model.ChatMessageMessage; -import org.mage.network.model.GameAskMessage; -import org.mage.network.model.GameInitMessage; -import org.mage.network.model.GameStartedMessage; -import org.mage.network.model.GameTargetMessage; -import org.mage.network.model.InformClientMessage; -import org.mage.network.model.JoinedTableMessage; -import org.mage.network.model.MessageType; -import org.mage.network.model.PingMessage; +import org.mage.network.messages.ChatMessageMessage; +import org.mage.network.messages.GameAskMessage; +import org.mage.network.messages.GameChooseAbilityMessage; +import org.mage.network.messages.GameChooseChoiceMessage; +import org.mage.network.messages.GameChoosePileMessage; +import org.mage.network.messages.GameEndInfoMessage; +import org.mage.network.messages.GameErrorMessage; +import org.mage.network.messages.GameInformMessage; +import org.mage.network.messages.GameInformPersonalMessage; +import org.mage.network.messages.GameInitMessage; +import org.mage.network.messages.GameOverMessage; +import org.mage.network.messages.GamePlayManaMessage; +import org.mage.network.messages.GamePlayXManaMessage; +import org.mage.network.messages.GameSelectAmountMessage; +import org.mage.network.messages.GameSelectMessage; +import org.mage.network.messages.GameStartedMessage; +import org.mage.network.messages.GameTargetMessage; +import org.mage.network.messages.GameUpdateMessage; +import org.mage.network.messages.InformClientMessage; +import org.mage.network.messages.JoinedTableMessage; +import org.mage.network.messages.MessageType; +import org.mage.network.messages.PingMessage; +import org.mage.network.messages.UserRequestDialogMessage; /** * @@ -260,5 +264,34 @@ public class Server { ch.writeAndFlush(new UserRequestDialogMessage(gameId, userRequestMessage)).addListener(WriteListener.getInstance()); } - + public void gameUpdate(String sessionId, UUID gameId, GameView view) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameUpdateMessage(gameId, view)).addListener(WriteListener.getInstance()); + } + + public void gameInform(String sessionId, UUID gameId, GameClientMessage message) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameInformMessage(gameId, message)).addListener(WriteListener.getInstance()); + } + + public void gameInformPersonal(String sessionId, UUID gameId, GameClientMessage message) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameInformPersonalMessage(gameId, message)).addListener(WriteListener.getInstance()); + } + + public void gameOver(String sessionId, UUID gameId, String message) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameOverMessage(gameId, message)).addListener(WriteListener.getInstance()); + } + + public void gameError(String sessionId, UUID gameId, String message) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameErrorMessage(gameId, message)).addListener(WriteListener.getInstance()); + } + } diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/PingMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/PingMessageHandler.java index 04a37ad74cc..2d6b4dea997 100644 --- a/Mage.Network/src/main/java/org/mage/network/handlers/PingMessageHandler.java +++ b/Mage.Network/src/main/java/org/mage/network/handlers/PingMessageHandler.java @@ -4,8 +4,8 @@ import io.netty.channel.ChannelHandler.Sharable; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import org.apache.log4j.Logger; -import org.mage.network.model.PingMessage; -import org.mage.network.model.PongMessage; +import org.mage.network.messages.PingMessage; +import org.mage.network.messages.PongMessage; /** * 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 c6c44152ff7..6e307c45e99 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 @@ -16,29 +16,30 @@ import mage.view.TableView; import mage.view.UserDataView; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageClient; -import org.mage.network.model.ChatMessageRequest; -import org.mage.network.model.ChatRoomIdRequest; -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; -import org.mage.network.model.PlayerActionRequest; -import org.mage.network.model.RemoveTableRequest; -import org.mage.network.model.SendFeedbackRequest; -import org.mage.network.model.SendPlayerBooleanRequest; -import org.mage.network.model.SendPlayerIntegerRequest; -import org.mage.network.model.SendPlayerManaTypeRequest; -import org.mage.network.model.SendPlayerStringRequest; -import org.mage.network.model.SendPlayerUUIDRequest; -import org.mage.network.model.ServerMessagesRequest; -import org.mage.network.model.SetPreferencesRequest; -import org.mage.network.model.StartMatchRequest; -import org.mage.network.model.SwapSeatRequest; -import org.mage.network.model.TableWaitingRequest; +import org.mage.network.messages.requests.ChatMessageRequest; +import org.mage.network.messages.requests.ChatRoomIdRequest; +import org.mage.network.messages.ClientMessage; +import org.mage.network.messages.requests.CreateTableRequest; +import org.mage.network.messages.requests.GetRoomRequest; +import org.mage.network.messages.requests.JoinChatRequest; +import org.mage.network.messages.requests.JoinGameRequest; +import org.mage.network.messages.requests.JoinTableRequest; +import org.mage.network.messages.requests.LeaveChatRequest; +import org.mage.network.messages.requests.LeaveTableRequest; +import org.mage.network.messages.requests.PlayerActionRequest; +import org.mage.network.messages.requests.RemoveTableRequest; +import org.mage.network.messages.requests.SendFeedbackRequest; +import org.mage.network.messages.requests.SendPlayerBooleanRequest; +import org.mage.network.messages.requests.SendPlayerIntegerRequest; +import org.mage.network.messages.requests.SendPlayerManaTypeRequest; +import org.mage.network.messages.requests.SendPlayerStringRequest; +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.SubmitDeckRequest; +import org.mage.network.messages.requests.SwapSeatRequest; +import org.mage.network.messages.requests.TableWaitingRequest; /** * @@ -123,7 +124,13 @@ public class ClientMessageHandler extends SimpleChannelInboundHandler queue = new LinkedBlockingQueue<>(); private Connection connection; private MageVersion version; - + @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { ctx.writeAndFlush(new RegisterClientRequest(connection, version)).addListener(new ListenerImpl()); diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/HeartbeatHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/HeartbeatHandler.java index 1fda339c3f6..43431621226 100644 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/HeartbeatHandler.java +++ b/Mage.Network/src/main/java/org/mage/network/handlers/client/HeartbeatHandler.java @@ -7,7 +7,7 @@ import io.netty.handler.timeout.IdleState; import io.netty.handler.timeout.IdleStateEvent; import org.apache.log4j.Logger; import org.mage.network.handlers.WriteListener; -import org.mage.network.model.PingMessage; +import org.mage.network.messages.PingMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/server/HeartbeatHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/server/HeartbeatHandler.java index 5638a6833df..6ceb9972b21 100644 --- a/Mage.Network/src/main/java/org/mage/network/handlers/server/HeartbeatHandler.java +++ b/Mage.Network/src/main/java/org/mage/network/handlers/server/HeartbeatHandler.java @@ -9,8 +9,8 @@ import mage.remote.DisconnectReason; import org.apache.log4j.Logger; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageServer; -import org.mage.network.model.PingMessage; -import org.mage.network.model.PongMessage; +import org.mage.network.messages.PingMessage; +import org.mage.network.messages.PongMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/server/ServerRequestHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/server/ServerRequestHandler.java index 8e1efecf7ed..1ac2ed9a793 100644 --- a/Mage.Network/src/main/java/org/mage/network/handlers/server/ServerRequestHandler.java +++ b/Mage.Network/src/main/java/org/mage/network/handlers/server/ServerRequestHandler.java @@ -5,7 +5,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import mage.remote.DisconnectReason; import org.mage.network.interfaces.MageServer; -import org.mage.network.model.ServerRequest; +import org.mage.network.messages.requests.ServerRequest; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/interfaces/MageClient.java b/Mage.Network/src/main/java/org/mage/network/interfaces/MageClient.java index fa776b31a40..7044bf0ce42 100644 --- a/Mage.Network/src/main/java/org/mage/network/interfaces/MageClient.java +++ b/Mage.Network/src/main/java/org/mage/network/interfaces/MageClient.java @@ -5,15 +5,15 @@ import java.util.Map; import java.util.Set; import java.util.UUID; import mage.choices.Choice; -import mage.game.Table; import mage.interfaces.ServerState; import mage.view.AbilityPickerView; import mage.view.CardsView; import mage.view.ChatMessage; +import mage.view.GameClientMessage; import mage.view.GameEndView; import mage.view.GameView; import mage.view.UserRequestMessage; -import org.mage.network.model.MessageType; +import org.mage.network.messages.MessageType; /** * @@ -36,6 +36,11 @@ public interface MageClient { void gameStarted(UUID gameId, UUID playerId); void initGame(UUID gameId, GameView gameView); + void gameUpdate(UUID gameId, GameView gameView); + void gameInform(UUID gameId, GameClientMessage message); + void gameInformPersonal(UUID gameId, GameClientMessage message); + void gameOver(UUID gameId, String message); + void gameError(UUID gameId, String message); void gameAsk(UUID gameId, GameView gameView, String question); void gameTarget(UUID gameId, GameView gameView, String question, CardsView cardView, Set targets, boolean required, Map options); diff --git a/Mage.Network/src/main/java/org/mage/network/interfaces/MageServer.java b/Mage.Network/src/main/java/org/mage/network/interfaces/MageServer.java index 0bf4c4161c9..efe8986164c 100644 --- a/Mage.Network/src/main/java/org/mage/network/interfaces/MageServer.java +++ b/Mage.Network/src/main/java/org/mage/network/interfaces/MageServer.java @@ -52,6 +52,7 @@ public interface MageServer { void sendPlayerInteger(UUID gameId, String sessionId, Integer data); void sendPlayerAction(PlayerAction playerAction, UUID gameId, String sessionId, Serializable data); + boolean submitDeck(String sessionId, UUID tableId, DeckCardLists deckList); void pingTime(long milliSeconds, String sessionId); } diff --git a/Mage.Network/src/main/java/org/mage/network/model/ChatMessageMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/ChatMessageMessage.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/ChatMessageMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/ChatMessageMessage.java index e5da5bd86ce..11dc244859d 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ChatMessageMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/ChatMessageMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import mage.view.ChatMessage; diff --git a/Mage.Network/src/main/java/org/mage/network/model/ClientMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/ClientMessage.java similarity index 88% rename from Mage.Network/src/main/java/org/mage/network/model/ClientMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/ClientMessage.java index d57e7939a12..8a22f74e5fb 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ClientMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/ClientMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.io.Serializable; import org.mage.network.handlers.client.ClientMessageHandler; diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameAskMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameAskMessage.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/GameAskMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GameAskMessage.java index 4d1940c9d17..afbe2a1c5bb 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GameAskMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameAskMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import mage.view.GameView; diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameChooseAbilityMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameChooseAbilityMessage.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/GameChooseAbilityMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GameChooseAbilityMessage.java index 89854d30215..c6cf75174c6 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GameChooseAbilityMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameChooseAbilityMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import mage.view.AbilityPickerView; diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameChooseChoiceMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameChooseChoiceMessage.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/GameChooseChoiceMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GameChooseChoiceMessage.java index 454fc3052f0..012291d6281 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GameChooseChoiceMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameChooseChoiceMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import mage.choices.Choice; diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameChoosePileMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameChoosePileMessage.java similarity index 95% rename from Mage.Network/src/main/java/org/mage/network/model/GameChoosePileMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GameChoosePileMessage.java index bdce7c01a95..343cb7932b5 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GameChoosePileMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameChoosePileMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import mage.view.CardsView; diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameEndInfoMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameEndInfoMessage.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/GameEndInfoMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GameEndInfoMessage.java index c745486984b..e3ea9c7861f 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GameEndInfoMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameEndInfoMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import mage.game.Table; diff --git a/Mage.Network/src/main/java/org/mage/network/messages/GameErrorMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameErrorMessage.java new file mode 100644 index 00000000000..cc2fec517d1 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameErrorMessage.java @@ -0,0 +1,24 @@ +package org.mage.network.messages; + +import java.util.UUID; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameErrorMessage extends ClientMessage { + private final UUID gameId; + private final String message; + + public GameErrorMessage(UUID gameId, String message) { + this.gameId = gameId; + this.message = message; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameError(gameId, message); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/messages/GameInformMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameInformMessage.java new file mode 100644 index 00000000000..f6ca55ab9f1 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameInformMessage.java @@ -0,0 +1,25 @@ +package org.mage.network.messages; + +import java.util.UUID; +import mage.view.GameClientMessage; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameInformMessage extends ClientMessage { + private final UUID gameId; + private final GameClientMessage message; + + public GameInformMessage(UUID gameId, GameClientMessage message) { + this.gameId = gameId; + this.message = message; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameInform(gameId, message); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/messages/GameInformPersonalMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameInformPersonalMessage.java new file mode 100644 index 00000000000..51734a71810 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameInformPersonalMessage.java @@ -0,0 +1,25 @@ +package org.mage.network.messages; + +import java.util.UUID; +import mage.view.GameClientMessage; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameInformPersonalMessage extends ClientMessage { + private final UUID gameId; + private final GameClientMessage message; + + public GameInformPersonalMessage(UUID gameId, GameClientMessage message) { + this.gameId = gameId; + this.message = message; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameInformPersonal(gameId, message); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameInitMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameInitMessage.java similarity index 93% rename from Mage.Network/src/main/java/org/mage/network/model/GameInitMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GameInitMessage.java index 7d3519f08d2..9429baa3ffd 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GameInitMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameInitMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import mage.view.GameView; diff --git a/Mage.Network/src/main/java/org/mage/network/messages/GameOverMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameOverMessage.java new file mode 100644 index 00000000000..f9e747b5f75 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameOverMessage.java @@ -0,0 +1,24 @@ +package org.mage.network.messages; + +import java.util.UUID; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameOverMessage extends ClientMessage { + private final UUID gameId; + private final String message; + + public GameOverMessage(UUID gameId, String message) { + this.gameId = gameId; + this.message = message; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameOver(gameId, message); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GamePlayManaMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GamePlayManaMessage.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/GamePlayManaMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GamePlayManaMessage.java index 14f3fcc0788..5f680a7af63 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GamePlayManaMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GamePlayManaMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import mage.view.GameView; diff --git a/Mage.Network/src/main/java/org/mage/network/model/GamePlayXManaMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GamePlayXManaMessage.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/GamePlayXManaMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GamePlayXManaMessage.java index d348d64498b..f03e1749238 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GamePlayXManaMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GamePlayXManaMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import mage.view.GameView; diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameSelectAmountMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameSelectAmountMessage.java similarity index 95% rename from Mage.Network/src/main/java/org/mage/network/model/GameSelectAmountMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GameSelectAmountMessage.java index d3e627ed8c4..6d0ac4d3ea7 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GameSelectAmountMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameSelectAmountMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import org.mage.network.handlers.client.ClientMessageHandler; diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameSelectMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameSelectMessage.java similarity index 95% rename from Mage.Network/src/main/java/org/mage/network/model/GameSelectMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GameSelectMessage.java index 032e539930b..1c4d65061f4 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GameSelectMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameSelectMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.io.Serializable; import java.util.Map; diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameStartedMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameStartedMessage.java similarity index 93% rename from Mage.Network/src/main/java/org/mage/network/model/GameStartedMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GameStartedMessage.java index 1d8fe7d1ad9..bc3d45444cd 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GameStartedMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameStartedMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import org.mage.network.handlers.client.ClientMessageHandler; diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameTargetMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameTargetMessage.java similarity index 97% rename from Mage.Network/src/main/java/org/mage/network/model/GameTargetMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/GameTargetMessage.java index 1d6d80b6ebf..bde42773915 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GameTargetMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameTargetMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.io.Serializable; import java.util.Map; diff --git a/Mage.Network/src/main/java/org/mage/network/messages/GameUpdateMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/GameUpdateMessage.java new file mode 100644 index 00000000000..d2a2493901b --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/messages/GameUpdateMessage.java @@ -0,0 +1,25 @@ +package org.mage.network.messages; + +import java.util.UUID; +import mage.view.GameView; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameUpdateMessage extends ClientMessage { + private final UUID gameId; + private final GameView view; + + public GameUpdateMessage(UUID gameId, GameView view) { + this.gameId = gameId; + this.view = view; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameUpdate(gameId, view); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/InformClientMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/InformClientMessage.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/InformClientMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/InformClientMessage.java index 3284f36f683..0d47eb13f6a 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/InformClientMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/InformClientMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import org.mage.network.handlers.client.ClientMessageHandler; diff --git a/Mage.Network/src/main/java/org/mage/network/model/JoinedTableMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/JoinedTableMessage.java similarity index 95% rename from Mage.Network/src/main/java/org/mage/network/model/JoinedTableMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/JoinedTableMessage.java index 0217fa34efb..51ef04440ca 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/JoinedTableMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/JoinedTableMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import org.mage.network.handlers.client.ClientMessageHandler; diff --git a/Mage.Network/src/main/java/org/mage/network/model/LeftTableMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/LeftTableMessage.java similarity index 81% rename from Mage.Network/src/main/java/org/mage/network/model/LeftTableMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/LeftTableMessage.java index 28c833afc87..cdf2f711be0 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/LeftTableMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/LeftTableMessage.java @@ -1,6 +1,7 @@ -package org.mage.network.model; +package org.mage.network.messages.responses; import org.mage.network.handlers.client.ClientMessageHandler; +import org.mage.network.messages.ClientMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/MessageType.java b/Mage.Network/src/main/java/org/mage/network/messages/MessageType.java similarity index 74% rename from Mage.Network/src/main/java/org/mage/network/model/MessageType.java rename to Mage.Network/src/main/java/org/mage/network/messages/MessageType.java index a50f2139b3b..d9f4f273a30 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/MessageType.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/MessageType.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/PingMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/PingMessage.java similarity index 77% rename from Mage.Network/src/main/java/org/mage/network/model/PingMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/PingMessage.java index 24eb9b1480e..0d08d90c057 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/PingMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/PingMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.io.Serializable; diff --git a/Mage.Network/src/main/java/org/mage/network/model/PongMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/PongMessage.java similarity index 77% rename from Mage.Network/src/main/java/org/mage/network/model/PongMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/PongMessage.java index 5d81dc77c44..fc229e08344 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/PongMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/PongMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.io.Serializable; diff --git a/Mage.Network/src/main/java/org/mage/network/model/UserRequestDialogMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/UserRequestDialogMessage.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/UserRequestDialogMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/UserRequestDialogMessage.java index 86dc4fc6e0d..9ebc83c47ed 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/UserRequestDialogMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/UserRequestDialogMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages; import java.util.UUID; import mage.view.UserRequestMessage; diff --git a/Mage.Network/src/main/java/org/mage/network/model/ChatMessageRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/ChatMessageRequest.java similarity index 93% rename from Mage.Network/src/main/java/org/mage/network/model/ChatMessageRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/ChatMessageRequest.java index 0b5533115d1..00d009d5ba8 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ChatMessageRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/ChatMessageRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; diff --git a/Mage.Network/src/main/java/org/mage/network/model/ChatRoomIdRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/ChatRoomIdRequest.java similarity index 84% rename from Mage.Network/src/main/java/org/mage/network/model/ChatRoomIdRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/ChatRoomIdRequest.java index e1a3164c514..fdb3370acd4 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ChatRoomIdRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/ChatRoomIdRequest.java @@ -1,9 +1,10 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageServer; +import org.mage.network.messages.responses.ChatRoomIdMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/CreateTableRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/CreateTableRequest.java similarity index 87% rename from Mage.Network/src/main/java/org/mage/network/model/CreateTableRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/CreateTableRequest.java index bf3af1368e2..b51f492eb86 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/CreateTableRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/CreateTableRequest.java @@ -1,10 +1,11 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; import mage.game.match.MatchOptions; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageServer; +import org.mage.network.messages.responses.CreateTableMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/GetRoomRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/GetRoomRequest.java similarity index 85% rename from Mage.Network/src/main/java/org/mage/network/model/GetRoomRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/GetRoomRequest.java index f6cf2aaa0fc..7f3eab18cc2 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/GetRoomRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/GetRoomRequest.java @@ -1,9 +1,10 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageServer; +import org.mage.network.messages.responses.RoomMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/JoinChatRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/JoinChatRequest.java similarity index 91% rename from Mage.Network/src/main/java/org/mage/network/model/JoinChatRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/JoinChatRequest.java index 7098f6dae50..a90dd644f02 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/JoinChatRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/JoinChatRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; diff --git a/Mage.Network/src/main/java/org/mage/network/model/JoinGameRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/JoinGameRequest.java similarity index 85% rename from Mage.Network/src/main/java/org/mage/network/model/JoinGameRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/JoinGameRequest.java index bb1cec21fb7..2903789fc58 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/JoinGameRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/JoinGameRequest.java @@ -1,9 +1,10 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageServer; +import org.mage.network.messages.responses.JoinGameMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/JoinTableRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/JoinTableRequest.java similarity index 91% rename from Mage.Network/src/main/java/org/mage/network/model/JoinTableRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/JoinTableRequest.java index 2598e89ca44..8c98c35e005 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/JoinTableRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/JoinTableRequest.java @@ -1,10 +1,11 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; import mage.cards.decks.DeckCardLists; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageServer; +import org.mage.network.messages.responses.JoinTableMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/LeaveChatRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/LeaveChatRequest.java similarity index 91% rename from Mage.Network/src/main/java/org/mage/network/model/LeaveChatRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/LeaveChatRequest.java index 6a13ffd49f8..6b5059a7607 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/LeaveChatRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/LeaveChatRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; diff --git a/Mage.Network/src/main/java/org/mage/network/model/LeaveTableRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/LeaveTableRequest.java similarity index 86% rename from Mage.Network/src/main/java/org/mage/network/model/LeaveTableRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/LeaveTableRequest.java index e2a7b51f7e1..377b4455ab9 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/LeaveTableRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/LeaveTableRequest.java @@ -1,9 +1,10 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageServer; +import org.mage.network.messages.responses.LeftTableMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/PlayerActionRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/PlayerActionRequest.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/PlayerActionRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/PlayerActionRequest.java index 737903ef581..aec8776fae5 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/PlayerActionRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/PlayerActionRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.io.Serializable; diff --git a/Mage.Network/src/main/java/org/mage/network/model/RegisterClientRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/RegisterClientRequest.java similarity index 92% rename from Mage.Network/src/main/java/org/mage/network/model/RegisterClientRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/RegisterClientRequest.java index 8507575c52d..6c83c98c32d 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/RegisterClientRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/RegisterClientRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.net.InetSocketAddress; @@ -8,6 +8,7 @@ import mage.remote.DisconnectReason; import mage.utils.MageVersion; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageServer; +import org.mage.network.messages.responses.ClientRegisteredMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/RemoveTableRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/RemoveTableRequest.java similarity index 93% rename from Mage.Network/src/main/java/org/mage/network/model/RemoveTableRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/RemoveTableRequest.java index 631f773fdc9..5a143cc6946 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/RemoveTableRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/RemoveTableRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; diff --git a/Mage.Network/src/main/java/org/mage/network/model/SendFeedbackRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendFeedbackRequest.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/SendFeedbackRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/SendFeedbackRequest.java index 9a736a8922c..c4aba23ad63 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/SendFeedbackRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendFeedbackRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import org.mage.network.interfaces.MageServer; diff --git a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerBooleanRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerBooleanRequest.java similarity index 92% rename from Mage.Network/src/main/java/org/mage/network/model/SendPlayerBooleanRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerBooleanRequest.java index 3ace8e7d8e4..97b2ca5a788 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerBooleanRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerBooleanRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; diff --git a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerIntegerRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerIntegerRequest.java similarity index 92% rename from Mage.Network/src/main/java/org/mage/network/model/SendPlayerIntegerRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerIntegerRequest.java index c0d712ddab7..69ae09b2a80 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerIntegerRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerIntegerRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; diff --git a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerManaTypeRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerManaTypeRequest.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/SendPlayerManaTypeRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerManaTypeRequest.java index 9dda0ba10a7..f4d577c7f08 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerManaTypeRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerManaTypeRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; diff --git a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerStringRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerStringRequest.java similarity index 93% rename from Mage.Network/src/main/java/org/mage/network/model/SendPlayerStringRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerStringRequest.java index f805a54c0f9..c2daa52d643 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerStringRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerStringRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; diff --git a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerUUIDRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerUUIDRequest.java similarity index 92% rename from Mage.Network/src/main/java/org/mage/network/model/SendPlayerUUIDRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerUUIDRequest.java index dea644a3dd4..a5cbd65a390 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerUUIDRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/SendPlayerUUIDRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; diff --git a/Mage.Network/src/main/java/org/mage/network/model/ServerMessagesRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/ServerMessagesRequest.java similarity index 81% rename from Mage.Network/src/main/java/org/mage/network/model/ServerMessagesRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/ServerMessagesRequest.java index e781bc734f7..82f6c48c026 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ServerMessagesRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/ServerMessagesRequest.java @@ -1,8 +1,9 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageServer; +import org.mage.network.messages.responses.ServerMessagesMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/ServerRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/ServerRequest.java similarity index 88% rename from Mage.Network/src/main/java/org/mage/network/model/ServerRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/ServerRequest.java index becf9b57974..31b649be996 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ServerRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/ServerRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.io.Serializable; diff --git a/Mage.Network/src/main/java/org/mage/network/model/SetPreferencesRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/SetPreferencesRequest.java similarity index 92% rename from Mage.Network/src/main/java/org/mage/network/model/SetPreferencesRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/SetPreferencesRequest.java index 037a4deea6d..68375be4ef4 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/SetPreferencesRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/SetPreferencesRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import mage.view.UserDataView; diff --git a/Mage.Network/src/main/java/org/mage/network/model/StartMatchRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/StartMatchRequest.java similarity index 86% rename from Mage.Network/src/main/java/org/mage/network/model/StartMatchRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/StartMatchRequest.java index 8cbbe77d83d..9630d64b9c5 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/StartMatchRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/StartMatchRequest.java @@ -1,9 +1,10 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageServer; +import org.mage.network.messages.responses.StartMatchMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/messages/requests/SubmitDeckRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/SubmitDeckRequest.java new file mode 100644 index 00000000000..29f74c9e4e0 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/SubmitDeckRequest.java @@ -0,0 +1,28 @@ +package org.mage.network.messages.requests; + +import io.netty.channel.ChannelHandlerContext; +import java.util.UUID; +import mage.cards.decks.DeckCardLists; +import org.mage.network.handlers.WriteListener; +import org.mage.network.interfaces.MageServer; +import org.mage.network.messages.responses.SubmitDeckMessage; + +/** + * + * @author BetaSteward + */ +public class SubmitDeckRequest extends ServerRequest { + private final UUID tableId; + private final DeckCardLists deckCardLists; + + public SubmitDeckRequest(UUID tableId, DeckCardLists deckCardLists) { + this.tableId = tableId; + this.deckCardLists = deckCardLists; + } + + @Override + public void handleMessage(MageServer server, ChannelHandlerContext ctx) { + ctx.writeAndFlush(new SubmitDeckMessage(server.submitDeck(ctx.channel().id().asLongText(), tableId, deckCardLists))).addListener(WriteListener.getInstance()); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/SwapSeatRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/SwapSeatRequest.java similarity index 94% rename from Mage.Network/src/main/java/org/mage/network/model/SwapSeatRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/SwapSeatRequest.java index a90b0e14e84..6b16dc7ce8a 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/SwapSeatRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/SwapSeatRequest.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; diff --git a/Mage.Network/src/main/java/org/mage/network/model/TableWaitingRequest.java b/Mage.Network/src/main/java/org/mage/network/messages/requests/TableWaitingRequest.java similarity index 86% rename from Mage.Network/src/main/java/org/mage/network/model/TableWaitingRequest.java rename to Mage.Network/src/main/java/org/mage/network/messages/requests/TableWaitingRequest.java index f1af91cd7ab..0fa2bfc0f25 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/TableWaitingRequest.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/requests/TableWaitingRequest.java @@ -1,9 +1,10 @@ -package org.mage.network.model; +package org.mage.network.messages.requests; import io.netty.channel.ChannelHandlerContext; import java.util.UUID; import org.mage.network.handlers.WriteListener; import org.mage.network.interfaces.MageServer; +import org.mage.network.messages.responses.TableWaitingMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/ChatRoomIdMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/responses/ChatRoomIdMessage.java similarity index 81% rename from Mage.Network/src/main/java/org/mage/network/model/ChatRoomIdMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/responses/ChatRoomIdMessage.java index 13819e8b5a9..75e2a7d7eed 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ChatRoomIdMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/responses/ChatRoomIdMessage.java @@ -1,7 +1,8 @@ -package org.mage.network.model; +package org.mage.network.messages.responses; import java.util.UUID; import org.mage.network.handlers.client.ClientMessageHandler; +import org.mage.network.messages.ClientMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/ClientRegisteredMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/responses/ClientRegisteredMessage.java similarity index 89% rename from Mage.Network/src/main/java/org/mage/network/model/ClientRegisteredMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/responses/ClientRegisteredMessage.java index 4cbc2fad672..db70b7f589c 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ClientRegisteredMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/responses/ClientRegisteredMessage.java @@ -1,4 +1,4 @@ -package org.mage.network.model; +package org.mage.network.messages.responses; import java.io.Serializable; import mage.interfaces.ServerState; diff --git a/Mage.Network/src/main/java/org/mage/network/model/CreateTableMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/responses/CreateTableMessage.java similarity index 82% rename from Mage.Network/src/main/java/org/mage/network/model/CreateTableMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/responses/CreateTableMessage.java index 69e70f2cdb9..60578aa7f68 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/CreateTableMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/responses/CreateTableMessage.java @@ -1,7 +1,8 @@ -package org.mage.network.model; +package org.mage.network.messages.responses; import mage.view.TableView; import org.mage.network.handlers.client.ClientMessageHandler; +import org.mage.network.messages.ClientMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/JoinGameMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/responses/JoinGameMessage.java similarity index 81% rename from Mage.Network/src/main/java/org/mage/network/model/JoinGameMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/responses/JoinGameMessage.java index bb1e49bf77e..5f81155e9bf 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/JoinGameMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/responses/JoinGameMessage.java @@ -1,7 +1,8 @@ -package org.mage.network.model; +package org.mage.network.messages.responses; import java.util.UUID; import org.mage.network.handlers.client.ClientMessageHandler; +import org.mage.network.messages.ClientMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/JoinTableMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/responses/JoinTableMessage.java similarity index 81% rename from Mage.Network/src/main/java/org/mage/network/model/JoinTableMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/responses/JoinTableMessage.java index 122e77d3bc3..99dea7c05b0 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/JoinTableMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/responses/JoinTableMessage.java @@ -1,6 +1,7 @@ -package org.mage.network.model; +package org.mage.network.messages.responses; import org.mage.network.handlers.client.ClientMessageHandler; +import org.mage.network.messages.ClientMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/RoomMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/responses/RoomMessage.java similarity index 83% rename from Mage.Network/src/main/java/org/mage/network/model/RoomMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/responses/RoomMessage.java index 806c646d2ff..7bb150a1bb6 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/RoomMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/responses/RoomMessage.java @@ -1,7 +1,8 @@ -package org.mage.network.model; +package org.mage.network.messages.responses; import mage.view.RoomView; import org.mage.network.handlers.client.ClientMessageHandler; +import org.mage.network.messages.ClientMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/ServerMessagesMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/responses/ServerMessagesMessage.java similarity index 83% rename from Mage.Network/src/main/java/org/mage/network/model/ServerMessagesMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/responses/ServerMessagesMessage.java index 5aa324e46b0..c9cf8221a88 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/ServerMessagesMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/responses/ServerMessagesMessage.java @@ -1,7 +1,8 @@ -package org.mage.network.model; +package org.mage.network.messages.responses; import java.util.List; import org.mage.network.handlers.client.ClientMessageHandler; +import org.mage.network.messages.ClientMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/model/StartMatchMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/responses/StartMatchMessage.java similarity index 81% rename from Mage.Network/src/main/java/org/mage/network/model/StartMatchMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/responses/StartMatchMessage.java index 08848d94cb4..a6bd893e5ad 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/StartMatchMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/responses/StartMatchMessage.java @@ -1,6 +1,7 @@ -package org.mage.network.model; +package org.mage.network.messages.responses; import org.mage.network.handlers.client.ClientMessageHandler; +import org.mage.network.messages.ClientMessage; /** * diff --git a/Mage.Network/src/main/java/org/mage/network/messages/responses/SubmitDeckMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/responses/SubmitDeckMessage.java new file mode 100644 index 00000000000..075e952f779 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/messages/responses/SubmitDeckMessage.java @@ -0,0 +1,23 @@ +package org.mage.network.messages.responses; + +import org.mage.network.handlers.client.ClientMessageHandler; +import org.mage.network.messages.ClientMessage; + +/** + * + * @author BetaSteward + */ +public class SubmitDeckMessage extends ClientMessage { + + private boolean success; + + public SubmitDeckMessage(boolean success) { + this.success = success; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.receiveBoolean(success); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/TableWaitingMessage.java b/Mage.Network/src/main/java/org/mage/network/messages/responses/TableWaitingMessage.java similarity index 82% rename from Mage.Network/src/main/java/org/mage/network/model/TableWaitingMessage.java rename to Mage.Network/src/main/java/org/mage/network/messages/responses/TableWaitingMessage.java index 9755ce56885..21bab318dc5 100644 --- a/Mage.Network/src/main/java/org/mage/network/model/TableWaitingMessage.java +++ b/Mage.Network/src/main/java/org/mage/network/messages/responses/TableWaitingMessage.java @@ -1,7 +1,8 @@ -package org.mage.network.model; +package org.mage.network.messages.responses; import mage.view.TableView; import org.mage.network.handlers.client.ClientMessageHandler; +import org.mage.network.messages.ClientMessage; /** * diff --git a/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java b/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java index 6db4025704e..d93b4f099b5 100644 --- a/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java +++ b/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java @@ -42,7 +42,6 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; import java.util.prefs.Preferences; import javax.swing.Box; import javax.swing.JOptionPane; @@ -59,13 +58,14 @@ import mage.utils.MageVersion; import mage.view.AbilityPickerView; import mage.view.CardsView; import mage.view.ChatMessage; +import mage.view.GameClientMessage; import mage.view.GameEndView; import mage.view.GameView; import mage.view.UserRequestMessage; import org.apache.log4j.Logger; import org.mage.network.Client; import org.mage.network.interfaces.MageClient; -import org.mage.network.model.MessageType; +import org.mage.network.messages.MessageType; /** * @@ -435,4 +435,29 @@ public class ConsoleFrame extends javax.swing.JFrame implements MageClient { public void userRequestDialog(UUID gameId, UserRequestMessage userRequestMessage) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + + @Override + public void gameUpdate(UUID gameId, GameView gameView) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameInform(UUID gameId, GameClientMessage message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameInformPersonal(UUID gameId, GameClientMessage message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameOver(UUID gameId, String message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameError(UUID gameId, String message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } } diff --git a/Mage.Server.Tests/src/test/java/org/mage/server/test/TestClient.java b/Mage.Server.Tests/src/test/java/org/mage/server/test/TestClient.java index f3b2a51b008..1a0df9d4471 100644 --- a/Mage.Server.Tests/src/test/java/org/mage/server/test/TestClient.java +++ b/Mage.Server.Tests/src/test/java/org/mage/server/test/TestClient.java @@ -15,6 +15,7 @@ import mage.utils.MageVersion; import mage.view.AbilityPickerView; import mage.view.CardsView; import mage.view.ChatMessage; +import mage.view.GameClientMessage; import mage.view.GameEndView; import mage.view.GameView; import mage.view.RoomView; @@ -23,7 +24,7 @@ import mage.view.UserDataView; import mage.view.UserRequestMessage; import org.mage.network.Client; import org.mage.network.interfaces.MageClient; -import org.mage.network.model.MessageType; +import org.mage.network.messages.MessageType; /** * @@ -181,4 +182,29 @@ public class TestClient implements MageClient { public boolean joinTable(UUID roomId, UUID tableId, String playerName, String playerType, int skill, DeckCardLists deck, String password) { return client.joinTable(roomId, tableId, playerName, playerType, skill, deck, password); } + + @Override + public void gameUpdate(UUID gameId, GameView gameView) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameInform(UUID gameId, GameClientMessage message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameInformPersonal(UUID gameId, GameClientMessage message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameOver(UUID gameId, String message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameError(UUID gameId, String message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } } diff --git a/Mage.Server/src/main/java/mage/server/ServerMain.java b/Mage.Server/src/main/java/mage/server/ServerMain.java index 78b39a9328e..258a5aad11d 100644 --- a/Mage.Server/src/main/java/mage/server/ServerMain.java +++ b/Mage.Server/src/main/java/mage/server/ServerMain.java @@ -73,6 +73,7 @@ import mage.view.AbilityPickerView; import mage.view.CardsView; import mage.view.ChatMessage; import mage.view.ChatMessage.MessageColor; +import mage.view.GameClientMessage; import mage.view.GameEndView; import mage.view.GameView; import mage.view.RoomView; @@ -83,7 +84,7 @@ import org.apache.commons.lang3.StringEscapeUtils; import org.apache.log4j.Logger; import org.mage.network.Server; import org.mage.network.interfaces.MageServer; -import org.mage.network.model.MessageType; +import org.mage.network.messages.MessageType; /** * @@ -321,20 +322,16 @@ public class ServerMain implements MageServer { // } // }); // } -// -// @Override -// public boolean submitDeck(final String sessionId, final UUID tableId, final DeckCardLists deckList) throws MageException, GameException { -// return executeWithResult("submitDeck", sessionId, new ActionWithBooleanResult() { -// @Override -// public Boolean execute() throws MageException { -// UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId(); -// boolean ret = TableManager.getInstance().submitDeck(userId, tableId, deckList); -// logger.debug("Session " + sessionId + " submitted deck"); -// return ret; -// } -// }); -// } -// + + @Override + public boolean submitDeck(final String sessionId, final UUID tableId, final DeckCardLists deckList) { + UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId(); + boolean ret = TableManager.getInstance().submitDeck(userId, tableId, deckList); + if (ret) + logger.debug("Session " + sessionId + " submitted deck"); + return ret; + } + // @Override // public void updateDeck(final String sessionId, final UUID tableId, final DeckCardLists deckList) throws MageException, GameException { // execute("updateDeck", sessionId, new Action() { @@ -1255,4 +1252,24 @@ public class ServerMain implements MageServer { server.userRequestDialog(sessionId, gameId, userRequestMessage); } + public void gameUpdate(String sessionId, UUID gameId, GameView view) { + server.gameUpdate(sessionId, gameId, view); + } + + public void gameInform(String sessionId, UUID gameId, GameClientMessage message) { + server.gameInform(sessionId, gameId, message); + } + + public void gameInformPersonal(String sessionId, UUID gameId, GameClientMessage message) { + server.gameInformPersonal(sessionId, gameId, message); + } + + public void gameOver(String sessionId, UUID gameId, String message) { + server.gameOver(sessionId, gameId, message); + } + + public void gameError(String sessionId, UUID gameId, String message) { + server.gameError(sessionId, gameId, message); + } + } diff --git a/Mage.Server/src/main/java/mage/server/SessionManager.java b/Mage.Server/src/main/java/mage/server/SessionManager.java index d0405024370..f62cba82921 100644 --- a/Mage.Server/src/main/java/mage/server/SessionManager.java +++ b/Mage.Server/src/main/java/mage/server/SessionManager.java @@ -36,7 +36,7 @@ import mage.server.services.LogKeys; import mage.server.services.impl.LogServiceImpl; import mage.view.UserDataView; import org.apache.log4j.Logger; -import org.mage.network.model.MessageType; +import org.mage.network.messages.MessageType; /** * diff --git a/Mage.Server/src/main/java/mage/server/TableController.java b/Mage.Server/src/main/java/mage/server/TableController.java index db08fcb490d..46bf70871df 100644 --- a/Mage.Server/src/main/java/mage/server/TableController.java +++ b/Mage.Server/src/main/java/mage/server/TableController.java @@ -38,7 +38,6 @@ import java.util.concurrent.TimeUnit; import mage.MageException; import mage.cards.decks.Deck; import mage.cards.decks.DeckCardLists; -import mage.cards.decks.InvalidDeckException; import mage.constants.RangeOfInfluence; import mage.constants.TableState; import mage.game.Game; @@ -346,7 +345,7 @@ public class TableController { } } - public synchronized boolean submitDeck(UUID userId, DeckCardLists deckList) throws MageException { + public synchronized boolean submitDeck(UUID userId, DeckCardLists deckList) { UUID playerId = userPlayerMap.get(userId); if (table.isTournament()) { TournamentPlayer player = tournament.getPlayer(playerId); @@ -370,7 +369,16 @@ public class TableController { if (table.getState() != TableState.SIDEBOARDING && table.getState() != TableState.CONSTRUCTING) { return false; } - Deck deck = Deck.load(deckList, false, false); + User user = UserManager.getInstance().getUser(userId); + Deck deck; + try { + deck = Deck.load(deckList, false, false); + } + catch (GameException ex) { + logger.error("Error loading deck", ex); + user.showUserError("Submit deck", "Error loading deck"); + return false; + } if (table.getState() == TableState.SIDEBOARDING && table.getMatch() != null) { MatchPlayer mPlayer = table.getMatch().getPlayer(playerId); if (mPlayer != null) { @@ -378,7 +386,8 @@ public class TableController { } } if (!ServerMain.getInstance().isTestMode() && !table.getValidator().validate(deck)) { - throw new InvalidDeckException("Invalid deck for this format", table.getValidator().getInvalid()); + user.showUserError("Submit deck", table.getValidator().getInvalidMessage()); + return false; } submitDeck(userId, playerId, deck); return true; diff --git a/Mage.Server/src/main/java/mage/server/TableManager.java b/Mage.Server/src/main/java/mage/server/TableManager.java index 7e05eb3a08b..f3e60f3d442 100644 --- a/Mage.Server/src/main/java/mage/server/TableManager.java +++ b/Mage.Server/src/main/java/mage/server/TableManager.java @@ -33,7 +33,6 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.List; import java.util.Map.Entry; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -154,7 +153,7 @@ public class TableManager { return false; } - public boolean submitDeck(UUID userId, UUID tableId, DeckCardLists deckList) throws MageException { + public boolean submitDeck(UUID userId, UUID tableId, DeckCardLists deckList) { if (controllers.containsKey(tableId)) { return controllers.get(tableId).submitDeck(userId, deckList); } diff --git a/Mage.Server/src/main/java/mage/server/User.java b/Mage.Server/src/main/java/mage/server/User.java index 47363b6c699..48fb65f35cc 100644 --- a/Mage.Server/src/main/java/mage/server/User.java +++ b/Mage.Server/src/main/java/mage/server/User.java @@ -28,11 +28,9 @@ package mage.server; import java.io.Serializable; -import mage.remote.DisconnectReason; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -47,6 +45,7 @@ import mage.game.Table; import mage.game.tournament.TournamentPlayer; import mage.interfaces.callback.ClientCallback; import mage.players.net.UserData; +import mage.remote.DisconnectReason; import mage.server.draft.DraftSession; import mage.server.game.GameManager; import mage.server.game.GameSessionPlayer; @@ -56,12 +55,13 @@ import mage.server.tournament.TournamentSession; import mage.server.util.SystemUtil; import mage.view.AbilityPickerView; import mage.view.CardsView; +import mage.view.GameClientMessage; import mage.view.GameEndView; import mage.view.GameView; import mage.view.TableClientMessage; import mage.view.UserRequestMessage; import org.apache.log4j.Logger; -import org.mage.network.model.MessageType; +import org.mage.network.messages.MessageType; /** @@ -254,6 +254,26 @@ public class User { ServerMain.getInstance().userRequestDialog(sessionId, gameId, userRequestMessage); } + public void gameUpdate(UUID gameId, GameView view) { + ServerMain.getInstance().gameUpdate(sessionId, gameId, view); + } + + public void gameInform(UUID gameId, GameClientMessage message) { + ServerMain.getInstance().gameInform(sessionId, gameId, message); + } + + public void gameInformPersonal(UUID gameId, GameClientMessage message) { + ServerMain.getInstance().gameInformPersonal(sessionId, gameId, message); + } + + public void gameOver(UUID gameId, String message) { + ServerMain.getInstance().gameOver(sessionId, gameId, message); + } + + public void gameError(UUID gameId, String message) { + ServerMain.getInstance().gameError(sessionId, gameId, message); + } + public void ccDraftStarted(final UUID draftId, final UUID playerId) { fireCallback(new ClientCallback("startDraft", draftId, new TableClientMessage(draftId, playerId))); } @@ -280,13 +300,13 @@ public class User { } public void showUserMessage(final String title, String message) { -// List messageData = new LinkedList<>(); -// messageData.add(titel); -// messageData.add(message); -// fireCallback(new ClientCallback("showUserMessage", null, messageData )); ServerMain.getInstance().informClient(sessionId, title, message, MessageType.INFORMATION); } + public void showUserError(final String title, String message) { + ServerMain.getInstance().informClient(sessionId, title, message, MessageType.ERROR); + } + public boolean ccWatchGame(final UUID gameId) { fireCallback(new ClientCallback("watchGame", gameId)); return true; diff --git a/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java b/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java index 70b244de96f..cca215fe4be 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java +++ b/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java @@ -33,7 +33,6 @@ import java.util.Map; import java.util.UUID; import mage.game.Game; import mage.game.Table; -import mage.interfaces.callback.ClientCallback; import mage.players.Player; import mage.server.User; import mage.server.UserManager; @@ -78,7 +77,7 @@ public class GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameUpdate", game.getId(), getGameView())); + user.gameUpdate(game.getId(), getGameView()); } } } @@ -87,7 +86,7 @@ public class GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameInform", game.getId(), new GameClientMessage(getGameView(), message))); + user.gameInform(game.getId(), new GameClientMessage(getGameView(), message)); } } } @@ -96,7 +95,7 @@ public class GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameInformPersonal", game.getId(), new GameClientMessage(getGameView(), message))); + user.gameInformPersonal(game.getId(), new GameClientMessage(getGameView(), message)); } } } @@ -106,7 +105,7 @@ public class GameSessionWatcher { User user = UserManager.getInstance().getUser(userId); if (user != null) { user.removeGameWatchInfo(game.getId()); - user.fireCallback(new ClientCallback("gameOver", game.getId(), message)); + user.gameOver(game.getId(), message); } } } @@ -123,7 +122,7 @@ public class GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameError", game.getId(), message)); + user.gameError(game.getId(), message); } } } diff --git a/Mage/src/mage/cards/decks/DeckValidator.java b/Mage/src/mage/cards/decks/DeckValidator.java index 383e1ad8a05..40044f4002c 100644 --- a/Mage/src/mage/cards/decks/DeckValidator.java +++ b/Mage/src/mage/cards/decks/DeckValidator.java @@ -67,4 +67,14 @@ public abstract class DeckValidator implements Serializable { } } } + + public String getInvalidMessage() { + StringBuilder sb = new StringBuilder(); + sb.append("Invalid deck for this format").append("\n"); + for (Map.Entry entry: invalid.entrySet()) { + sb.append(entry.getKey()).append(" ").append(entry.getValue()).append("\n"); + } + return sb.toString(); + } + }