This commit is contained in:
BetaSteward 2010-10-06 01:59:06 +00:00
parent 5eae8136e4
commit e9249bfcf6
7 changed files with 121 additions and 89 deletions

View file

@ -30,7 +30,9 @@ package mage.client.remote;
import java.rmi.RemoteException;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import mage.client.MageFrame;
import mage.interfaces.callback.CallbackClient;
import mage.interfaces.callback.ClientCallback;
@ -66,85 +68,90 @@ public class Client implements CallbackClient {
@Override
public synchronized void processCallback(ClientCallback callback) {
logger.info(callback.getMessageId() + " - " + callback.getMethod());
if (callback.getMethod().equals("startGame")) {
UUID[] data = (UUID[]) callback.getData();
gameStarted(data[0], data[1]);
}
else if (callback.getMethod().equals("replayGame")) {
replayGame();
}
else if (callback.getMethod().equals("watchGame")) {
watchGame((UUID) callback.getData());
}
else if (callback.getMethod().equals("chatMessage")) {
ChatMessage message = (ChatMessage) callback.getData();
session.getChats().get(message.getChatId()).receiveMessage(message.getMessage(), message.getColor());
}
else if (callback.getMethod().equals("replayInit")) {
session.getGame().init((GameView) callback.getData());
}
else if (callback.getMethod().equals("replayDone")) {
session.getGame().modalMessage((String) callback.getData());
session.getGame().hideGame();
}
else if (callback.getMethod().equals("replayUpdate")) {
session.getGame().updateGame((GameView) callback.getData());
}
else if (callback.getMethod().equals("gameInit")) {
session.getGame().init((GameView) callback.getData());
}
else if (callback.getMethod().equals("gameOver")) {
session.getGame().modalMessage((String) callback.getData());
session.getGame().hideGame();
}
else if (callback.getMethod().equals("gameAsk")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().ask(message.getMessage(), message.getGameView());
}
else if (callback.getMethod().equals("gameTarget")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().pickTarget(message.getMessage(), message.getCardsView(), message.getGameView(), message.isFlag());
}
else if (callback.getMethod().equals("gameSelect")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().select(message.getMessage(), message.getGameView());
}
else if (callback.getMethod().equals("gameChooseAbility")) {
session.getGame().pickAbility((AbilityPickerView) callback.getData());
}
else if (callback.getMethod().equals("gameChoose")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().getChoice(message.getMessage(), message.getStrings());
}
else if (callback.getMethod().equals("gamePlayMana")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().playMana(message.getMessage(), message.getGameView());
}
else if (callback.getMethod().equals("gamePlayXMana")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().playXMana(message.getMessage(), message.getGameView());
}
else if (callback.getMethod().equals("gameSelectAmount")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().getAmount(message.getMin(), message.getMax(), message.getMessage());
}
else if (callback.getMethod().equals("gameReveal")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().revealCards(message.getMessage(), message.getCardsView());
}
else if (callback.getMethod().equals("gameUpdate")) {
session.getGame().updateGame((GameView) callback.getData());
}
else if (callback.getMethod().equals("gameInform")) {
if (callback.getMessageId() > messageId) {
try {
if (callback.getMethod().equals("startGame")) {
UUID[] data = (UUID[]) callback.getData();
gameStarted(data[0], data[1]);
}
else if (callback.getMethod().equals("replayGame")) {
replayGame();
}
else if (callback.getMethod().equals("watchGame")) {
watchGame((UUID) callback.getData());
}
else if (callback.getMethod().equals("chatMessage")) {
ChatMessage message = (ChatMessage) callback.getData();
session.getChats().get(message.getChatId()).receiveMessage(message.getMessage(), message.getColor());
}
else if (callback.getMethod().equals("replayInit")) {
session.getGame().init((GameView) callback.getData());
}
else if (callback.getMethod().equals("replayDone")) {
session.getGame().modalMessage((String) callback.getData());
session.getGame().hideGame();
}
else if (callback.getMethod().equals("replayUpdate")) {
session.getGame().updateGame((GameView) callback.getData());
}
else if (callback.getMethod().equals("gameInit")) {
session.getGame().init((GameView) callback.getData());
}
else if (callback.getMethod().equals("gameOver")) {
session.getGame().modalMessage((String) callback.getData());
session.getGame().hideGame();
}
else if (callback.getMethod().equals("gameAsk")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().inform(message.getMessage(), message.getGameView());
session.getGame().ask(message.getMessage(), message.getGameView());
}
else {
logger.warning("message out of sequence - ignoring");
else if (callback.getMethod().equals("gameTarget")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().pickTarget(message.getMessage(), message.getCardsView(), message.getGameView(), message.isFlag());
}
else if (callback.getMethod().equals("gameSelect")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().select(message.getMessage(), message.getGameView());
}
else if (callback.getMethod().equals("gameChooseAbility")) {
session.getGame().pickAbility((AbilityPickerView) callback.getData());
}
else if (callback.getMethod().equals("gameChoose")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().getChoice(message.getMessage(), message.getStrings());
}
else if (callback.getMethod().equals("gamePlayMana")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().playMana(message.getMessage(), message.getGameView());
}
else if (callback.getMethod().equals("gamePlayXMana")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().playXMana(message.getMessage(), message.getGameView());
}
else if (callback.getMethod().equals("gameSelectAmount")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().getAmount(message.getMin(), message.getMax(), message.getMessage());
}
else if (callback.getMethod().equals("gameReveal")) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().revealCards(message.getMessage(), message.getCardsView());
}
else if (callback.getMethod().equals("gameUpdate")) {
session.getGame().updateGame((GameView) callback.getData());
}
else if (callback.getMethod().equals("gameInform")) {
if (callback.getMessageId() > messageId) {
GameClientMessage message = (GameClientMessage) callback.getData();
session.getGame().inform(message.getMessage(), message.getGameView());
}
else {
logger.warning("message out of sequence - ignoring");
}
}
messageId = callback.getMessageId();
}
catch (Exception ex) {
handleException(ex);
}
messageId = callback.getMessageId();
}
public UUID getId() throws RemoteException {
@ -152,18 +159,40 @@ public class Client implements CallbackClient {
}
protected void gameStarted(UUID gameId, UUID playerId) {
frame.showGame(gameId, playerId);
logger.info("Game " + gameId + " started for player " + playerId);
try {
frame.showGame(gameId, playerId);
logger.info("Game " + gameId + " started for player " + playerId);
}
catch (Exception ex) {
handleException(ex);
}
}
protected void watchGame(UUID gameId) {
frame.watchGame(gameId);
logger.info("Watching game " + gameId);
try {
frame.watchGame(gameId);
logger.info("Watching game " + gameId);
}
catch (Exception ex) {
handleException(ex);
}
}
protected void replayGame() {
frame.replayGame();
logger.info("Replaying game");
try {
frame.replayGame();
logger.info("Replaying game");
}
catch (Exception ex) {
handleException(ex);
}
}
private void handleException(Exception ex) {
logger.log(Level.SEVERE, "Client error", ex);
JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Unrecoverable client error. Disconnecting", "Error", JOptionPane.ERROR_MESSAGE);
session.disconnect();
frame.disableButtons();
}
}