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 {