added a bunch of game methods

This commit is contained in:
betasteward 2015-06-17 19:54:33 -04:00
parent 58e85df735
commit 55fea43f20
32 changed files with 1105 additions and 200 deletions

View file

@ -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<UUID> targets, boolean required, Map<String, Serializable> 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<String, Serializable> 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);
}
}

View file

@ -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("<html>" + choice.getMessage());
this.choice = choice;
this.autoSelect = false;

View file

@ -85,14 +85,14 @@ public class FeedbackPanel extends javax.swing.JPanel {
client = MageFrame.getClient();
}
public void getFeedback(FeedbackMode mode, String message, boolean special, Map<String, Serializable> 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<String, Serializable> 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);

View file

@ -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<UUID> targets, boolean required, Map<String, Serializable> options, int messageId) {
public void pickTarget(String message, CardsView cardView, GameView gameView, Set<UUID> targets, boolean required, Map<String, Serializable> 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<String, Serializable> options) {
public void select(String message, GameView gameView, Map<String, Serializable> 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 + "<div style='font-size:11pt'>" + activePlayerText +" / " + gameView.getStep().toString() + priorityPlayerText + "</div>";
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());

View file

@ -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<String> messageData = (List<String>) 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

View file

@ -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<UUID> targets, boolean required, Map<String, Serializable> 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<String, Serializable> 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 {

View file

@ -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.
}

View file

@ -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<UUID> targets, boolean required, Map<String, Serializable> 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<String, Serializable> 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());
}
}

View file

@ -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<ClientMess
stringListQueue.offer(list);
}
public void sendPlayerUUID(UUID gameId, UUID id) {
ctx.writeAndFlush(new SendPlayerUUIDRequest(gameId, id)).addListener(WriteListener.getInstance());
}
public void sendPlayerBoolean(UUID gameId, boolean b) {
ctx.writeAndFlush(new SendPlayerBooleanRequest(gameId, b)).addListener(WriteListener.getInstance());
}
public void sendPlayerInteger(UUID gameId, int i) {
ctx.writeAndFlush(new SendPlayerIntegerRequest(gameId, i)).addListener(WriteListener.getInstance());
}
public void sendPlayerString(UUID gameId, String string) {
ctx.writeAndFlush(new SendPlayerStringRequest(gameId, string)).addListener(WriteListener.getInstance());
}
public void sendPlayerManaType(UUID gameId, UUID playerId, ManaType manaType) {
ctx.writeAndFlush(new SendPlayerManaTypeRequest(gameId, playerId, manaType)).addListener(WriteListener.getInstance());
}
}

View file

@ -1,8 +1,18 @@
package org.mage.network.interfaces;
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.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.model.MessageType;
/**
@ -24,5 +34,21 @@ public interface MageClient {
void joinedTable(UUID roomId, UUID tableId, UUID chatId, boolean owner, boolean tournament);
void gameStarted(UUID gameId, UUID playerId);
void initGame(UUID gameId, GameView gameView);
void gameAsk(UUID gameId, GameView gameView, String question);
void gameTarget(UUID gameId, GameView gameView, String question, CardsView cardView, Set<UUID> targets, boolean required, Map<String, Serializable> 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<String, Serializable> options);
public void gameEndInfo(UUID gameId, GameEndView view);
public void userRequestDialog(UUID gameId, UserRequestMessage userRequestMessage);
}

View file

@ -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);
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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<String, Serializable> options;
public GameSelectMessage(UUID gameId, GameView gameView, String message, Map<String, Serializable> 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);
}
}

View file

@ -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<UUID> targets;
private final boolean required;
private final Map<String, Serializable> options;
public GameTargetMessage(UUID gameId, GameView gameView, String question, CardsView cardView, Set<UUID> targets, boolean required, Map<String, Serializable> 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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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<UUID> 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<UUID> targets, boolean required, Map<String, Serializable> options) {
server.gameTarget(sessionId, gameId, gameView, question, cardView, targets, required, options);
}
void gameSelect(String sessionId, UUID gameId, GameView gameView, String message, Map<String, Serializable> 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);
}
}

View file

@ -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<UUID> targets, boolean required, Map<String, Serializable> options) {
Main.getInstance().gameTarget(sessionId, gameId, gameView, question, cardView, targets, required, options);
}
public void gameSelect(UUID gameId, GameView gameView, String message, Map<String, Serializable> 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)));
}

View file

@ -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);
}
}
}

View file

@ -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;
}
}