From 98d8a428a7e3b5962e028a064a782f02de2155dd Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Fri, 7 Jan 2011 15:41:09 -0500 Subject: [PATCH] some more drafting stuff --- .../java/mage/client/draft/DraftPane.form | 41 +++++++ .../java/mage/client/draft/DraftPane.java | 84 ++++++++++++++ .../java/mage/client/draft/DraftPanel.form | 62 +++++++++++ .../java/mage/client/draft/DraftPanel.java | 104 ++++++++++++++++++ .../main/java/mage/client/remote/Client.java | 16 +++ .../main/java/mage/client/remote/Session.java | 25 +++++ .../java/mage/client/table/TablesPanel.form | 15 ++- .../java/mage/client/table/TablesPanel.java | 43 +++++++- Mage.Common/src/mage/interfaces/Server.java | 2 + .../src/main/java/mage/server/ServerImpl.java | 14 +++ Mage/src/mage/game/draft/DraftImpl.java | 1 + 11 files changed, 403 insertions(+), 4 deletions(-) create mode 100644 Mage.Client/src/main/java/mage/client/draft/DraftPane.form create mode 100644 Mage.Client/src/main/java/mage/client/draft/DraftPane.java create mode 100644 Mage.Client/src/main/java/mage/client/draft/DraftPanel.form create mode 100644 Mage.Client/src/main/java/mage/client/draft/DraftPanel.java diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPane.form b/Mage.Client/src/main/java/mage/client/draft/DraftPane.form new file mode 100644 index 00000000000..819e36660e8 --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/draft/DraftPane.form @@ -0,0 +1,41 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPane.java b/Mage.Client/src/main/java/mage/client/draft/DraftPane.java new file mode 100644 index 00000000000..6e99b466728 --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/draft/DraftPane.java @@ -0,0 +1,84 @@ +/* + * Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +/* + * DraftPane.java + * + * Created on Jan 7, 2011, 2:11:44 PM + */ + +package mage.client.draft; + +import mage.client.MagePane; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class DraftPane extends MagePane { + + /** Creates new form DraftPane */ + public DraftPane() { + initComponents(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jScrollPane1 = new javax.swing.JScrollPane(); + draftPanel1 = new mage.client.draft.DraftPanel(); + + jScrollPane1.setViewportView(draftPanel1); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 394, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + + // Variables declaration - do not modify//GEN-BEGIN:variables + mage.client.draft.DraftPanel draftPanel1; + javax.swing.JScrollPane jScrollPane1; + // End of variables declaration//GEN-END:variables + +} diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.form b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.form new file mode 100644 index 00000000000..2df044075c3 --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.form @@ -0,0 +1,62 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java new file mode 100644 index 00000000000..1d5e92ebce8 --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java @@ -0,0 +1,104 @@ +/* + * Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ + +/* + * DraftPanel.java + * + * Created on Jan 7, 2011, 2:15:48 PM + */ + +package mage.client.draft; + +import java.util.UUID; +import mage.client.cards.BigCard; +import mage.view.CardsView; + +/** + * + * @author BetaSteward_at_googlemail.com + */ +public class DraftPanel extends javax.swing.JPanel { + + /** Creates new form DraftPanel */ + public DraftPanel() { + initComponents(); + + } + + public void loadBooster(CardsView cards, UUID draftId) { + + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + bigCard = new mage.client.cards.BigCard(); + + jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(bigCard, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addContainerGap(85, Short.MAX_VALUE) + .addComponent(bigCard, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(465, Short.MAX_VALUE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + }// //GEN-END:initComponents + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private mage.client.cards.BigCard bigCard; + private javax.swing.JPanel jPanel1; + // End of variables declaration//GEN-END:variables + +} diff --git a/Mage.Client/src/main/java/mage/client/remote/Client.java b/Mage.Client/src/main/java/mage/client/remote/Client.java index c124397b663..3633b4de0c8 100644 --- a/Mage.Client/src/main/java/mage/client/remote/Client.java +++ b/Mage.Client/src/main/java/mage/client/remote/Client.java @@ -44,6 +44,7 @@ import mage.interfaces.callback.ClientCallback; import mage.util.Logging; import mage.view.AbilityPickerView; import mage.view.ChatMessage; +import mage.view.DraftClientMessage; import mage.view.GameClientMessage; import mage.view.GameView; import mage.view.TableClientMessage; @@ -164,6 +165,21 @@ public class Client implements CallbackClient { else if (callback.getMethod().equals("sideboard")) { TableClientMessage message = (TableClientMessage) callback.getData(); sideboard(message.getDeck(), message.getTableId()); + } + else if (callback.getMethod().equals("draftPick")) { + DraftClientMessage message = (DraftClientMessage) callback.getData(); + + } + else if (callback.getMethod().equals("draftInform")) { + if (callback.getMessageId() > messageId) { + DraftClientMessage message = (DraftClientMessage) callback.getData(); + } + else { + logger.warning("message out of sequence - ignoring"); + } + } + else if (callback.getMethod().equals("draftInit")) { + } messageId = callback.getMessageId(); } diff --git a/Mage.Client/src/main/java/mage/client/remote/Session.java b/Mage.Client/src/main/java/mage/client/remote/Session.java index a3d2fce0e4d..3c1e3a207f2 100644 --- a/Mage.Client/src/main/java/mage/client/remote/Session.java +++ b/Mage.Client/src/main/java/mage/client/remote/Session.java @@ -47,6 +47,7 @@ import mage.client.components.MageUI; import mage.client.game.GamePanel; import mage.client.util.Config; import mage.game.GameException; +import mage.game.draft.DraftOptions; import mage.interfaces.MageException; import mage.game.match.MatchOptions; import mage.interfaces.Server; @@ -261,6 +262,19 @@ public class Session { return false; } + public boolean joinDraftTable(UUID roomId, UUID tableId, String playerName) { + try { + return server.joinDraftTable(sessionId, roomId, tableId, playerName); + } catch (RemoteException ex) { + handleRemoteException(ex); + } catch (MageException ex) { + handleMageException(ex); + } catch (GameException ex) { + handleGameException(ex); + } + return false; + } + public Collection getTables(UUID roomId) throws MageRemoteException { try { return server.getTables(roomId); @@ -418,6 +432,17 @@ public class Session { return null; } + public TableView createDraftTable(UUID roomId, DraftOptions draftOptions) { + try { + return server.createDraftTable(sessionId, roomId, draftOptions); + } catch (RemoteException ex) { + handleRemoteException(ex); + } catch (MageException ex) { + handleMageException(ex); + } + return null; + } + public boolean isTableOwner(UUID roomId, UUID tableId) { try { return server.isTableOwner(sessionId, roomId, tableId); diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.form b/Mage.Client/src/main/java/mage/client/table/TablesPanel.form index a8da09d5bda..d3ab6971f63 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.form +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.form @@ -1,4 +1,4 @@ - +
@@ -39,9 +39,11 @@ + + - + @@ -52,6 +54,7 @@ + @@ -75,6 +78,14 @@ + + + + + + + + diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java index 929c0facab9..79315c6c7f2 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -62,6 +62,7 @@ import mage.client.dialog.TableWaitingDialog; import mage.client.remote.MageRemoteException; import mage.client.remote.Session; import mage.client.util.ButtonColumn; +import mage.game.draft.DraftOptions; import mage.game.match.MatchOptions; import mage.sets.Sets; import mage.util.Logging; @@ -203,6 +204,7 @@ public class TablesPanel extends javax.swing.JPanel implements Observer { jPanel1 = new javax.swing.JPanel(); btnNewTable = new javax.swing.JButton(); btnQuickStart = new javax.swing.JButton(); + btnNewDraft = new javax.swing.JButton(); jSplitPane1 = new javax.swing.JSplitPane(); chatPanel = new mage.client.chat.ChatPanel(); jScrollPane1 = new javax.swing.JScrollPane(); @@ -222,6 +224,13 @@ public class TablesPanel extends javax.swing.JPanel implements Observer { } }); + btnNewDraft.setText("New Draft"); + btnNewDraft.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnNewDraftActionPerformed(evt); + } + }); + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( @@ -229,9 +238,11 @@ public class TablesPanel extends javax.swing.JPanel implements Observer { .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(btnNewTable) + .addGap(6, 6, 6) + .addComponent(btnNewDraft) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnQuickStart) - .addContainerGap(537, Short.MAX_VALUE)) + .addContainerGap(450, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -239,7 +250,8 @@ public class TablesPanel extends javax.swing.JPanel implements Observer { .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnNewTable) - .addComponent(btnQuickStart)) + .addComponent(btnQuickStart) + .addComponent(btnNewDraft)) .addContainerGap(16, Short.MAX_VALUE)) ); @@ -307,6 +319,32 @@ public class TablesPanel extends javax.swing.JPanel implements Observer { } }//GEN-LAST:event_btnQuickStartActionPerformed + private void btnNewDraftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNewDraftActionPerformed + DraftOptions options = new DraftOptions("testDraft"); + options.getPlayerTypes().add("Human"); + options.getPlayerTypes().add("Computer - default"); + options.getPlayerTypes().add("Computer - default"); + options.getPlayerTypes().add("Computer - default"); + options.getPlayerTypes().add("Computer - default"); + options.getPlayerTypes().add("Computer - default"); + options.getPlayerTypes().add("Computer - default"); + options.getPlayerTypes().add("Computer - default"); + options.getSets().add(Sets.findSet("M11")); + options.getSets().add(Sets.findSet("M11")); + options.getSets().add(Sets.findSet("M11")); + TableView table = session.createDraftTable(roomId, options); + session.joinDraftTable(roomId, table.getTableId(), "Human"); + session.joinDraftTable(roomId, table.getTableId(), "Computer 1"); + session.joinDraftTable(roomId, table.getTableId(), "Computer 2"); + session.joinDraftTable(roomId, table.getTableId(), "Computer 3"); + session.joinDraftTable(roomId, table.getTableId(), "Computer 4"); + session.joinDraftTable(roomId, table.getTableId(), "Computer 5"); + session.joinDraftTable(roomId, table.getTableId(), "Computer 6"); + session.joinDraftTable(roomId, table.getTableId(), "Computer 7"); + hideTables(); + session.startDraft(roomId, table.getTableId()); + }//GEN-LAST:event_btnNewDraftActionPerformed + private void handleError(Exception ex) { logger.log(Level.SEVERE, "Error loading deck", ex); JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Error loading deck.", "Error", JOptionPane.ERROR_MESSAGE); @@ -314,6 +352,7 @@ public class TablesPanel extends javax.swing.JPanel implements Observer { // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnNewDraft; private javax.swing.JButton btnNewTable; private javax.swing.JButton btnQuickStart; private mage.client.chat.ChatPanel chatPanel; diff --git a/Mage.Common/src/mage/interfaces/Server.java b/Mage.Common/src/mage/interfaces/Server.java index 20ed0b0a377..6fc8db66124 100644 --- a/Mage.Common/src/mage/interfaces/Server.java +++ b/Mage.Common/src/mage/interfaces/Server.java @@ -35,6 +35,7 @@ import java.util.List; import java.util.UUID; import mage.cards.decks.DeckCardLists; import mage.game.GameException; +import mage.game.draft.DraftOptions; import mage.interfaces.callback.CallbackServer; import mage.view.TableView; import mage.view.GameView; @@ -53,6 +54,7 @@ public interface Server extends Remote, CallbackServer { //table methods public TableView createTable(UUID sessionId, UUID roomId, MatchOptions matchOptions) throws RemoteException, MageException; + public TableView createDraftTable(UUID sessionId, UUID roomId, DraftOptions draftOptions) throws RemoteException, MageException; public boolean joinTable(UUID sessionId, UUID roomId, UUID tableId, String name, DeckCardLists deckList) throws RemoteException, MageException, GameException; public boolean joinDraftTable(UUID sessionId, UUID roomId, UUID tableId, String name) throws RemoteException, MageException, GameException; public boolean submitDeck(UUID sessionId, UUID tableId, DeckCardLists deckList) throws RemoteException, MageException, GameException; diff --git a/Mage.Server/src/main/java/mage/server/ServerImpl.java b/Mage.Server/src/main/java/mage/server/ServerImpl.java index f35a27f1bfd..d29e1a2179d 100644 --- a/Mage.Server/src/main/java/mage/server/ServerImpl.java +++ b/Mage.Server/src/main/java/mage/server/ServerImpl.java @@ -41,6 +41,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import mage.cards.decks.DeckCardLists; import mage.game.GameException; +import mage.game.draft.DraftOptions; import mage.interfaces.MageException; import mage.game.match.MatchOptions; import mage.interfaces.Server; @@ -128,6 +129,19 @@ public class ServerImpl extends RemoteServer implements Server { return null; } + @Override + public TableView createDraftTable(UUID sessionId, UUID roomId, DraftOptions options) throws MageException { + try { + TableView table = GamesRoomManager.getInstance().getRoom(roomId).createDraftTable(sessionId, options); + logger.info("Draft table " + table.getTableId() + " created"); + return table; + } + catch (Exception ex) { + handleException(ex); + } + return null; + } + @Override public void removeTable(final UUID sessionId, final UUID roomId, final UUID tableId) throws MageException { try { diff --git a/Mage/src/mage/game/draft/DraftImpl.java b/Mage/src/mage/game/draft/DraftImpl.java index a5d74aad1ea..b51584e256d 100644 --- a/Mage/src/mage/game/draft/DraftImpl.java +++ b/Mage/src/mage/game/draft/DraftImpl.java @@ -159,6 +159,7 @@ public class DraftImpl> implements Draft { Thread.sleep(1000); } catch (InterruptedException ex) { Logger.getLogger(DraftImpl.class.getName()).log(Level.SEVERE, null, ex); + break; } } return true;