diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 1bd8cf5fd27..054ee7b5888 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -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); + } } diff --git a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java index 18926cb49bf..7f9619e8897 100644 --- a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java +++ b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java @@ -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); diff --git a/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java b/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java index 91ea6fd8509..ea6e0469974 100644 --- a/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java +++ b/Mage.Client/src/test/java/mage/client/game/MultiConnectTest.java @@ -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 { diff --git a/Mage.Common/src/mage/view/TableClientMessage.java b/Mage.Common/src/mage/view/TableClientMessage.java index 4caf4e6cc92..fa5ba5f3de3 100644 --- a/Mage.Common/src/mage/view/TableClientMessage.java +++ b/Mage.Common/src/mage/view/TableClientMessage.java @@ -30,7 +30,6 @@ package mage.view; import java.io.Serializable; import java.util.UUID; - import mage.cards.decks.Deck; /** diff --git a/Mage.Network/src/main/java/org/mage/network/Server.java b/Mage.Network/src/main/java/org/mage/network/Server.java index 05c95622ab4..e63b9c8b3a8 100644 --- a/Mage.Network/src/main/java/org/mage/network/Server.java +++ b/Mage.Network/src/main/java/org/mage/network/Server.java @@ -1,5 +1,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) { diff --git a/Mage.Network/src/main/java/org/mage/network/interfaces/MageClient.java b/Mage.Network/src/main/java/org/mage/network/interfaces/MageClient.java index 7044bf0ce42..cfa82f6432f 100644 --- a/Mage.Network/src/main/java/org/mage/network/interfaces/MageClient.java +++ b/Mage.Network/src/main/java/org/mage/network/interfaces/MageClient.java @@ -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); } diff --git a/Mage.Network/src/main/java/org/mage/network/messages/callback/ConstructCallback.java b/Mage.Network/src/main/java/org/mage/network/messages/callback/ConstructCallback.java new file mode 100644 index 00000000000..dd859303fc4 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/messages/callback/ConstructCallback.java @@ -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); + } + +} diff --git a/Mage.Network/src/main/java/org/mage/network/messages/callback/SideboardCallback.java b/Mage.Network/src/main/java/org/mage/network/messages/callback/SideboardCallback.java new file mode 100644 index 00000000000..61b236d1c50 --- /dev/null +++ b/Mage.Network/src/main/java/org/mage/network/messages/callback/SideboardCallback.java @@ -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); + } + +} diff --git a/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java b/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java index d93b4f099b5..75f478dd1e6 100644 --- a/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java +++ b/Mage.Server.Console/src/main/java/mage/server/console/ConsoleFrame.java @@ -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. + } } diff --git a/Mage.Server.Tests/src/test/java/org/mage/server/test/TestClient.java b/Mage.Server.Tests/src/test/java/org/mage/server/test/TestClient.java index 1a0df9d4471..c8fe6860f5b 100644 --- a/Mage.Server.Tests/src/test/java/org/mage/server/test/TestClient.java +++ b/Mage.Server.Tests/src/test/java/org/mage/server/test/TestClient.java @@ -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. + } } diff --git a/Mage.Server/src/main/java/mage/server/ServerMain.java b/Mage.Server/src/main/java/mage/server/ServerMain.java index 14d15733f19..e1bd8610e0e 100644 --- a/Mage.Server/src/main/java/mage/server/ServerMain.java +++ b/Mage.Server/src/main/java/mage/server/ServerMain.java @@ -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) { diff --git a/Mage.Server/src/main/java/mage/server/User.java b/Mage.Server/src/main/java/mage/server/User.java index e8438ebbdc6..fa39ce4196a 100644 --- a/Mage.Server/src/main/java/mage/server/User.java +++ b/Mage.Server/src/main/java/mage/server/User.java @@ -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) {