added Construct and Sideboard callbacks

This commit is contained in:
betasteward 2015-07-01 23:26:07 -04:00
parent a316b01b15
commit 27da366eea
12 changed files with 173 additions and 56 deletions

View file

@ -111,6 +111,7 @@ import mage.client.game.GamePanel;
import mage.client.plugins.impl.Plugins;
import mage.client.table.TablesPane;
import mage.client.tournament.TournamentPane;
import mage.client.util.DeckUtil;
import mage.client.util.EDTExceptionHandler;
import mage.client.util.GameManager;
import mage.client.util.SettingsManager;
@ -126,6 +127,7 @@ import mage.utils.MageVersion;
import mage.view.AbilityPickerView;
import mage.view.CardsView;
import mage.view.ChatMessage;
import mage.view.DeckView;
import mage.view.GameClientMessage;
import mage.view.GameEndView;
import mage.view.GameView;
@ -1647,6 +1649,31 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
public void gameError(UUID gameId, String message) {
this.showErrorDialog("Game Error", message);
}
@Override
public void sideboard(UUID tableId, DeckView deckView, int time, boolean limited) {
Deck deck = DeckUtil.construct(deckView);
if (limited) {
construct(deck, tableId, time);
} else {
sideboard(deck, tableId, time);
}
}
@Override
public void construct(UUID tableId, DeckView deckView, int time) {
Deck deck = DeckUtil.construct(deckView);
construct(deck, tableId, time);
}
protected void sideboard(Deck deck, UUID tableId, int time) {
showDeckEditor(DeckEditorMode.SIDEBOARDING, deck, tableId, time);
}
protected void construct(Deck deck, UUID tableId, int time) {
showDeckEditor(DeckEditorMode.LIMITED_BUILDING, deck, tableId, time);
}
}

View file

