From 55fea43f20f5353f8bbd2b94d6e53977bb6973da Mon Sep 17 00:00:00 2001 From: betasteward Date: Wed, 17 Jun 2015 19:54:33 -0400 Subject: [PATCH] added a bunch of game methods --- .../src/main/java/mage/client/MageFrame.java | 96 +++++++++ .../mage/client/dialog/PickChoiceDialog.java | 2 +- .../java/mage/client/game/FeedbackPanel.java | 16 +- .../main/java/mage/client/game/GamePanel.java | 33 ++- .../client/remote/CallbackClientImpl.java | 190 +++++++++--------- .../mage/client/game/MultiConnectTest.java | 70 +++++++ .../main/java/org/mage/network/Client.java | 28 +-- .../main/java/org/mage/network/Server.java | 94 +++++++++ .../handlers/client/ClientMessageHandler.java | 26 +++ .../mage/network/interfaces/MageClient.java | 26 +++ .../mage/network/interfaces/MageServer.java | 10 +- .../mage/network/model/GameAskMessage.java | 28 +++ .../model/GameChooseAbilityMessage.java | 25 +++ .../model/GameChooseChoiceMessage.java | 25 +++ .../network/model/GameChoosePileMessage.java | 29 +++ .../network/model/GameEndInfoMessage.java | 26 +++ .../mage/network/model/GameInitMessage.java | 25 +++ .../network/model/GamePlayManaMessage.java | 27 +++ .../network/model/GamePlayXManaMessage.java | 27 +++ .../model/GameSelectAmountMessage.java | 28 +++ .../mage/network/model/GameSelectMessage.java | 31 +++ .../mage/network/model/GameTargetMessage.java | 40 ++++ .../model/SendPlayerBooleanRequest.java | 25 +++ .../model/SendPlayerIntegerRequest.java | 25 +++ .../model/SendPlayerManaTypeRequest.java | 28 +++ .../model/SendPlayerStringRequest.java | 25 +++ .../network/model/SendPlayerUUIDRequest.java | 25 +++ .../model/UserRequestDialogMessage.java | 25 +++ .../src/main/java/mage/server/Main.java | 155 +++++++++----- .../src/main/java/mage/server/User.java | 56 ++++++ .../mage/server/game/GameSessionPlayer.java | 36 ++-- .../mage/server/game/GameSessionWatcher.java | 3 +- 32 files changed, 1105 insertions(+), 200 deletions(-) create mode 100644 Mage.Network/src/main/java/org/mage/network/model/GameAskMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/GameChooseAbilityMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/GameChooseChoiceMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/GameChoosePileMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/GameEndInfoMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/GameInitMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/GamePlayManaMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/GamePlayXManaMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/GameSelectAmountMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/GameSelectMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/GameTargetMessage.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/SendPlayerBooleanRequest.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/SendPlayerIntegerRequest.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/SendPlayerManaTypeRequest.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/SendPlayerStringRequest.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/SendPlayerUUIDRequest.java create mode 100644 Mage.Network/src/main/java/org/mage/network/model/UserRequestDialogMessage.java diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index c78aa51de15..42a5d7e262f 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -84,10 +84,12 @@ import java.awt.image.BufferedImage; import java.beans.PropertyVetoException; import java.io.IOException; import java.io.InputStream; +import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; 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; @@ -98,8 +100,12 @@ import mage.cards.repository.ExpansionInfo; import mage.cards.repository.ExpansionRepository; import mage.client.util.GameManager; import mage.client.util.audio.AudioManager; +import mage.game.Table; import mage.interfaces.ServerState; +import mage.view.AbilityPickerView; +import mage.view.CardsView; import mage.view.ChatMessage; +import mage.view.GameView; import mage.view.UserRequestMessage; import net.java.truevfs.access.TArchiveDetector; import net.java.truevfs.access.TConfig; @@ -1492,6 +1498,96 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { Plugins.getInstance().addGamesPlayed(); } } + + @Override + public void initGame(UUID gameId, GameView gameView) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.init(gameView); + } + } + + @Override + public void gameAsk(UUID gameId, GameView gameView, String question) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.ask(question, gameView); + } + } + + @Override + public void gameTarget(UUID gameId, GameView gameView, String question, CardsView cardView, Set targets, boolean required, Map options) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.pickTarget(question, cardView, gameView, targets, required, options); + } + } + + @Override + public void gameChooseAbility(UUID gameId, AbilityPickerView abilities) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.pickAbility(abilities); + } + } + + @Override + public void gameChoosePile(UUID gameId, String message, CardsView pile1, CardsView pile2) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.pickPile(message, pile1, pile2); + } + } + + @Override + public void gameChooseChoice(UUID gameId, mage.choices.Choice choice) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.getChoice(choice); + } + } + + @Override + public void gamePlayMana(UUID gameId, GameView gameView, String message) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.playMana(message, gameView); + } + } + + @Override + public void gamePlayXMana(UUID gameId, GameView gameView, String message) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.playXMana(message, gameView); + } + } + + @Override + public void gameSelectAmount(UUID gameId, String message, int min, int max) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.getAmount(min, max, message); + } + } + + @Override + public void gameSelect(UUID gameId, GameView gameView, String message, Map options) { + GamePanel panel = MageFrame.getGame(gameId); + if (panel != null) { + panel.select(message, gameView, options); + } + } + + @Override + public void gameEndInfo(UUID gameId, GameEndView view) { + showGameEndDialog(view); + } + + @Override + public void userRequestDialog(UUID gameId, UserRequestMessage userRequestMessage) { + showUserRequestDialog(userRequestMessage); + } } diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java index dbf884f23de..62737934be3 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java @@ -58,7 +58,7 @@ public class PickChoiceDialog extends MageDialog { Choice choice; boolean autoSelect; - public void showDialog(Choice choice, UUID objectId, MageDialogState mageDialogState) { + public void showDialog(Choice choice, MageDialogState mageDialogState) { this.lblMessage.setText("" + choice.getMessage()); this.choice = choice; this.autoSelect = false; diff --git a/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java b/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java index 3c69d897d64..5d2244d1c75 100644 --- a/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java @@ -85,14 +85,14 @@ public class FeedbackPanel extends javax.swing.JPanel { client = MageFrame.getClient(); } - public void getFeedback(FeedbackMode mode, String message, boolean special, Map options, int messageId) { - synchronized (this) { - if (messageId < this.lastMessageId) { - logger.warn("ignoring message from later source: " + messageId + ", text=" + message); - return; - } - this.lastMessageId = messageId; - } + public void getFeedback(FeedbackMode mode, String message, boolean special, Map options) { +// synchronized (this) { +// if (messageId < this.lastMessageId) { +// logger.warn("ignoring message from later source: " + messageId + ", text=" + message); +// return; +// } +// this.lastMessageId = messageId; +// } this.lblMessage.setText(message); this.helper.setMessage(message); diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index 29ce7549cc8..d42adf0aa0a 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -834,9 +834,9 @@ public final class GamePanel extends javax.swing.JPanel { } } - public void ask(String question, GameView gameView, int messageId) { + public void ask(String question, GameView gameView) { updateGame(gameView); - this.feedbackPanel.getFeedback(FeedbackMode.QUESTION, question, false, null, messageId); + this.feedbackPanel.getFeedback(FeedbackMode.QUESTION, question, false, null); } /** * Shows a pick target dialog and allows the player to pick a target (e.g. the pick triggered ability) @@ -847,9 +847,8 @@ public final class GamePanel extends javax.swing.JPanel { * @param targets * @param required * @param options - * @param messageId */ - public void pickTarget(String message, CardsView cardView, GameView gameView, Set targets, boolean required, Map options, int messageId) { + public void pickTarget(String message, CardsView cardView, GameView gameView, Set targets, boolean required, Map options) { ShowCardsDialog dialog = null; if (options != null && options.containsKey("targetZone")) { if (Zone.HAND.equals(options.get("targetZone"))) { // mark selectable target cards in hand @@ -877,19 +876,19 @@ public final class GamePanel extends javax.swing.JPanel { dialog = showCards(message, cardView, required, options0); options0.put("dialog", dialog); } - this.feedbackPanel.getFeedback(required?FeedbackMode.INFORM:FeedbackMode.CANCEL, message, gameView.getSpecial(), options0, messageId); + this.feedbackPanel.getFeedback(required?FeedbackMode.INFORM:FeedbackMode.CANCEL, message, gameView.getSpecial(), options0); if (dialog != null) { this.pickTarget.add(dialog); } } - public void inform(String information, GameView gameView, int messageId) { + public void inform(String information, GameView gameView) { updateGame(gameView); - this.feedbackPanel.getFeedback(FeedbackMode.INFORM, information, gameView.getSpecial(), null, messageId); + this.feedbackPanel.getFeedback(FeedbackMode.INFORM, information, gameView.getSpecial(), null); } - public void endMessage(String message, int messageId) { - this.feedbackPanel.getFeedback(FeedbackMode.END, message, false, null, messageId); + public void endMessage(String message) { + this.feedbackPanel.getFeedback(FeedbackMode.END, message, false, null); ArrowBuilder.getBuilder().removeAllArrows(gameId); } @@ -897,7 +896,7 @@ public final class GamePanel extends javax.swing.JPanel { return JOptionPane.showConfirmDialog(this, message, title, JOptionPane.YES_NO_OPTION); } - public void select(String message, GameView gameView, int messageId, Map options) { + public void select(String message, GameView gameView, Map options) { updateGame(gameView, options); boolean controllingPlayer = false; for (PlayerView playerView : gameView.getPlayers()) { @@ -926,19 +925,19 @@ public final class GamePanel extends javax.swing.JPanel { } String messageToDisplay = message + "
" + activePlayerText +" / " + gameView.getStep().toString() + priorityPlayerText + "
"; - this.feedbackPanel.getFeedback(FeedbackMode.SELECT, messageToDisplay, gameView.getSpecial(), panelOptions, messageId); + this.feedbackPanel.getFeedback(FeedbackMode.SELECT, messageToDisplay, gameView.getSpecial(), panelOptions); } - public void playMana(String message, GameView gameView, int messageId) { + public void playMana(String message, GameView gameView) { updateGame(gameView); DialogManager.getManager(gameId).fadeOut(); - this.feedbackPanel.getFeedback(FeedbackMode.CANCEL, message, gameView.getSpecial(), null, messageId); + this.feedbackPanel.getFeedback(FeedbackMode.CANCEL, message, gameView.getSpecial(), null); } - public void playXMana(String message, GameView gameView, int messageId) { + public void playXMana(String message, GameView gameView) { updateGame(gameView); DialogManager.getManager(gameId).fadeOut(); - this.feedbackPanel.getFeedback(FeedbackMode.CONFIRM, message, gameView.getSpecial(), null, messageId); + this.feedbackPanel.getFeedback(FeedbackMode.CONFIRM, message, gameView.getSpecial(), null); } public void replayMessage(String message) { @@ -973,10 +972,10 @@ public final class GamePanel extends javax.swing.JPanel { } } - public void getChoice(Choice choice, UUID objectId) { + public void getChoice(Choice choice) { hideAll(); PickChoiceDialog pickChoice = new PickChoiceDialog(); - pickChoice.showDialog(choice, objectId,choiceWindowState); + pickChoice.showDialog(choice, choiceWindowState); if (choice.isKeyChoice()) { if (pickChoice.isAutoSelect()) { client.sendPlayerString(gameId, "#" + choice.getChoiceKey()); 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 40b86bae5dc..4b67000e136 100644 --- a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java +++ b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java @@ -89,13 +89,13 @@ public class CallbackClientImpl implements CallbackClient { try { logger.debug(callback.getMessageId() + " -- " + callback.getMethod()); switch (callback.getMethod()) { - case "startGame": - { +// case "startGame": +// { // TableClientMessage message = (TableClientMessage) callback.getData(); // GameManager.getInstance().setCurrentPlayerUUID(message.getPlayerId()); // gameStarted(message.getGameId(), message.getPlayerId()); // break; - } +// } case "startTournament": { TableClientMessage message = (TableClientMessage) callback.getData(); @@ -117,8 +117,8 @@ public class CallbackClientImpl implements CallbackClient { case "watchGame": watchGame(callback.getObjectId()); break; - case "chatMessage": - { +// case "chatMessage": +// { // ChatMessage message = (ChatMessage) callback.getData(); // ChatPanel panel = MageFrame.getChat(callback.getObjectId()); // if (panel != null) { @@ -151,7 +151,7 @@ public class CallbackClientImpl implements CallbackClient { // } // // } break; - } +// } case "serverMessage": if (callback.getData() != null) { ChatMessage message = (ChatMessage) callback.getData(); @@ -178,7 +178,7 @@ public class CallbackClientImpl implements CallbackClient { { GamePanel panel = MageFrame.getGame(callback.getObjectId()); if (panel != null) { - panel.endMessage((String) callback.getData(), callback.getMessageId()); + panel.endMessage((String) callback.getData()); } break; } case "replayUpdate": @@ -188,99 +188,99 @@ public class CallbackClientImpl implements CallbackClient { panel.updateGame((GameView) callback.getData()); } break; } - case "gameInit": - { - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.init((GameView) callback.getData()); - } break; - } +// case "gameInit": +// { +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.init((GameView) callback.getData()); +// } break; +// } case "gameOver": { GamePanel panel = MageFrame.getGame(callback.getObjectId()); if (panel != null) { - panel.endMessage((String) callback.getData(), callback.getMessageId()); + panel.endMessage((String) callback.getData()); } break; } case "gameError": frame.showErrorDialog("Game Error", (String) callback.getData()); break; - case "gameAsk": - { - GameClientMessage message = (GameClientMessage) callback.getData(); - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.ask(message.getMessage(), message.getGameView(), callback.getMessageId()); - } break; - } - case "gameTarget": // e.g. Pick triggered ability - { - GameClientMessage message = (GameClientMessage) callback.getData(); - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.pickTarget(message.getMessage(), message.getCardsView(), message.getGameView(), - message.getTargets(), message.isFlag(), message.getOptions(), callback.getMessageId()); - } break; - } - case "gameSelect": - { - GameClientMessage message = (GameClientMessage) callback.getData(); - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.select(message.getMessage(), message.getGameView(), callback.getMessageId(), message.getOptions()); - } break; - } - case "gameChooseAbility": - { - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.pickAbility((AbilityPickerView) callback.getData()); - } break; - } - case "gameChoosePile": - { - GameClientMessage message = (GameClientMessage) callback.getData(); - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.pickPile(message.getMessage(), message.getPile1(), message.getPile2()); - } break; - } - case "gameChooseChoice": - { - GameClientMessage message = (GameClientMessage) callback.getData(); - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - - if (panel != null) { - panel.getChoice(message.getChoice(), callback.getObjectId()); - } - break; - } - case "gamePlayMana": - { - GameClientMessage message = (GameClientMessage) callback.getData(); - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.playMana(message.getMessage(), message.getGameView(), callback.getMessageId()); - } - break; - } - case "gamePlayXMana": - { - GameClientMessage message = (GameClientMessage) callback.getData(); - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.playXMana(message.getMessage(), message.getGameView(), callback.getMessageId()); - } - break; - } - case "gameSelectAmount": - { - GameClientMessage message = (GameClientMessage) callback.getData(); - GamePanel panel = MageFrame.getGame(callback.getObjectId()); - if (panel != null) { - panel.getAmount(message.getMin(), message.getMax(), message.getMessage()); - } break; - } +// case "gameAsk": +// { +// GameClientMessage message = (GameClientMessage) callback.getData(); +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.ask(message.getMessage(), message.getGameView(), callback.getMessageId()); +// } break; +// } +// case "gameTarget": // e.g. Pick triggered ability +// { +// GameClientMessage message = (GameClientMessage) callback.getData(); +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.pickTarget(message.getMessage(), message.getCardsView(), message.getGameView(), +// message.getTargets(), message.isFlag(), message.getOptions(), callback.getMessageId()); +// } break; +// } +// case "gameSelect": +// { +// GameClientMessage message = (GameClientMessage) callback.getData(); +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.select(message.getMessage(), message.getGameView(), callback.getMessageId(), message.getOptions()); +// } break; +// } +// case "gameChooseAbility": +// { +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.pickAbility((AbilityPickerView) callback.getData()); +// } break; +// } +// case "gameChoosePile": +// { +// GameClientMessage message = (GameClientMessage) callback.getData(); +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.pickPile(message.getMessage(), message.getPile1(), message.getPile2()); +// } break; +// } +// case "gameChooseChoice": +// { +// GameClientMessage message = (GameClientMessage) callback.getData(); +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// +// if (panel != null) { +// panel.getChoice(message.getChoice(), callback.getObjectId()); +// } +// break; +// } +// case "gamePlayMana": +// { +// GameClientMessage message = (GameClientMessage) callback.getData(); +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.playMana(message.getMessage(), message.getGameView(), callback.getMessageId()); +// } +// break; +// } +// case "gamePlayXMana": +// { +// GameClientMessage message = (GameClientMessage) callback.getData(); +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.playXMana(message.getMessage(), message.getGameView(), callback.getMessageId()); +// } +// break; +// } +// case "gameSelectAmount": +// { +// GameClientMessage message = (GameClientMessage) callback.getData(); +// GamePanel panel = MageFrame.getGame(callback.getObjectId()); +// if (panel != null) { +// panel.getAmount(message.getMin(), message.getMax(), message.getMessage()); +// } break; +// } case "gameUpdate": { GamePanel panel = MageFrame.getGame(callback.getObjectId()); @@ -288,9 +288,9 @@ public class CallbackClientImpl implements CallbackClient { panel.updateGame((GameView) callback.getData()); } break; } - case "endGameInfo": - MageFrame.getInstance().showGameEndDialog((GameEndView) callback.getData()); - break; +// case "endGameInfo": +// MageFrame.getInstance().showGameEndDialog((GameEndView) callback.getData()); +// break; case "showUserMessage": List messageData = (List) callback.getData(); if (messageData.size() == 2) { @@ -302,7 +302,7 @@ public class CallbackClientImpl implements CallbackClient { GameClientMessage message = (GameClientMessage) callback.getData(); GamePanel panel = MageFrame.getGame(callback.getObjectId()); if (panel != null) { - panel.inform(message.getMessage(), message.getGameView(), callback.getMessageId()); + panel.inform(message.getMessage(), message.getGameView()); } } // no longer needed because phase skip handling on server side now 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 a8c52eca335..567c6ea2d68 100644 --- a/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java +++ b/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java @@ -1,5 +1,8 @@ package mage.client.game; +import java.io.Serializable; +import java.util.Map; +import java.util.Set; import java.util.UUID; import mage.client.components.MageUI; //import mage.interfaces.MageClient; @@ -13,8 +16,15 @@ 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.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; @@ -133,6 +143,66 @@ public class MultiConnectTest { public void gameStarted(UUID gameId, UUID playerId) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + + @Override + public void initGame(UUID gameId, GameView gameView) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameAsk(UUID gameId, GameView gameView, String question) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameTarget(UUID gameId, GameView gameView, String question, CardsView cardView, Set targets, boolean required, Map options) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameChooseAbility(UUID gameId, AbilityPickerView abilities) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameChoosePile(UUID gameId, String message, CardsView pile1, CardsView pile2) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameChooseChoice(UUID gameId, Choice choice) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gamePlayMana(UUID gameId, GameView gameView, String message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gamePlayXMana(UUID gameId, GameView gameView, String message) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameSelectAmount(UUID gameId, String message, int min, int max) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameSelect(UUID gameId, GameView gameView, String message, Map options) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void gameEndInfo(UUID gameId, GameEndView view) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void userRequestDialog(UUID gameId, UserRequestMessage userRequestMessage) { + 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 000852e336b..e04e4f2d013 100644 --- a/Mage.Network/src/main/java/org/mage/network/Client.java +++ b/Mage.Network/src/main/java/org/mage/network/Client.java @@ -167,11 +167,23 @@ public class Client { } public void sendPlayerUUID(UUID gameId, UUID id) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + clientMessageHandler.sendPlayerUUID(gameId, id); } public void sendPlayerBoolean(UUID gameId, boolean b) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + clientMessageHandler.sendPlayerBoolean(gameId, b); + } + + public void sendPlayerInteger(UUID gameId, int i) { + clientMessageHandler.sendPlayerInteger(gameId, i); + } + + public void sendPlayerString(UUID gameId, String string) { + clientMessageHandler.sendPlayerString(gameId, string); + } + + public void sendPlayerManaType(UUID gameId, UUID playerId, ManaType manaType) { + clientMessageHandler.sendPlayerManaType(gameId, playerId, manaType); } public String getUserName() { @@ -346,18 +358,6 @@ public class Client { // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. // } - public void sendPlayerInteger(UUID gameId, int i) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - public void sendPlayerString(UUID gameId, String special) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - public void sendPlayerManaType(UUID gameId, UUID playerId, ManaType manaType) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - public void cheat(UUID gameId, UUID playerId, DeckCardLists importDeck) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } diff --git a/Mage.Network/src/main/java/org/mage/network/Server.java b/Mage.Network/src/main/java/org/mage/network/Server.java index 50c910944a4..cfcf104cf16 100644 --- a/Mage.Network/src/main/java/org/mage/network/Server.java +++ b/Mage.Network/src/main/java/org/mage/network/Server.java @@ -1,5 +1,14 @@ 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; @@ -20,8 +29,18 @@ import io.netty.handler.timeout.IdleStateHandler; import io.netty.util.concurrent.DefaultEventExecutorGroup; import io.netty.util.concurrent.EventExecutorGroup; import io.netty.util.concurrent.GlobalEventExecutor; +import java.io.Serializable; +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.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; @@ -36,7 +55,10 @@ import org.mage.network.handlers.server.ServerRequestHandler; //import org.mage.network.handlers.server.TableMessageHandler; import org.mage.network.interfaces.MageServer; import org.mage.network.model.ChatMessageMessage; +import org.mage.network.model.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; @@ -186,5 +208,77 @@ public class Server { ch.writeAndFlush(new GameStartedMessage(gameId, playerId)).addListener(WriteListener.getInstance()); } + public void initGame(String sessionId, UUID gameId, GameView gameView) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameInitMessage(gameId, gameView)).addListener(WriteListener.getInstance()); + } + + public void gameAsk(String sessionId, UUID gameId, GameView gameView, String question) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameAskMessage(gameId, gameView, question)).addListener(WriteListener.getInstance()); + } + + public void gameTarget(String sessionId, UUID gameId, GameView gameView, String question, CardsView cardView, Set targets, boolean required, Map options) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameTargetMessage(gameId, gameView, question, cardView, targets, required, options)).addListener(WriteListener.getInstance()); + } + + public void gameSelect(String sessionId, UUID gameId, GameView gameView, String message, Map options) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameSelectMessage(gameId, gameView, message, options)).addListener(WriteListener.getInstance()); + } + + public void gameChooseAbility(String sessionId, UUID gameId, AbilityPickerView abilities) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameChooseAbilityMessage(gameId, abilities)).addListener(WriteListener.getInstance()); + } + + public void gameChoosePile(String sessionId, UUID gameId, String message, CardsView pile1, CardsView pile2) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameChoosePileMessage(gameId, message, pile1, pile2)).addListener(WriteListener.getInstance()); + } + + public void gameChooseChoice(String sessionId, UUID gameId, Choice choice) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameChooseChoiceMessage(gameId, choice)).addListener(WriteListener.getInstance()); + } + + public void gamePlayMana(String sessionId, UUID gameId, GameView gameView, String message) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GamePlayManaMessage(gameId, gameView, message)).addListener(WriteListener.getInstance()); + } + + public void gamePlayXMana(String sessionId, UUID gameId, GameView gameView, String message) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GamePlayXManaMessage(gameId, gameView, message)).addListener(WriteListener.getInstance()); + } + + public void gameSelectAmount(String sessionId, UUID gameId, String message, int min, int max) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameSelectAmountMessage(gameId, message, min, max)).addListener(WriteListener.getInstance()); + } + + public void endGameInfo(String sessionId, UUID gameId, GameEndView view) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new GameEndInfoMessage(gameId, view)).addListener(WriteListener.getInstance()); + } + + public void userRequestDialog(String sessionId, UUID gameId, UserRequestMessage userRequestMessage) { + Channel ch = findChannel(sessionId); + if (ch != null) + ch.writeAndFlush(new UserRequestDialogMessage(gameId, userRequestMessage)).addListener(WriteListener.getInstance()); + } + } diff --git a/Mage.Network/src/main/java/org/mage/network/handlers/client/ClientMessageHandler.java b/Mage.Network/src/main/java/org/mage/network/handlers/client/ClientMessageHandler.java index 8ff7bfccb42..ebfde8a12dc 100644 --- a/Mage.Network/src/main/java/org/mage/network/handlers/client/ClientMessageHandler.java +++ b/Mage.Network/src/main/java/org/mage/network/handlers/client/ClientMessageHandler.java @@ -1,5 +1,10 @@ package org.mage.network.handlers.client; +import org.mage.network.model.SendPlayerManaTypeRequest; +import org.mage.network.model.SendPlayerIntegerRequest; +import org.mage.network.model.SendPlayerStringRequest; +import org.mage.network.model.SendPlayerUUIDRequest; +import org.mage.network.model.SendPlayerBooleanRequest; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import java.util.List; @@ -7,6 +12,7 @@ import java.util.UUID; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import mage.cards.decks.DeckCardLists; +import mage.constants.ManaType; import mage.game.match.MatchOptions; import mage.view.RoomView; import mage.view.TableView; @@ -155,4 +161,24 @@ public class ClientMessageHandler extends SimpleChannelInboundHandler targets, boolean required, Map options); + void gameChooseAbility(UUID gameId, AbilityPickerView abilities); + void gameChoosePile(UUID gameId, String message, CardsView pile1, CardsView pile2); + void gameChooseChoice(UUID gameId, Choice choice); + void gamePlayMana(UUID gameId, GameView gameView, String message); + void gamePlayXMana(UUID gameId, GameView gameView, String message); + void gameSelectAmount(UUID gameId, String message, int min, int max); + void gameSelect(UUID gameId, GameView gameView, String message, Map options); + + public void gameEndInfo(UUID gameId, GameEndView view); + + public void userRequestDialog(UUID gameId, UserRequestMessage userRequestMessage); } 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 c2230eb5870..cbf4538af58 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 @@ -3,6 +3,7 @@ package org.mage.network.interfaces; import java.util.List; import java.util.UUID; import mage.cards.decks.DeckCardLists; +import mage.constants.ManaType; import mage.game.match.MatchOptions; import mage.interfaces.ServerState; import mage.remote.Connection; @@ -38,8 +39,13 @@ public interface MageServer { void swapSeats(String sessionId, UUID roomId, UUID tableId, int seatNum1, int seatNum2); boolean startMatch(String sessionId, UUID roomId, UUID tableId); - UUID joinGame(final UUID gameId, final String sessionId); - + UUID joinGame(UUID gameId, String sessionId); + void sendPlayerUUID(UUID gameId, String sessionId, UUID data); + void sendPlayerString(UUID gameId, String sessionId, String data); + void sendPlayerManaType(UUID gameId, UUID playerId, String sessionId, ManaType data); + void sendPlayerBoolean(UUID gameId, String sessionId, Boolean data); + void sendPlayerInteger(UUID gameId, String sessionId, Integer data); + void pingTime(long milliSeconds, String sessionId); } diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameAskMessage.java b/Mage.Network/src/main/java/org/mage/network/model/GameAskMessage.java new file mode 100644 index 00000000000..4d1940c9d17 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/GameAskMessage.java @@ -0,0 +1,28 @@ +package org.mage.network.model; + +import java.util.UUID; +import mage.view.GameView; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameAskMessage extends ClientMessage { + + private UUID gameId; + private GameView gameView; + private String question; + + public GameAskMessage(UUID gameId, GameView gameView, String question) { + this.gameId = gameId; + this.gameView = gameView; + this.question = question; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameAsk(gameId, gameView, question); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameChooseAbilityMessage.java b/Mage.Network/src/main/java/org/mage/network/model/GameChooseAbilityMessage.java new file mode 100644 index 00000000000..89854d30215 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/GameChooseAbilityMessage.java @@ -0,0 +1,25 @@ +package org.mage.network.model; + +import java.util.UUID; +import mage.view.AbilityPickerView; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameChooseAbilityMessage extends ClientMessage { + private final UUID gameId; + private final AbilityPickerView abilities; + + public GameChooseAbilityMessage(UUID gameId, AbilityPickerView abilities) { + this.gameId = gameId; + this.abilities = abilities; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameChooseAbility(gameId, abilities); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameChooseChoiceMessage.java b/Mage.Network/src/main/java/org/mage/network/model/GameChooseChoiceMessage.java new file mode 100644 index 00000000000..454fc3052f0 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/GameChooseChoiceMessage.java @@ -0,0 +1,25 @@ +package org.mage.network.model; + +import java.util.UUID; +import mage.choices.Choice; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameChooseChoiceMessage extends ClientMessage { + private final UUID gameId; + private final Choice choice; + + public GameChooseChoiceMessage(UUID gameId, Choice choice) { + this.gameId = gameId; + this.choice = choice; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameChooseChoice(gameId, choice); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameChoosePileMessage.java b/Mage.Network/src/main/java/org/mage/network/model/GameChoosePileMessage.java new file mode 100644 index 00000000000..bdce7c01a95 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/GameChoosePileMessage.java @@ -0,0 +1,29 @@ +package org.mage.network.model; + +import java.util.UUID; +import mage.view.CardsView; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameChoosePileMessage extends ClientMessage { + private final UUID gameId; + private final String message; + private final CardsView pile1; + private final CardsView pile2; + + public GameChoosePileMessage(UUID gameId, String message, CardsView pile1, CardsView pile2) { + this.gameId = gameId; + this.message = message; + this.pile1 = pile1; + this.pile2 = pile2; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameChoosePile(gameId, message, pile1, pile2); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameEndInfoMessage.java b/Mage.Network/src/main/java/org/mage/network/model/GameEndInfoMessage.java new file mode 100644 index 00000000000..c745486984b --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/GameEndInfoMessage.java @@ -0,0 +1,26 @@ +package org.mage.network.model; + +import java.util.UUID; +import mage.game.Table; +import mage.view.GameEndView; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameEndInfoMessage extends ClientMessage { + private final UUID gameId; + private final GameEndView view; + + public GameEndInfoMessage(UUID gameId, GameEndView view) { + this.gameId = gameId; + this.view = view; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameEndInfo(gameId, view); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameInitMessage.java b/Mage.Network/src/main/java/org/mage/network/model/GameInitMessage.java new file mode 100644 index 00000000000..7d3519f08d2 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/GameInitMessage.java @@ -0,0 +1,25 @@ +package org.mage.network.model; + +import java.util.UUID; +import mage.view.GameView; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameInitMessage extends ClientMessage { + + private UUID gameId; + private GameView gameView; + + public GameInitMessage(UUID gameId, GameView gameView) { + this.gameId = gameId; + this.gameView = gameView; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().initGame(gameId, gameView); + } +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GamePlayManaMessage.java b/Mage.Network/src/main/java/org/mage/network/model/GamePlayManaMessage.java new file mode 100644 index 00000000000..14f3fcc0788 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/GamePlayManaMessage.java @@ -0,0 +1,27 @@ +package org.mage.network.model; + +import java.util.UUID; +import mage.view.GameView; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GamePlayManaMessage extends ClientMessage { + private final UUID gameId; + private final GameView gameView; + private final String message; + + public GamePlayManaMessage(UUID gameId, GameView gameView, String message) { + this.gameId = gameId; + this.gameView = gameView; + this.message = message; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gamePlayMana(gameId, gameView, message); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GamePlayXManaMessage.java b/Mage.Network/src/main/java/org/mage/network/model/GamePlayXManaMessage.java new file mode 100644 index 00000000000..d348d64498b --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/GamePlayXManaMessage.java @@ -0,0 +1,27 @@ +package org.mage.network.model; + +import java.util.UUID; +import mage.view.GameView; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GamePlayXManaMessage extends ClientMessage { + private final UUID gameId; + private final GameView gameView; + private final String message; + + public GamePlayXManaMessage(UUID gameId, GameView gameView, String message) { + this.gameId = gameId; + this.gameView = gameView; + this.message = message; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gamePlayXMana(gameId, gameView, message); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameSelectAmountMessage.java b/Mage.Network/src/main/java/org/mage/network/model/GameSelectAmountMessage.java new file mode 100644 index 00000000000..d3e627ed8c4 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/GameSelectAmountMessage.java @@ -0,0 +1,28 @@ +package org.mage.network.model; + +import java.util.UUID; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameSelectAmountMessage extends ClientMessage { + private final UUID gameId; + private final String message; + private final int min; + private final int max; + + public GameSelectAmountMessage(UUID gameId, String message, int min, int max) { + this.gameId = gameId; + this.message = message; + this.min = min; + this.max = max; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameSelectAmount(gameId, message, min, max); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameSelectMessage.java b/Mage.Network/src/main/java/org/mage/network/model/GameSelectMessage.java new file mode 100644 index 00000000000..032e539930b --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/GameSelectMessage.java @@ -0,0 +1,31 @@ +package org.mage.network.model; + +import java.io.Serializable; +import java.util.Map; +import java.util.UUID; +import mage.view.GameView; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameSelectMessage extends ClientMessage { + private final UUID gameId; + private final GameView gameView; + private final String message; + private final Map options; + + public GameSelectMessage(UUID gameId, GameView gameView, String message, Map options) { + this.gameId = gameId; + this.gameView = gameView; + this.message = message; + this.options = options; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameSelect(gameId, gameView, message, options); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/GameTargetMessage.java b/Mage.Network/src/main/java/org/mage/network/model/GameTargetMessage.java new file mode 100644 index 00000000000..1d6d80b6ebf --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/GameTargetMessage.java @@ -0,0 +1,40 @@ +package org.mage.network.model; + +import java.io.Serializable; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import mage.view.CardsView; +import mage.view.GameView; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class GameTargetMessage extends ClientMessage { + + private final UUID gameId; + private final GameView gameView; + private final String question; + private final CardsView cardView; + private final Set targets; + private final boolean required; + private final Map options; + + public GameTargetMessage(UUID gameId, GameView gameView, String question, CardsView cardView, Set targets, boolean required, Map options) { + this.gameId = gameId; + this.gameView = gameView; + this.question = question; + this.cardView = cardView; + this.targets = targets; + this.required = required; + this.options = options; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().gameTarget(gameId, gameView, question, cardView, targets, required, options); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerBooleanRequest.java b/Mage.Network/src/main/java/org/mage/network/model/SendPlayerBooleanRequest.java new file mode 100644 index 00000000000..3ace8e7d8e4 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/SendPlayerBooleanRequest.java @@ -0,0 +1,25 @@ +package org.mage.network.model; + +import io.netty.channel.ChannelHandlerContext; +import java.util.UUID; +import org.mage.network.interfaces.MageServer; + +/** + * + * @author BetaSteward + */ +public class SendPlayerBooleanRequest extends ServerRequest { + private final UUID gameId; + private final boolean b; + + public SendPlayerBooleanRequest(UUID gameId, boolean b) { + this.gameId = gameId; + this.b = b; + } + + @Override + public void handleMessage(MageServer server, ChannelHandlerContext ctx) { + server.sendPlayerBoolean(gameId, ctx.channel().id().asLongText(), b); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerIntegerRequest.java b/Mage.Network/src/main/java/org/mage/network/model/SendPlayerIntegerRequest.java new file mode 100644 index 00000000000..c0d712ddab7 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/SendPlayerIntegerRequest.java @@ -0,0 +1,25 @@ +package org.mage.network.model; + +import io.netty.channel.ChannelHandlerContext; +import java.util.UUID; +import org.mage.network.interfaces.MageServer; + +/** + * + * @author BetaSteward + */ +public class SendPlayerIntegerRequest extends ServerRequest { + private final UUID gameId; + private final int i; + + public SendPlayerIntegerRequest(UUID gameId, int i) { + this.gameId = gameId; + this.i = i; + } + + @Override + public void handleMessage(MageServer server, ChannelHandlerContext ctx) { + server.sendPlayerInteger(gameId, ctx.channel().id().asLongText(), i); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerManaTypeRequest.java b/Mage.Network/src/main/java/org/mage/network/model/SendPlayerManaTypeRequest.java new file mode 100644 index 00000000000..9dda0ba10a7 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/SendPlayerManaTypeRequest.java @@ -0,0 +1,28 @@ +package org.mage.network.model; + +import io.netty.channel.ChannelHandlerContext; +import java.util.UUID; +import mage.constants.ManaType; +import org.mage.network.interfaces.MageServer; + +/** + * + * @author BetaSteward + */ +public class SendPlayerManaTypeRequest extends ServerRequest { + private final UUID gameId; + private final UUID playerId; + private final ManaType manaType; + + public SendPlayerManaTypeRequest(UUID gameId, UUID playerId, ManaType manaType) { + this.gameId = gameId; + this.playerId = playerId; + this.manaType = manaType; + } + + @Override + public void handleMessage(MageServer server, ChannelHandlerContext ctx) { + server.sendPlayerManaType(gameId, playerId, ctx.channel().id().asLongText(), manaType); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerStringRequest.java b/Mage.Network/src/main/java/org/mage/network/model/SendPlayerStringRequest.java new file mode 100644 index 00000000000..f805a54c0f9 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/SendPlayerStringRequest.java @@ -0,0 +1,25 @@ +package org.mage.network.model; + +import io.netty.channel.ChannelHandlerContext; +import java.util.UUID; +import org.mage.network.interfaces.MageServer; + +/** + * + * @author BetaSteward + */ +public class SendPlayerStringRequest extends ServerRequest { + private final UUID gameId; + private final String string; + + public SendPlayerStringRequest(UUID gameId, String string) { + this.gameId = gameId; + this.string = string; + } + + @Override + public void handleMessage(MageServer server, ChannelHandlerContext ctx) { + server.sendPlayerString(gameId, ctx.channel().id().asLongText(), string); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/SendPlayerUUIDRequest.java b/Mage.Network/src/main/java/org/mage/network/model/SendPlayerUUIDRequest.java new file mode 100644 index 00000000000..dea644a3dd4 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/SendPlayerUUIDRequest.java @@ -0,0 +1,25 @@ +package org.mage.network.model; + +import io.netty.channel.ChannelHandlerContext; +import java.util.UUID; +import org.mage.network.interfaces.MageServer; + +/** + * + * @author BetaSteward + */ +public class SendPlayerUUIDRequest extends ServerRequest { + private final UUID gameId; + private final UUID id; + + public SendPlayerUUIDRequest(UUID gameId, UUID id) { + this.gameId = gameId; + this.id = id; + } + + @Override + public void handleMessage(MageServer server, ChannelHandlerContext ctx) { + server.sendPlayerUUID(gameId, ctx.channel().id().asLongText(), id); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/model/UserRequestDialogMessage.java b/Mage.Network/src/main/java/org/mage/network/model/UserRequestDialogMessage.java new file mode 100644 index 00000000000..86dc4fc6e0d --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/model/UserRequestDialogMessage.java @@ -0,0 +1,25 @@ +package org.mage.network.model; + +import java.util.UUID; +import mage.view.UserRequestMessage; +import org.mage.network.handlers.client.ClientMessageHandler; + +/** + * + * @author BetaSteward + */ +public class UserRequestDialogMessage extends ClientMessage { + private final UUID gameId; + private final UserRequestMessage userRequestMessage; + + public UserRequestDialogMessage(UUID gameId, UserRequestMessage userRequestMessage) { + this.gameId = gameId; + this.userRequestMessage = userRequestMessage; + } + + @Override + public void handleMessage(ClientMessageHandler handler) { + handler.getClient().userRequestDialog(gameId, userRequestMessage); + } + +} diff --git a/Mage.Server/src/main/java/mage/server/Main.java b/Mage.Server/src/main/java/mage/server/Main.java index ebc059daa09..34a367504ca 100644 --- a/Mage.Server/src/main/java/mage/server/Main.java +++ b/Mage.Server/src/main/java/mage/server/Main.java @@ -31,10 +31,12 @@ package mage.server; import io.netty.channel.ChannelId; import java.io.File; import java.io.FilenameFilter; +import java.io.Serializable; import java.net.MalformedURLException; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.ExecutorService; @@ -45,6 +47,7 @@ import mage.cards.repository.CardRepository; import mage.cards.repository.CardScanner; import mage.cards.repository.ExpansionInfo; import mage.cards.repository.ExpansionRepository; +import mage.choices.Choice; import mage.constants.ManaType; import mage.constants.PlayerAction; import mage.constants.TableState; @@ -89,9 +92,12 @@ import mage.utils.ActionWithNullNegativeResult; import mage.utils.ActionWithTableViewResult; import mage.utils.CompressUtil; import mage.utils.MageVersion; +import mage.view.AbilityPickerView; +import mage.view.CardsView; import mage.view.ChatMessage; import mage.view.ChatMessage.MessageColor; import mage.view.DraftPickView; +import mage.view.GameEndView; import mage.view.GameView; import mage.view.MatchView; import mage.view.RoomUsersView; @@ -99,6 +105,7 @@ import mage.view.RoomView; import mage.view.TableView; import mage.view.TournamentView; import mage.view.UserDataView; +import mage.view.UserRequestMessage; import mage.view.UserView; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.log4j.Logger; @@ -762,81 +769,81 @@ public class Main implements MageServer { // return null; // } // -// @Override -// public void sendPlayerUUID(final UUID gameId, final String sessionId, final UUID data) throws MageException { + @Override + public void sendPlayerUUID(final UUID gameId, final String sessionId, final UUID data) { // execute("sendPlayerUUID", sessionId, new Action() { // @Override // public void execute() { -// User user = SessionManager.getInstance().getUser(sessionId); -// if (user != null) { -//// logger.warn("sendPlayerUUID gameId=" + gameId + " sessionId=" + sessionId + " username=" + user.getName()); -// user.sendPlayerUUID(gameId, data); -// } else { -// logger.warn("Your session expired: gameId=" + gameId + ", sessionId=" + sessionId); -// } + User user = SessionManager.getInstance().getUser(sessionId); + if (user != null) { +// logger.warn("sendPlayerUUID gameId=" + gameId + " sessionId=" + sessionId + " username=" + user.getName()); + user.sendPlayerUUID(gameId, data); + } else { + logger.warn("Your session expired: gameId=" + gameId + ", sessionId=" + sessionId); + } // } // }); -// } -// -// @Override -// public void sendPlayerString(final UUID gameId, final String sessionId, final String data) throws MageException { + } + + @Override + public void sendPlayerString(final UUID gameId, final String sessionId, final String data) { // execute("sendPlayerString", sessionId, new Action() { // @Override // public void execute() { -// User user = SessionManager.getInstance().getUser(sessionId); -// if (user != null) { -// user.sendPlayerString(gameId, data); -// } else { -// logger.warn("Your session expired: gameId=" + gameId + ", sessionId=" + sessionId); -// } + User user = SessionManager.getInstance().getUser(sessionId); + if (user != null) { + user.sendPlayerString(gameId, data); + } else { + logger.warn("Your session expired: gameId=" + gameId + ", sessionId=" + sessionId); + } // } // }); -// } -// -// @Override -// public void sendPlayerManaType(final UUID gameId, final UUID playerId, final String sessionId, final ManaType data) throws MageException { + } + + @Override + public void sendPlayerManaType(final UUID gameId, final UUID playerId, final String sessionId, final ManaType data) { // execute("sendPlayerManaType", sessionId, new Action() { // @Override // public void execute() { -// User user = SessionManager.getInstance().getUser(sessionId); -// if (user != null) { -// user.sendPlayerManaType(gameId, playerId, data); -// } else { -// logger.warn("Your session expired: gameId=" + gameId + ", sessionId=" + sessionId); -// } + User user = SessionManager.getInstance().getUser(sessionId); + if (user != null) { + user.sendPlayerManaType(gameId, playerId, data); + } else { + logger.warn("Your session expired: gameId=" + gameId + ", sessionId=" + sessionId); + } // } // }); -// } -// -// @Override -// public void sendPlayerBoolean(final UUID gameId, final String sessionId, final Boolean data) throws MageException { + } + + @Override + public void sendPlayerBoolean(final UUID gameId, final String sessionId, final Boolean data) { // execute("sendPlayerBoolean", sessionId, new Action() { // @Override // public void execute() { -// User user = SessionManager.getInstance().getUser(sessionId); -// if (user != null) { -// user.sendPlayerBoolean(gameId, data); -// } else { -// logger.warn("Your session expired: gameId=" + gameId + ", sessionId=" + sessionId); -// } + User user = SessionManager.getInstance().getUser(sessionId); + if (user != null) { + user.sendPlayerBoolean(gameId, data); + } else { + logger.warn("Your session expired: gameId=" + gameId + ", sessionId=" + sessionId); + } // } // }); -// } -// -// @Override -// public void sendPlayerInteger(final UUID gameId, final String sessionId, final Integer data) throws MageException { + } + + @Override + public void sendPlayerInteger(final UUID gameId, final String sessionId, final Integer data) { // execute("sendPlayerInteger", sessionId, new Action() { // @Override // public void execute() { -// User user = SessionManager.getInstance().getUser(sessionId); -// if (user != null) { -// user.sendPlayerInteger(gameId, data); -// } else { -// logger.warn("Your session expired: gameId=" + gameId + ", sessionId=" + sessionId); -// } + User user = SessionManager.getInstance().getUser(sessionId); + if (user != null) { + user.sendPlayerInteger(gameId, data); + } else { + logger.warn("Your session expired: gameId=" + gameId + ", sessionId=" + sessionId); + } // } // }); -// } + } // // @Override // public DraftPickView sendCardPick(final UUID draftId, final String sessionId, final UUID cardPick, final Set hiddenCards) throws MageException { @@ -1387,4 +1394,52 @@ public class Main implements MageServer { server.gameStarted(sessionId, gameId, playerId); } + public void initGame(String sessionId, UUID gameId, GameView gameView) { + server.initGame(sessionId, gameId, gameView); + } + + void gameAsk(String sessionId, UUID gameId, GameView gameView, String question) { + server.gameAsk(sessionId, gameId, gameView, question); + } + + void gameTarget(String sessionId, UUID gameId, GameView gameView, String question, CardsView cardView, Set targets, boolean required, Map options) { + server.gameTarget(sessionId, gameId, gameView, question, cardView, targets, required, options); + } + + void gameSelect(String sessionId, UUID gameId, GameView gameView, String message, Map options) { + server.gameSelect(sessionId, gameId, gameView, message, options); + } + + void gameChooseAbility(String sessionId, UUID gameId, AbilityPickerView abilities) { + server.gameChooseAbility(sessionId, gameId, abilities); + } + + void gameChoosePile(String sessionId, UUID gameId, String message, CardsView pile1, CardsView pile2) { + server.gameChoosePile(sessionId, gameId, message, pile1, pile2); + } + + void gameChooseChoice(String sessionId, UUID gameId, Choice choice) { + server.gameChooseChoice(sessionId, gameId, choice); + } + + void gamePlayMana(String sessionId, UUID gameId, GameView gameView, String message) { + server.gamePlayMana(sessionId, gameId, gameView, message); + } + + void gamePlayXMana(String sessionId, UUID gameId, GameView gameView, String message) { + server.gamePlayXMana(sessionId, gameId, gameView, message); + } + + void gameSelectAmount(String sessionId, UUID gameId, String message, int min, int max) { + server.gameSelectAmount(sessionId, gameId, message, min, max); + } + + void endGameInfo(String sessionId, UUID gameId, GameEndView view) { + server.endGameInfo(sessionId, gameId, view); + } + + void userRequestDialog(String sessionId, UUID gameId, UserRequestMessage userRequestMessage) { + server.userRequestDialog(sessionId, gameId, userRequestMessage); + } + } diff --git a/Mage.Server/src/main/java/mage/server/User.java b/Mage.Server/src/main/java/mage/server/User.java index 130dbb61fdc..d486f4b4367 100644 --- a/Mage.Server/src/main/java/mage/server/User.java +++ b/Mage.Server/src/main/java/mage/server/User.java @@ -27,6 +27,7 @@ */ package mage.server; +import java.io.Serializable; import mage.remote.DisconnectReason; import java.util.ArrayList; import java.util.Date; @@ -35,10 +36,12 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import mage.cards.decks.Deck; +import mage.choices.Choice; import mage.constants.ManaType; import mage.game.Table; import mage.game.tournament.TournamentPlayer; @@ -51,7 +54,12 @@ import mage.server.tournament.TournamentController; import mage.server.tournament.TournamentManager; import mage.server.tournament.TournamentSession; import mage.server.util.SystemUtil; +import mage.view.AbilityPickerView; +import mage.view.CardsView; +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; @@ -198,6 +206,54 @@ public class User { Main.getInstance().gameStarted(sessionId, gameId, playerId); } + public void initGame(UUID gameId, GameView gameView) { + Main.getInstance().initGame(sessionId, gameId, gameView); + } + + public void gameAsk(UUID gameId, GameView gameView, String question) { + Main.getInstance().gameAsk(sessionId, gameId, gameView, question); + } + + public void gameTarget(UUID gameId, GameView gameView, String question, CardsView cardView, Set targets, boolean required, Map options) { + Main.getInstance().gameTarget(sessionId, gameId, gameView, question, cardView, targets, required, options); + } + + public void gameSelect(UUID gameId, GameView gameView, String message, Map options) { + Main.getInstance().gameSelect(sessionId, gameId, gameView, message, options); + } + + public void gameChooseAbility(UUID gameId, AbilityPickerView abilities) { + Main.getInstance().gameChooseAbility(sessionId, gameId, abilities); + } + + public void gameChoosePile(UUID gameId, String message, CardsView pile1, CardsView pile2) { + Main.getInstance().gameChoosePile(sessionId, gameId, message, pile1, pile2); + } + + public void gameChooseChoice(UUID gameId, Choice choice) { + Main.getInstance().gameChooseChoice(sessionId, gameId, choice); + } + + public void gamePlayMana(UUID gameId, GameView gameView, String message) { + Main.getInstance().gamePlayMana(sessionId, gameId, gameView, message); + } + + public void gamePlayXMana(UUID gameId, GameView gameView, String message) { + Main.getInstance().gamePlayXMana(sessionId, gameId, gameView, message); + } + + public void gameSelectAmount(UUID gameId, String message, int min, int max) { + Main.getInstance().gameSelectAmount(sessionId, gameId, message, min, max); + } + + public void endGameInfo(UUID gameId, GameEndView view) { + Main.getInstance().endGameInfo(sessionId, gameId, view); + } + + public void userRequestDialog (UUID gameId, UserRequestMessage userRequestMessage) { + Main.getInstance().userRequestDialog(sessionId, gameId, userRequestMessage); + } + public void ccDraftStarted(final UUID draftId, final UUID playerId) { fireCallback(new ClientCallback("startDraft", draftId, new TableClientMessage(draftId, playerId))); } diff --git a/Mage.Server/src/main/java/mage/server/game/GameSessionPlayer.java b/Mage.Server/src/main/java/mage/server/game/GameSessionPlayer.java index 0b43412b383..34afb87c0d3 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameSessionPlayer.java +++ b/Mage.Server/src/main/java/mage/server/game/GameSessionPlayer.java @@ -84,7 +84,8 @@ public class GameSessionPlayer extends GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameAsk", game.getId(), new GameClientMessage(getGameView(), question))); +// user.fireCallback(new ClientCallback("gameAsk", game.getId(), new GameClientMessage(getGameView(), question))); + user.gameAsk(game.getId(), getGameView(), question); } } } @@ -93,7 +94,8 @@ public class GameSessionPlayer extends GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameTarget", game.getId(), new GameClientMessage(getGameView(), question, cardView, targets, required, options))); +// user.fireCallback(new ClientCallback("gameTarget", game.getId(), new GameClientMessage(getGameView(), question, cardView, targets, required, options))); + user.gameTarget(game.getId(), getGameView(), question, cardView, targets, required, options); } } } @@ -102,7 +104,8 @@ public class GameSessionPlayer extends GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameSelect", game.getId(), new GameClientMessage(getGameView(), message, options))); +// user.fireCallback(new ClientCallback("gameSelect", game.getId(), new GameClientMessage(getGameView(), message, options))); + user.gameSelect(game.getId(), getGameView(), message, options); } } } @@ -111,7 +114,8 @@ public class GameSessionPlayer extends GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameChooseAbility", game.getId(), abilities)); +// user.fireCallback(new ClientCallback("gameChooseAbility", game.getId(), abilities)); + user.gameChooseAbility(game.getId(), abilities); } } } @@ -120,7 +124,8 @@ public class GameSessionPlayer extends GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameChoosePile", game.getId(), new GameClientMessage(message, pile1, pile2))); +// user.fireCallback(new ClientCallback("gameChoosePile", game.getId(), new GameClientMessage(message, pile1, pile2))); + user.gameChoosePile(game.getId(), message, pile1, pile2); } } } @@ -129,7 +134,8 @@ public class GameSessionPlayer extends GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameChooseChoice", game.getId(), new GameClientMessage(choice))); +// user.fireCallback(new ClientCallback("gameChooseChoice", game.getId(), new GameClientMessage(choice))); + user.gameChooseChoice(game.getId(), choice); } } } @@ -138,7 +144,8 @@ public class GameSessionPlayer extends GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gamePlayMana", game.getId(), new GameClientMessage(getGameView(), message))); +// user.fireCallback(new ClientCallback("gamePlayMana", game.getId(), new GameClientMessage(getGameView(), message))); + user.gamePlayMana(game.getId(), getGameView(), message); } } } @@ -147,7 +154,8 @@ public class GameSessionPlayer extends GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gamePlayXMana", game.getId(), new GameClientMessage(getGameView(), message))); +// user.fireCallback(new ClientCallback("gamePlayXMana", game.getId(), new GameClientMessage(getGameView(), message))); + user.gamePlayXMana(game.getId(), getGameView(), message); } } } @@ -156,7 +164,8 @@ public class GameSessionPlayer extends GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameSelectAmount", game.getId(), new GameClientMessage(message, min, max))); +// user.fireCallback(new ClientCallback("gameSelectAmount", game.getId(), new GameClientMessage(message, min, max))); + user.gameSelectAmount(game.getId(), message, min, max); } } } @@ -165,7 +174,8 @@ public class GameSessionPlayer extends GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("endGameInfo", game.getId(), getGameEndView(playerId, table))); +// user.fireCallback(new ClientCallback("endGameInfo", game.getId(), getGameEndView(playerId, table))); + user.endGameInfo(game.getId(), getGameEndView(playerId, table)); } } } @@ -193,7 +203,8 @@ public class GameSessionPlayer extends GameSessionWatcher { userRequestMessage.setGameId(game.getId()); userRequestMessage.setButton1("Accept", PlayerAction.ADD_PERMISSION_TO_ROLLBACK_TURN); userRequestMessage.setButton2("Deny", PlayerAction.DENY_PERMISSON_TO_ROLLBACK_TURN); - requestedUser.fireCallback(new ClientCallback("userRequestDialog", game.getId(), userRequestMessage)); +// requestedUser.fireCallback(new ClientCallback("userRequestDialog", game.getId(), userRequestMessage)); + requestedUser.userRequestDialog(game.getId(), userRequestMessage); } } } @@ -212,7 +223,8 @@ public class GameSessionPlayer extends GameSessionWatcher { userRequestMessage.setGameId(game.getId()); userRequestMessage.setButton1("Accept", PlayerAction.ADD_PERMISSION_TO_SEE_HAND_CARDS); userRequestMessage.setButton2("Reject", null); - user.fireCallback(new ClientCallback("userRequestDialog", game.getId(), userRequestMessage)); +// user.fireCallback(new ClientCallback("userRequestDialog", game.getId(), userRequestMessage)); + user.userRequestDialog(game.getId(), userRequestMessage); } } } 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 e1db1e08d25..70b244de96f 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java +++ b/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java @@ -66,7 +66,8 @@ public class GameSessionWatcher { if (!killed) { User user = UserManager.getInstance().getUser(userId); if (user != null) { - user.fireCallback(new ClientCallback("gameInit", game.getId(), getGameView())); +// user.fireCallback(new ClientCallback("gameInit", game.getId(), getGameView())); + user.initGame(game.getId(), getGameView()); return true; } }