@ -31,19 +31,15 @@ import java.util.List;
import java.util.UUID;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import mage.cards.decks.Deck;
import mage.client.MageFrame;
import mage.client.constants.Constants.DeckEditorMode;
import mage.client.draft.DraftPanel;
import mage.client.game.GamePanel;
import mage.client.util.DeckUtil;
import mage.client.util.audio.AudioManager;
import mage.client.util.object.SaveObjectUtil;
import mage.interfaces.callback.CallbackClient;
import mage.interfaces.callback.ClientCallback;
import mage.utils.CompressUtil;
import mage.view.ChatMessage;
import mage.view.DeckView;
import mage.view.DraftClientMessage;
import mage.view.DraftView;
import mage.view.GameView;
@ -308,25 +304,25 @@ public class CallbackClientImpl implements CallbackClient {
// JOptionPane.INFORMATION_MESSAGE);
// } break;
// }
case "sideboard":
{
TableClientMessage message = (TableClientMessage) callback.getData();
DeckView deckView = message.getDeck();
Deck deck = DeckUtil.construct(deckView);
if (message.getFlag()) {
construct(deck, message.getTableId(), message.getTime());
} else {
sideboard(deck, message.getTableId(), message.getTime());
} break;
}
case "construct":
{
TableClientMessage message = (TableClientMessage) callback.getData();
DeckView deckView = message.getDeck();
Deck deck = DeckUtil.construct(deckView);
construct(deck, message.getTableId(), message.getTime());
break;
}
// case "sideboard":
// {
// TableClientMessage message = (TableClientMessage) callback.getData();
// DeckView deckView = message.getDeck();
// Deck deck = DeckUtil.construct(deckView);
// if (message.getFlag()) {
// construct(deck, message.getTableId(), message.getTime());
// } else {
// sideboard(deck, message.getTableId(), message.getTime());
// } break;
// }
// case "construct":
// {
// TableClientMessage message = (TableClientMessage) callback.getData();
// DeckView deckView = message.getDeck();
// Deck deck = DeckUtil.construct(deckView);
// construct(deck, message.getTableId(), message.getTime());
// break;
// }
case "draftOver":
MageFrame.removeDraft(callback.getObjectId());
break;
@ -484,13 +480,13 @@ public class CallbackClientImpl implements CallbackClient {
}
}
protected void sideboard(Deck deck, UUID tableId, int time) {
frame.showDeckEditor(DeckEditorMode.SIDEBOARDING, deck, tableId, time);
}
protected void construct(Deck deck, UUID tableId, int time) {
frame.showDeckEditor(DeckEditorMode.LIMITED_BUILDING, deck, tableId, time);
}
// protected void sideboard(Deck deck, UUID tableId, int time) {
// frame.showDeckEditor(DeckEditorMode.SIDEBOARDING, deck, tableId, time);
// }
//
// protected void construct(Deck deck, UUID tableId, int time) {
// frame.showDeckEditor(DeckEditorMode.LIMITED_BUILDING, deck, tableId, time);
// }
private void handleException(Exception ex) {
logger.fatal("Client error\n", ex);

View file

@ -4,27 +4,23 @@ 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;
//import mage.interfaces.callback.ClientCallback;
import mage.remote.Connection;
//import mage.remote.Session;
//import mage.remote.SessionImpl;
import mage.utils.MageVersion;
import org.apache.log4j.Logger;
import org.junit.Ignore;
import javax.swing.*;
import java.util.concurrent.CountDownLatch;
import javax.swing.SwingUtilities;
import mage.choices.Choice;
import mage.client.components.MageUI;
import mage.interfaces.ServerState;
import mage.remote.Connection;
import mage.utils.MageVersion;
import mage.view.AbilityPickerView;
import mage.view.CardsView;
import mage.view.ChatMessage;
import mage.view.DeckView;
import mage.view.GameClientMessage;
import mage.view.GameEndView;
import mage.view.GameView;
import mage.view.UserRequestMessage;
import org.apache.log4j.Logger;
import org.junit.Ignore;
import org.mage.network.Client;
import org.mage.network.interfaces.MageClient;
import org.mage.network.messages.MessageType;
@ -228,6 +224,16 @@ public class MultiConnectTest {
public void gameError(UUID gameId, String message) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void sideboard(UUID tableId, DeckView deck, int time, boolean limited) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void construct(UUID tableId, DeckView deck, int time) {
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

@ -30,7 +30,6 @@ package mage.view;
import java.io.Serializable;
import java.util.UUID;
import mage.cards.decks.Deck;
/**

View file

@ -1,5 +1,6 @@
package org.mage.network;
import org.mage.network.messages.callback.ConstructCallback;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
@ -28,6 +29,7 @@ import mage.choices.Choice;
import mage.view.AbilityPickerView;
import mage.view.CardsView;
import mage.view.ChatMessage;
import mage.view.DeckView;
import mage.view.DraftClientMessage;
import mage.view.DraftView;
import mage.view.GameClientMessage;
@ -66,6 +68,7 @@ import org.mage.network.messages.callback.GameTargetCallback;
import org.mage.network.messages.callback.GameUpdateCallback;
import org.mage.network.messages.callback.InformClientCallback;
import org.mage.network.messages.callback.JoinedTableCallback;
import org.mage.network.messages.callback.SideboardCallback;
import org.mage.network.messages.callback.UserRequestDialogCallback;
/**
@ -326,12 +329,16 @@ public class Server {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public void sideboard(String sessionId, UUID tableId, TableClientMessage tableClientMessage) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
public void sideboard(String sessionId, UUID tableId, DeckView deck, int time, boolean limited) {
Channel ch = findChannel(sessionId);
if (ch != null)
ch.writeAndFlush(new SideboardCallback(tableId, deck, time, limited)).addListener(WriteListener.getInstance());
}
public void construct(String sessionId, UUID tableId, TableClientMessage tableClientMessage) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
public void construct(String sessionId, UUID tableId, DeckView deck, int time) {
Channel ch = findChannel(sessionId);
if (ch != null)
ch.writeAndFlush(new ConstructCallback(tableId, deck, time)).addListener(WriteListener.getInstance());
}
public void startTournament(String sessionId, UUID tournamentId, TableClientMessage tableClientMessage) {

View file

@ -9,6 +9,7 @@ import mage.interfaces.ServerState;
import mage.view.AbilityPickerView;
import mage.view.CardsView;
import mage.view.ChatMessage;
import mage.view.DeckView;
import mage.view.GameClientMessage;
import mage.view.GameEndView;
import mage.view.GameView;
@ -55,5 +56,8 @@ public interface MageClient {
public void gameEndInfo(UUID gameId, GameEndView view);
public void userRequestDialog(UUID gameId, UserRequestMessage userRequestMessage);
public void sideboard(UUID tableId, DeckView deck, int time, boolean limited);
public void construct(UUID tableId, DeckView deck, int time);
}

View file

@ -0,0 +1,28 @@
package org.mage.network.messages.callback;
import java.util.UUID;
import mage.view.DeckView;
import org.mage.network.handlers.client.ClientMessageHandler;
import org.mage.network.messages.ClientMessage;
/**
*
* @author BetaSteward
*/
public class ConstructCallback extends ClientMessage {
private final UUID tableId;
private final DeckView deck;
private final int time;
public ConstructCallback(UUID tableId, DeckView deck, int time) {
this.tableId = tableId;
this.deck = deck;
this.time = time;
}
@Override
public void handleMessage(ClientMessageHandler handler) {
handler.getClient().construct(tableId, deck, time);
}
}

View file

@ -0,0 +1,30 @@
package org.mage.network.messages.callback;
import java.util.UUID;
import mage.view.DeckView;
import org.mage.network.handlers.client.ClientMessageHandler;
import org.mage.network.messages.ClientMessage;
/**
*
* @author BetaSteward
*/
public class SideboardCallback extends ClientMessage {
private final UUID tableId;
private final DeckView deck;
private final int time;
private final boolean limited;
public SideboardCallback(UUID tableId, DeckView deck, int time, boolean limited) {
this.tableId = tableId;
this.deck = deck;
this.time = time;
this.limited = limited;
}
@Override
public void handleMessage(ClientMessageHandler handler) {
handler.getClient().sideboard(tableId, deck, time, limited);
}
}

View file

@ -49,15 +49,12 @@ import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import mage.choices.Choice;
import mage.interfaces.ServerState;
//import mage.interfaces.MageClient;
//import mage.interfaces.callback.ClientCallback;
import mage.remote.Connection;
//import mage.remote.Session;
//import mage.remote.SessionImpl;
import mage.utils.MageVersion;
import mage.view.AbilityPickerView;
import mage.view.CardsView;
import mage.view.ChatMessage;
import mage.view.DeckView;
import mage.view.GameClientMessage;
import mage.view.GameEndView;
import mage.view.GameView;
@ -460,4 +457,14 @@ public class ConsoleFrame extends javax.swing.JFrame implements MageClient {
public void gameError(UUID gameId, String message) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void sideboard(UUID tableId, DeckView deck, int time, boolean limited) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void construct(UUID tableId, DeckView deck, int time) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}

View file

@ -15,6 +15,7 @@ import mage.utils.MageVersion;
import mage.view.AbilityPickerView;
import mage.view.CardsView;
import mage.view.ChatMessage;
import mage.view.DeckView;
import mage.view.GameClientMessage;
import mage.view.GameEndView;
import mage.view.GameView;
@ -207,4 +208,14 @@ public class TestClient implements MageClient {
public void gameError(UUID gameId, String message) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void sideboard(UUID tableId, DeckView deck, int time, boolean limited) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void construct(UUID tableId, DeckView deck, int time) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}

View file

@ -73,6 +73,7 @@ import mage.view.AbilityPickerView;
import mage.view.CardsView;
import mage.view.ChatMessage;
import mage.view.ChatMessage.MessageColor;
import mage.view.DeckView;
import mage.view.DraftClientMessage;
import mage.view.DraftView;
import mage.view.GameClientMessage;
@ -1290,12 +1291,12 @@ public class ServerMain implements MageServer {
server.draftPick(sessionId, draftId, draftClientMessage);
}
public void sideboard(String sessionId, UUID tableId, TableClientMessage tableClientMessage) {
server.sideboard(sessionId, tableId, tableClientMessage);
public void sideboard(String sessionId, UUID tableId, DeckView deck, int time, boolean limited) {
server.sideboard(sessionId, tableId, deck, time, limited);
}
public void construct(String sessionId, UUID tableId, TableClientMessage tableClientMessage) {
server.construct(sessionId, tableId, tableClientMessage);
public void construct(String sessionId, UUID tableId, DeckView deck, int time) {
server.construct(sessionId, tableId, deck, time);
}
public void startTournament(String sessionId, UUID tournamentId, TableClientMessage tableClientMessage) {

View file

@ -56,6 +56,7 @@ import mage.server.util.SystemUtil;
import mage.view.AbilityPickerView;
import mage.view.CardsView;
import mage.view.ChatMessage;
import mage.view.DeckView;
import mage.view.DraftClientMessage;
import mage.view.DraftView;
import mage.view.GameClientMessage;
@ -279,12 +280,12 @@ public class User {
}
public void sideboard(final Deck deck, final UUID tableId, final int time, boolean limited) {
ServerMain.getInstance().sideboard(sessionId, tableId, new TableClientMessage(deck, tableId, time, limited));
ServerMain.getInstance().sideboard(sessionId, tableId, new DeckView(deck), time, limited);
sideboarding.put(tableId, deck);
}
public void construct(final Deck deck, final UUID tableId, final int time) {
ServerMain.getInstance().construct(sessionId, tableId, new TableClientMessage(deck, tableId, time));
ServerMain.getInstance().construct(sessionId, tableId, new DeckView(deck), time);
}
public void tournamentStarted(final UUID tournamentId, final UUID playerId) {