diff --git a/Mage.Client/config/config.properties b/Mage.Client/config/config.properties
new file mode 100644
index 00000000000..b550d599825
--- /dev/null
+++ b/Mage.Client/config/config.properties
@@ -0,0 +1,7 @@
+server-name=localhost
+port=17171
+remote-server=mage-server
+cards-resource-path=resources/images/cards/
+symbols-resource-path=resources/images/symbols/
+resource-path=resources/images/
+card-scaling-factor=0.4
\ No newline at end of file
diff --git a/Mage.Client/nbproject/project.properties b/Mage.Client/nbproject/project.properties
index 742f8356bd1..afa4656b9da 100644
--- a/Mage.Client/nbproject/project.properties
+++ b/Mage.Client/nbproject/project.properties
@@ -73,4 +73,4 @@ run.test.classpath=\
source.encoding=UTF-8
src.dir=src
test.src.dir=test
-app.version=0.2
+app.version=0.3
diff --git a/Mage.Client/release/config/config.properties b/Mage.Client/release/config/config.properties
index 7c8e6bc7d45..b550d599825 100644
--- a/Mage.Client/release/config/config.properties
+++ b/Mage.Client/release/config/config.properties
@@ -3,4 +3,5 @@ port=17171
remote-server=mage-server
cards-resource-path=resources/images/cards/
symbols-resource-path=resources/images/symbols/
-resource-path=resources/images/
\ No newline at end of file
+resource-path=resources/images/
+card-scaling-factor=0.4
\ No newline at end of file
diff --git a/Mage.Client/src/mage/client/MageFrame.form b/Mage.Client/src/mage/client/MageFrame.form
index 1a0cbca8ac7..26949b171a0 100644
--- a/Mage.Client/src/mage/client/MageFrame.form
+++ b/Mage.Client/src/mage/client/MageFrame.form
@@ -52,7 +52,7 @@
-
+
diff --git a/Mage.Client/src/mage/client/MageFrame.java b/Mage.Client/src/mage/client/MageFrame.java
index cf49ad99fbc..a41b86ac17f 100644
--- a/Mage.Client/src/mage/client/MageFrame.java
+++ b/Mage.Client/src/mage/client/MageFrame.java
@@ -36,17 +36,14 @@ package mage.client;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
-import java.io.FileNotFoundException;
-import java.io.IOException;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.Box;
-import javax.swing.BoxLayout;
import javax.swing.JDesktopPane;
+import javax.swing.JLayeredPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
-import mage.cards.decks.Deck;
import mage.client.dialog.AboutDialog;
import mage.client.dialog.ConnectDialog;
import mage.client.remote.Session;
@@ -99,7 +96,8 @@ public class MageFrame extends javax.swing.JFrame {
session = new Session(this);
connectDialog = new ConnectDialog(session);
- desktopPane.add(connectDialog);
+ desktopPane.add(connectDialog, JLayeredPane.POPUP_LAYER);
+// connectDialog.setLocation(50, 50);
disableButtons();
}
@@ -134,7 +132,7 @@ public class MageFrame extends javax.swing.JFrame {
private void initComponents() {
desktopPane = new javax.swing.JDesktopPane();
- tablesPane = new mage.client.TablesPane();
+ tablesPane = new mage.client.table.TablesPane();
gamePane = new mage.client.game.GamePane();
deckEditorPane = new mage.client.deckeditor.DeckEditorPane();
mageToolbar = new javax.swing.JToolBar();
@@ -344,7 +342,7 @@ public class MageFrame extends javax.swing.JFrame {
private javax.swing.JToolBar.Separator jSeparator4;
private javax.swing.JLabel lblStatus;
private javax.swing.JToolBar mageToolbar;
- private mage.client.TablesPane tablesPane;
+ private mage.client.table.TablesPane tablesPane;
// End of variables declaration//GEN-END:variables
public void setStatusText(String status) {
diff --git a/Mage.Client/src/mage/client/cards/Card.form b/Mage.Client/src/mage/client/cards/Card.form
index a0c7c7edbf7..9bfc6954424 100644
--- a/Mage.Client/src/mage/client/cards/Card.form
+++ b/Mage.Client/src/mage/client/cards/Card.form
@@ -7,7 +7,7 @@
-
+
@@ -37,7 +37,7 @@
-
+
diff --git a/Mage.Client/src/mage/client/cards/Card.java b/Mage.Client/src/mage/client/cards/Card.java
index a6c3b17c2d2..46686e49948 100644
--- a/Mage.Client/src/mage/client/cards/Card.java
+++ b/Mage.Client/src/mage/client/cards/Card.java
@@ -63,6 +63,7 @@ import javax.swing.text.StyledDocument;
import mage.Constants.CardType;
import mage.client.MageFrame;
import mage.client.remote.Session;
+
import mage.client.util.ImageHelper;
import mage.view.CardView;
import static mage.client.util.Constants.*;
@@ -76,6 +77,7 @@ public class Card extends javax.swing.JPanel implements MouseMotionListener, Mou
protected static Session session = MageFrame.getSession();
protected Point p;
+ protected CardDimensions dimension;
protected UUID gameId;
protected BigCard bigCard;
@@ -85,15 +87,17 @@ public class Card extends javax.swing.JPanel implements MouseMotionListener, Mou
protected TextPopup popupText = new TextPopup();
protected BufferedImage background;
protected BufferedImage image = new BufferedImage(FRAME_MAX_WIDTH, FRAME_MAX_HEIGHT, BufferedImage.TYPE_INT_RGB);
- protected BufferedImage small = new BufferedImage(FRAME_WIDTH, FRAME_HEIGHT, BufferedImage.TYPE_INT_RGB);
+ protected BufferedImage small;
/** Creates new form Card */
- public Card(CardView card, BigCard bigCard, UUID gameId) {
+ public Card(CardView card, BigCard bigCard, CardDimensions dimension, UUID gameId) {
+ this.dimension = dimension;
initComponents();
this.gameId = gameId;
this.card = card;
this.bigCard = bigCard;
+ small = new BufferedImage(dimension.frameWidth, dimension.frameHeight, BufferedImage.TYPE_INT_RGB);
background = ImageHelper.getBackground(card);
StyledDocument doc = text.getStyledDocument();
@@ -132,15 +136,15 @@ public class Card extends javax.swing.JPanel implements MouseMotionListener, Mou
gSmall.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
gSmall.setColor(Color.BLACK);
- gSmall.drawImage(ImageHelper.ScaleImage(image, FRAME_WIDTH, FRAME_HEIGHT), 0, 0, this);
+ gSmall.drawImage(ImageHelper.ScaleImage(image, dimension.frameWidth, dimension.frameHeight), 0, 0, this);
gImage.setFont(new Font("Arial", Font.PLAIN, NAME_FONT_MAX_SIZE));
gImage.drawString(card.getName(), CONTENT_MAX_XOFFSET, NAME_MAX_YOFFSET);
if (card.getCardTypes().contains(CardType.CREATURE)) {
- gImage.drawString(card.getPower() + "/" + card.getToughness(), POWBOX_MAX_LEFT + 10, POWBOX_MAX_TOP + 15);
+ gImage.drawString(card.getPower() + "/" + card.getToughness(), POWBOX_TEXT_MAX_LEFT, POWBOX_TEXT_MAX_TOP);
}
else if (card.getCardTypes().contains(CardType.PLANESWALKER)) {
- gImage.drawString(card.getLoyalty(), POWBOX_MAX_LEFT + 10, POWBOX_MAX_TOP + 15);
+ gImage.drawString(card.getLoyalty(), POWBOX_TEXT_MAX_LEFT, POWBOX_TEXT_MAX_TOP);
}
if (card.getCardTypes().size() > 0)
@@ -148,17 +152,17 @@ public class Card extends javax.swing.JPanel implements MouseMotionListener, Mou
gImage.dispose();
- gSmall.setFont(new Font("Arial", Font.PLAIN, NAME_FONT_SIZE));
- gSmall.drawString(card.getName(), CONTENT_XOFFSET, NAME_YOFFSET+1);
+ gSmall.setFont(new Font("Arial", Font.PLAIN, dimension.nameFontSize));
+ gSmall.drawString(card.getName(), dimension.contentXOffset, dimension.nameYOffset);
if (card.getCardTypes().contains(CardType.CREATURE)) {
- gSmall.drawString(card.getPower() + "/" + card.getToughness(), POWBOX_LEFT + 5, POWBOX_TOP + 8);
+ gSmall.drawString(card.getPower() + "/" + card.getToughness(), dimension.powBoxTextLeft, dimension.powBoxTextTop);
}
else if (card.getCardTypes().contains(CardType.PLANESWALKER)) {
- gSmall.drawString(card.getLoyalty(), POWBOX_LEFT + 5, POWBOX_TOP + 8);
+ gSmall.drawString(card.getLoyalty(), dimension.powBoxTextLeft, dimension.powBoxTextTop);
}
if (card.getCardTypes().size() > 0)
- gSmall.drawString(cardType, CONTENT_XOFFSET, TYPE_YOFFSET);
+ gSmall.drawString(cardType, dimension.contentXOffset, dimension.typeYOffset);
drawText();
gSmall.dispose();
@@ -171,15 +175,17 @@ public class Card extends javax.swing.JPanel implements MouseMotionListener, Mou
sb.append("\n").append(card.getManaCost());
}
sb.append("\n").append(cardType);
- sb.append("\n").append(card.getColor().toString());
- for (String rule: getRules()) {
- sb.append("\n").append(rule);
+ if (card.getColor().hasColor()) {
+ sb.append("\n").append(card.getColor().toString());
}
if (card.getCardTypes().contains(CardType.CREATURE)) {
- sb.append(card.getPower()).append("/").append(card.getToughness());
+ sb.append("\n").append(card.getPower()).append("/").append(card.getToughness());
}
else if (card.getCardTypes().contains(CardType.PLANESWALKER)) {
- sb.append(card.getLoyalty());
+ sb.append("\n").append(card.getLoyalty());
+ }
+ for (String rule: getRules()) {
+ sb.append("\n").append(rule);
}
return sb.toString();
}
@@ -235,7 +241,7 @@ public class Card extends javax.swing.JPanel implements MouseMotionListener, Mou
setMinimumSize(getPreferredSize());
setOpaque(false);
- setPreferredSize(new Dimension(FRAME_WIDTH, FRAME_HEIGHT));
+ setPreferredSize(new Dimension(dimension.frameWidth, dimension.frameHeight));
setLayout(null);
jScrollPane1.setBorder(null);
@@ -245,14 +251,14 @@ public class Card extends javax.swing.JPanel implements MouseMotionListener, Mou
text.setBorder(null);
text.setEditable(false);
- text.setFont(new java.awt.Font("Arial", 0, 9)); // NOI18N
+ text.setFont(new java.awt.Font("Arial", 0, 9));
text.setFocusable(false);
text.setOpaque(false);
jScrollPane1.setViewportView(text);
add(jScrollPane1);
jScrollPane1.setBounds(20, 110, 130, 100);
- jScrollPane1.setBounds(new Rectangle(CONTENT_XOFFSET, TEXT_YOFFSET, TEXT_WIDTH, TEXT_HEIGHT));
+ jScrollPane1.setBounds(new Rectangle(dimension.contentXOffset, dimension.textYOffset, dimension.textWidth, dimension.textHeight));
}// //GEN-END:initComponents
@Override
@@ -266,7 +272,7 @@ public class Card extends javax.swing.JPanel implements MouseMotionListener, Mou
} else {
g2.setColor(Color.BLACK);
}
- g2.drawRect(0, 0, FRAME_WIDTH - 1, FRAME_HEIGHT - 1);
+ g2.drawRect(0, 0, dimension.frameWidth - 1, dimension.frameHeight - 1);
}
@Override
@@ -298,11 +304,11 @@ public class Card extends javax.swing.JPanel implements MouseMotionListener, Mou
if (popup != null)
popup.hide();
PopupFactory factory = PopupFactory.getSharedInstance();
- popup = factory.getPopup(this, popupText, (int) this.getLocationOnScreen().getX() + FRAME_WIDTH, (int) this.getLocationOnScreen().getY() + 40);
+ popup = factory.getPopup(this, popupText, (int) this.getLocationOnScreen().getX() + dimension.frameWidth, (int) this.getLocationOnScreen().getY() + 40);
popup.show();
//hack to get popup to resize to fit text
popup.hide();
- popup = factory.getPopup(this, popupText, (int) this.getLocationOnScreen().getX() + FRAME_WIDTH, (int) this.getLocationOnScreen().getY() + 40);
+ popup = factory.getPopup(this, popupText, (int) this.getLocationOnScreen().getX() + dimension.frameWidth, (int) this.getLocationOnScreen().getY() + 40);
popup.show();
}
diff --git a/Mage.Client/src/mage/client/cards/CardDimensions.java b/Mage.Client/src/mage/client/cards/CardDimensions.java
new file mode 100644
index 00000000000..2a8c96af0c0
--- /dev/null
+++ b/Mage.Client/src/mage/client/cards/CardDimensions.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010 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.
+ */
+
+package mage.client.cards;
+
+import static mage.client.util.Constants.*;
+
+/**
+ *
+ * @author BetaSteward_at_googlemail.com
+ */
+public class CardDimensions {
+
+ public static int frameHeight;
+ public static int frameWidth;
+ public static int symbolHeight;
+ public static int symbolWidth;
+ public static int contentXOffset;
+ public static int nameYOffset;
+ public static int typeYOffset;
+ public static int textYOffset;
+ public static int textWidth;
+ public static int textHeight;
+ public static int powBoxTextTop;
+ public static int powBoxTextLeft;
+ public static int nameFontSize;
+
+ public CardDimensions(double scaleFactor) {
+ frameHeight = (int)(FRAME_MAX_HEIGHT * scaleFactor);
+ frameWidth = (int)(FRAME_MAX_WIDTH * scaleFactor);
+ symbolHeight = (int)(SYMBOL_MAX_HEIGHT * scaleFactor);
+ symbolWidth = (int)(SYMBOL_MAX_WIDTH * scaleFactor);
+ contentXOffset = (int)(CONTENT_MAX_XOFFSET * scaleFactor);
+ nameYOffset = (int)(NAME_MAX_YOFFSET * scaleFactor);
+ typeYOffset = (int)(TYPE_MAX_YOFFSET * scaleFactor);
+ textYOffset = (int)(TEXT_MAX_YOFFSET * scaleFactor);
+ textWidth = (int)(TEXT_MAX_WIDTH * scaleFactor);
+ textHeight = (int)(TEXT_MAX_HEIGHT * scaleFactor);
+ powBoxTextTop = (int)(POWBOX_MAX_TOP * scaleFactor);
+ powBoxTextLeft = (int)(POWBOX_MAX_LEFT * scaleFactor);
+ nameFontSize = Math.max(9, (int)(NAME_FONT_MAX_SIZE * scaleFactor));
+ }
+
+}
diff --git a/Mage.Client/src/mage/client/cards/CardEventSource.java b/Mage.Client/src/mage/client/cards/CardEventSource.java
index fed1bc0035c..ffef6ad0f22 100644
--- a/Mage.Client/src/mage/client/cards/CardEventSource.java
+++ b/Mage.Client/src/mage/client/cards/CardEventSource.java
@@ -52,6 +52,7 @@ public class CardEventSource implements EventSource, Serializable {
dispatcher.fireEvent(new Event(cardId, message));
}
+ @Override
public void clearListeners() {
dispatcher.clearListeners();
}
diff --git a/Mage.Client/src/mage/client/cards/CardGrid.form b/Mage.Client/src/mage/client/cards/CardGrid.form
index 92525c8b11c..0f2b598a529 100644
--- a/Mage.Client/src/mage/client/cards/CardGrid.form
+++ b/Mage.Client/src/mage/client/cards/CardGrid.form
@@ -1,6 +1,6 @@
-
-
+
diff --git a/Mage.Client/src/mage/client/dialog/JoinTableDialog.java b/Mage.Client/src/mage/client/dialog/JoinTableDialog.java
index 85e3db7c777..031dbb764f0 100644
--- a/Mage.Client/src/mage/client/dialog/JoinTableDialog.java
+++ b/Mage.Client/src/mage/client/dialog/JoinTableDialog.java
@@ -65,6 +65,7 @@ public class JoinTableDialog extends MageDialog {
this.roomId = roomId;
this.tableId = tableId;
this.setModal(true);
+ this.setLocation(100, 100);
this.setVisible(true);
}
@@ -80,7 +81,9 @@ public class JoinTableDialog extends MageDialog {
btnCancel = new javax.swing.JButton();
btnOK = new javax.swing.JButton();
- newPlayerPanel = new mage.client.NewPlayerPanel();
+ newPlayerPanel = new mage.client.table.NewPlayerPanel();
+
+ setTitle("Join Table");
btnCancel.setText("Cancel");
btnCancel.addActionListener(new java.awt.event.ActionListener() {
@@ -112,7 +115,7 @@ public class JoinTableDialog extends MageDialog {
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(newPlayerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 14, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnCancel)
.addComponent(btnOK))
@@ -153,7 +156,7 @@ public class JoinTableDialog extends MageDialog {
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnCancel;
private javax.swing.JButton btnOK;
- private mage.client.NewPlayerPanel newPlayerPanel;
+ private mage.client.table.NewPlayerPanel newPlayerPanel;
// End of variables declaration//GEN-END:variables
}
diff --git a/Mage.Client/src/mage/client/dialog/MageDialog.form b/Mage.Client/src/mage/client/dialog/MageDialog.form
index ee50ddc2d76..871b94ca200 100644
--- a/Mage.Client/src/mage/client/dialog/MageDialog.form
+++ b/Mage.Client/src/mage/client/dialog/MageDialog.form
@@ -24,7 +24,7 @@
-
+
diff --git a/Mage.Client/src/mage/client/dialog/MageDialog.java b/Mage.Client/src/mage/client/dialog/MageDialog.java
index ea718e3c2c2..b8e5933351b 100644
--- a/Mage.Client/src/mage/client/dialog/MageDialog.java
+++ b/Mage.Client/src/mage/client/dialog/MageDialog.java
@@ -63,7 +63,6 @@ public class MageDialog extends javax.swing.JInternalFrame {
@Override
public void show() {
- this.setLocation(200, 200);
super.show();
if (this.modal) {
startModal();
diff --git a/Mage.Client/src/mage/client/dialog/NewTableDialog.form b/Mage.Client/src/mage/client/dialog/NewTableDialog.form
index 965376265a1..2d483f7a68d 100644
--- a/Mage.Client/src/mage/client/dialog/NewTableDialog.form
+++ b/Mage.Client/src/mage/client/dialog/NewTableDialog.form
@@ -1,6 +1,9 @@
diff --git a/Mage.Client/src/mage/client/dialog/NewTableDialog.java b/Mage.Client/src/mage/client/dialog/NewTableDialog.java
index 846b804a423..2f429acc149 100644
--- a/Mage.Client/src/mage/client/dialog/NewTableDialog.java
+++ b/Mage.Client/src/mage/client/dialog/NewTableDialog.java
@@ -34,6 +34,8 @@
package mage.client.dialog;
+import java.io.FileNotFoundException;
+import java.io.IOException;
import mage.client.*;
import java.util.ArrayList;
import java.util.List;
@@ -42,9 +44,16 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
+import javax.swing.SpinnerNumberModel;
+import mage.Constants.MultiplayerAttackOption;
+import mage.Constants.RangeOfInfluence;
import mage.cards.decks.DeckCardLists;
import mage.client.remote.Session;
+import mage.client.table.TablePlayerPanel;
+import mage.client.util.Event;
+import mage.client.util.Listener;
import mage.util.Logging;
+import mage.view.GameTypeView;
import mage.view.TableView;
/**
@@ -59,12 +68,11 @@ public class NewTableDialog extends MageDialog {
private UUID playerId;
private UUID roomId;
private Session session;
+ private List players = new ArrayList();
/** Creates new form NewTableDialog */
public NewTableDialog() {
initComponents();
- this.player2Panel.setVisible(false);
-
}
/** This method is called from within the constructor to
@@ -80,25 +88,34 @@ public class NewTableDialog extends MageDialog {
cbGameType = new javax.swing.JComboBox();
lbDeckType = new javax.swing.JLabel();
cbDeckType = new javax.swing.JComboBox();
- lbPlayer2Type = new javax.swing.JLabel();
- cbPlayer2Type = new javax.swing.JComboBox();
btnOK = new javax.swing.JButton();
btnCancel = new javax.swing.JButton();
- player2Panel = new mage.client.NewPlayerPanel();
- player1Panel = new mage.client.NewPlayerPanel();
+ player1Panel = new mage.client.table.NewPlayerPanel();
+ spnNumPlayers = new javax.swing.JSpinner();
+ lblNumPlayers = new javax.swing.JLabel();
+ cbRange = new javax.swing.JComboBox();
+ lblRange = new javax.swing.JLabel();
+ lblAttack = new javax.swing.JLabel();
+ cbAttackOption = new javax.swing.JComboBox();
+ pnlOtherPlayers = new javax.swing.JPanel();
+ jSeparator1 = new javax.swing.JSeparator();
+ jSeparator2 = new javax.swing.JSeparator();
+ jLabel1 = new javax.swing.JLabel();
+ jSeparator3 = new javax.swing.JSeparator();
+ jLabel2 = new javax.swing.JLabel();
- lblGameType.setText("Game Type:");
+ setTitle("New Table");
- lbDeckType.setText("Deck Type:");
+ lblGameType.setText("Game Type");
- lbPlayer2Type.setText("Player 2 Type:");
-
- cbPlayer2Type.addActionListener(new java.awt.event.ActionListener() {
+ cbGameType.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- cbPlayer2TypeActionPerformed(evt);
+ cbGameTypeActionPerformed(evt);
}
});
+ lbDeckType.setText("Deck Type");
+
btnOK.setText("OK");
btnOK.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
@@ -113,63 +130,136 @@ public class NewTableDialog extends MageDialog {
}
});
+ spnNumPlayers.addChangeListener(new javax.swing.event.ChangeListener() {
+ public void stateChanged(javax.swing.event.ChangeEvent evt) {
+ numPlayersChanged(evt);
+ }
+ });
+
+ lblNumPlayers.setLabelFor(spnNumPlayers);
+ lblNumPlayers.setText("Players");
+
+ lblRange.setLabelFor(cbRange);
+ lblRange.setText("Range of Influence");
+
+ lblAttack.setLabelFor(cbAttackOption);
+ lblAttack.setText("Attack Option");
+
+ pnlOtherPlayers.setLayout(new java.awt.GridLayout(0, 1));
+
+ jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11));
+ jLabel1.setText("Player 1 (You)");
+
+ jLabel2.setFont(new java.awt.Font("Tahoma", 1, 11));
+ jLabel2.setText("Other Players");
+
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addGap(25, 25, 25)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(lblGameType)
- .addComponent(lbDeckType))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(cbDeckType, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(cbGameType, javax.swing.GroupLayout.PREFERRED_SIZE, 241, javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addGroup(layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(lbPlayer2Type)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(cbPlayer2Type, javax.swing.GroupLayout.PREFERRED_SIZE, 241, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(player1Panel, javax.swing.GroupLayout.DEFAULT_SIZE, 468, Short.MAX_VALUE))
- .addGroup(layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(player2Panel, javax.swing.GroupLayout.DEFAULT_SIZE, 468, Short.MAX_VALUE))
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
- .addContainerGap(360, Short.MAX_VALUE)
- .addComponent(btnOK)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(btnCancel)))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addContainerGap(358, Short.MAX_VALUE)
+ .addComponent(btnOK)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(btnCancel)
.addContainerGap())
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(lbDeckType)
+ .addContainerGap(426, Short.MAX_VALUE))
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(cbGameType, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lblNumPlayers)
+ .addComponent(spnNumPlayers, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(18, 18, 18)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lblRange)
+ .addComponent(cbRange, javax.swing.GroupLayout.PREFERRED_SIZE, 141, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(18, 18, 18)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lblAttack)
+ .addComponent(cbAttackOption, javax.swing.GroupLayout.PREFERRED_SIZE, 199, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addComponent(lblGameType)
+ .addComponent(cbDeckType, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jSeparator2, javax.swing.GroupLayout.DEFAULT_SIZE, 466, Short.MAX_VALUE)
+ .addContainerGap())
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel1)
+ .addContainerGap(396, Short.MAX_VALUE))
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(player1Panel, javax.swing.GroupLayout.DEFAULT_SIZE, 466, Short.MAX_VALUE)
+ .addContainerGap())
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel2)
+ .addContainerGap(399, Short.MAX_VALUE))
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 466, Short.MAX_VALUE)
+ .addContainerGap())
+ .addComponent(pnlOtherPlayers, javax.swing.GroupLayout.PREFERRED_SIZE, 486, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jSeparator3, javax.swing.GroupLayout.DEFAULT_SIZE, 466, Short.MAX_VALUE)
+ .addContainerGap()))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(cbGameType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lblGameType))
+ .addComponent(lbDeckType)
+ .addGap(0, 0, 0)
+ .addComponent(cbDeckType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(cbDeckType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lbDeckType))
+ .addComponent(lblGameType)
+ .addGap(0, 0, 0)
+ .addComponent(cbGameType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(lblAttack)
+ .addGap(0, 0, 0)
+ .addComponent(cbAttackOption, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(lblNumPlayers)
+ .addGap(0, 0, 0)
+ .addComponent(spnNumPlayers, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(lblRange)
+ .addGap(0, 0, 0)
+ .addComponent(cbRange, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jLabel1)
+ .addGap(0, 0, 0)
.addComponent(player1Panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(8, 8, 8)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(lbPlayer2Type)
- .addComponent(cbPlayer2Type, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(jLabel2)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(pnlOtherPlayers, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 4, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(player2Panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnCancel)
.addComponent(btnOK))
- .addContainerGap())
+ .addGap(0, 0, 0))
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGap(223, 223, 223)
+ .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(149, Short.MAX_VALUE)))
);
pack();
@@ -181,45 +271,100 @@ public class NewTableDialog extends MageDialog {
this.setVisible(false);
}//GEN-LAST:event_btnCancelActionPerformed
- private void cbPlayer2TypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbPlayer2TypeActionPerformed
- if (!this.cbPlayer2Type.getSelectedItem().equals("Human")) {
- this.player2Panel.setVisible(true);
+ private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOKActionPerformed
+ GameTypeView gameType = (GameTypeView) cbGameType.getSelectedItem();
+ List playerTypes = new ArrayList();
+ playerTypes.add("Human");
+ for (TablePlayerPanel player: players) {
+ playerTypes.add(player.getPlayerType());
}
- else {
- this.player2Panel.setVisible(false);
+ table = session.createTable(
+ roomId,
+ gameType.getName(),
+ (String)this.cbDeckType.getSelectedItem(),
+ playerTypes,
+ (MultiplayerAttackOption)this.cbAttackOption.getSelectedItem(),
+ (RangeOfInfluence)this.cbRange.getSelectedItem());
+ try {
+ if (session.joinTable(roomId, table.getTableId(), 0, this.player1Panel.getPlayerName(), DeckCardLists.load(this.player1Panel.getDeckFile()))) {
+ int seatNum = 1;
+ for (TablePlayerPanel player: players) {
+ if (!player.getPlayerType().equals("Human")) {
+ if (!player.joinTable(roomId, table.getTableId(), seatNum)) {
+ JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Error joining table.", "Error", JOptionPane.ERROR_MESSAGE);
+ session.removeTable(roomId, table.getTableId());
+ table = null;
+ return;
+ }
+ }
+ seatNum++;
+ }
+ this.setVisible(false);
+ return;
+ }
+ } catch (FileNotFoundException ex) {
+ handleError(ex);
+ } catch (IOException ex) {
+ handleError(ex);
+ } catch (ClassNotFoundException ex) {
+ handleError(ex);
+ }
+ JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Error joining table.", "Error", JOptionPane.ERROR_MESSAGE);
+ session.removeTable(roomId, table.getTableId());
+ table = null;
+ }//GEN-LAST:event_btnOKActionPerformed
+
+ private void cbGameTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbGameTypeActionPerformed
+ setGameOptions();
+ }//GEN-LAST:event_cbGameTypeActionPerformed
+
+ private void numPlayersChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_numPlayersChanged
+ int numPlayers = (Integer)this.spnNumPlayers.getValue() - 1;
+ createPlayers(numPlayers);
+ }//GEN-LAST:event_numPlayersChanged
+
+ private void setGameOptions() {
+ GameTypeView gameType = (GameTypeView) cbGameType.getSelectedItem();
+ this.spnNumPlayers.setModel(new SpinnerNumberModel(gameType.getMinPlayers(), gameType.getMinPlayers(), gameType.getMaxPlayers(), 1));
+ this.spnNumPlayers.setEnabled(gameType.getMinPlayers() != gameType.getMaxPlayers());
+ this.cbAttackOption.setEnabled(gameType.isUseAttackOption());
+ this.cbRange.setEnabled(gameType.isUseRange());
+ createPlayers(gameType.getMinPlayers() - 1);
+ }
+
+ private void createPlayers(int numPlayers) {
+ if (numPlayers > players.size()) {
+ while (players.size() != numPlayers) {
+ TablePlayerPanel playerPanel = new TablePlayerPanel();
+ playerPanel.init(players.size() + 2);
+ players.add(playerPanel);
+ playerPanel.addPlayerTypeEventListener(
+ new Listener () {
+ @Override
+ public void event(Event event) {
+ drawPlayers();
+ }
+ }
+ );
+ }
+ }
+ else if (numPlayers < players.size()) {
+ while (players.size() != numPlayers) {
+ players.remove(players.size() - 1);
+ }
+ }
+ drawPlayers();
+ }
+
+ private void drawPlayers() {
+ this.pnlOtherPlayers.removeAll();
+ for (TablePlayerPanel panel: players) {
+ this.pnlOtherPlayers.add(panel);
}
this.pack();
this.revalidate();
this.repaint();
-
- }//GEN-LAST:event_cbPlayer2TypeActionPerformed
-
- private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOKActionPerformed
- try {
- List playerTypes = new ArrayList();
- playerTypes.add("Human");
- playerTypes.add((String) this.cbPlayer2Type.getSelectedItem());
- table = session.createTable(roomId, (String)this.cbGameType.getSelectedItem(), (String)this.cbDeckType.getSelectedItem(), playerTypes);
- if (session.joinTable(roomId, table.getTableId(), 0, this.player1Panel.getPlayerName(), DeckCardLists.load(this.player1Panel.getDeckFile()))) {
- if (!this.cbPlayer2Type.getSelectedItem().equals("Human")) {
- if (session.joinTable(roomId, table.getTableId(), 1, this.player2Panel.getPlayerName(), DeckCardLists.load(this.player2Panel.getDeckFile()))) {
- this.setVisible(false);
- return;
- }
- JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Error joining table.", "Error", JOptionPane.ERROR_MESSAGE);
- }
- else {
- this.setVisible(false);
- return;
- }
- JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Error joining table.", "Error", JOptionPane.ERROR_MESSAGE);
- }
- } catch (Exception ex) {
- handleError(ex);
- }
- session.removeTable(roomId, table.getTableId());
- table = null;
- }//GEN-LAST:event_btnOKActionPerformed
+ }
private void handleError(Exception ex) {
logger.log(Level.SEVERE, "Error loading deck", ex);
@@ -229,14 +374,14 @@ public class NewTableDialog extends MageDialog {
public void showDialog(UUID roomId) {
session = MageFrame.getSession();
this.player1Panel.setPlayerName(session.getUserName());
- cbGameType.setModel(new DefaultComboBoxModel(session.getGameTypes()));
+ cbGameType.setModel(new DefaultComboBoxModel(session.getGameTypes().toArray()));
cbDeckType.setModel(new DefaultComboBoxModel(session.getDeckTypes()));
- cbPlayer2Type.setModel(new DefaultComboBoxModel(session.getPlayerTypes()));
+ cbRange.setModel(new DefaultComboBoxModel(RangeOfInfluence.values()));
+ cbAttackOption.setModel(new DefaultComboBoxModel(MultiplayerAttackOption.values()));
this.roomId = roomId;
this.setModal(true);
- this.pack();
- this.revalidate();
- this.repaint();
+ setGameOptions();
+ this.setLocation(150, 100);
this.setVisible(true);
}
@@ -251,14 +396,23 @@ public class NewTableDialog extends MageDialog {
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnCancel;
private javax.swing.JButton btnOK;
+ private javax.swing.JComboBox cbAttackOption;
private javax.swing.JComboBox cbDeckType;
private javax.swing.JComboBox cbGameType;
- private javax.swing.JComboBox cbPlayer2Type;
+ private javax.swing.JComboBox cbRange;
+ private javax.swing.JLabel jLabel1;
+ private javax.swing.JLabel jLabel2;
+ private javax.swing.JSeparator jSeparator1;
+ private javax.swing.JSeparator jSeparator2;
+ private javax.swing.JSeparator jSeparator3;
private javax.swing.JLabel lbDeckType;
- private javax.swing.JLabel lbPlayer2Type;
+ private javax.swing.JLabel lblAttack;
private javax.swing.JLabel lblGameType;
- private mage.client.NewPlayerPanel player1Panel;
- private mage.client.NewPlayerPanel player2Panel;
+ private javax.swing.JLabel lblNumPlayers;
+ private javax.swing.JLabel lblRange;
+ private mage.client.table.NewPlayerPanel player1Panel;
+ private javax.swing.JPanel pnlOtherPlayers;
+ private javax.swing.JSpinner spnNumPlayers;
// End of variables declaration//GEN-END:variables
}
diff --git a/Mage.Client/src/mage/client/dialog/ShowCardsDialog.java b/Mage.Client/src/mage/client/dialog/ShowCardsDialog.java
index 0ec4f181015..ffb20e8eadb 100644
--- a/Mage.Client/src/mage/client/dialog/ShowCardsDialog.java
+++ b/Mage.Client/src/mage/client/dialog/ShowCardsDialog.java
@@ -43,6 +43,8 @@ import javax.swing.JLayeredPane;
import mage.client.MageFrame;
import mage.client.cards.BigCard;
import mage.client.cards.Card;
+import mage.client.cards.CardDimensions;
+import mage.client.util.Config;
import mage.view.CardView;
import mage.view.CardsView;
import static mage.client.util.Constants.*;
@@ -59,13 +61,13 @@ public class ShowCardsDialog extends MageDialog implements MouseListener {
this.setModal(false);
}
- public void loadCards(String name, CardsView showCards, BigCard bigCard, UUID gameId) {
+ public void loadCards(String name, CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId) {
this.title = name;
cardArea.removeAll();
if (showCards != null && showCards.size() < 10)
- loadCardsFew(showCards, bigCard, gameId);
+ loadCardsFew(showCards, bigCard, dimension, gameId);
else
- loadCardsMany(showCards, bigCard, gameId);
+ loadCardsMany(showCards, bigCard, dimension, gameId);
cardArea.revalidate();
if (getParent() != MageFrame.getDesktop() || this.isClosed)
MageFrame.getDesktop().add(this, JLayeredPane.PALETTE_LAYER);
@@ -75,34 +77,34 @@ public class ShowCardsDialog extends MageDialog implements MouseListener {
this.setVisible(true);
}
- private void loadCardsFew(CardsView showCards, BigCard bigCard, UUID gameId) {
- Rectangle rectangle = new Rectangle(FRAME_WIDTH, FRAME_HEIGHT);
+ private void loadCardsFew(CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId) {
+ Rectangle rectangle = new Rectangle(Config.dimensions.frameWidth, Config.dimensions.frameHeight);
for (CardView card: showCards) {
- Card cardImg = new Card(card, bigCard, gameId);
+ Card cardImg = new Card(card, bigCard, dimension, gameId);
cardImg.setBounds(rectangle);
cardArea.add(cardImg);
cardArea.moveToFront(cardImg);
cardImg.update(card);
cardImg.addMouseListener(this);
- rectangle.translate(FRAME_WIDTH, 0);
+ rectangle.translate(Config.dimensions.frameWidth, 0);
}
- cardArea.setPreferredSize(new Dimension(FRAME_WIDTH * showCards.size(), FRAME_HEIGHT));
+ cardArea.setPreferredSize(new Dimension(Config.dimensions.frameWidth * showCards.size(), Config.dimensions.frameHeight));
}
- private void loadCardsMany(CardsView showCards, BigCard bigCard, UUID gameId) {
+ private void loadCardsMany(CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId) {
int columns = 1;
if (showCards != null && showCards.size() > 0) {
- Rectangle rectangle = new Rectangle(FRAME_WIDTH, FRAME_HEIGHT);
+ Rectangle rectangle = new Rectangle(Config.dimensions.frameWidth, Config.dimensions.frameHeight);
int count = 0;
for (CardView card: showCards) {
- Card cardImg = new Card(card, bigCard, gameId);
+ Card cardImg = new Card(card, bigCard, dimension, gameId);
cardImg.setBounds(rectangle);
cardArea.add(cardImg);
cardArea.moveToFront(cardImg);
cardImg.update(card);
cardImg.addMouseListener(this);
if (count >= 20) {
- rectangle.translate(FRAME_WIDTH, -400);
+ rectangle.translate(Config.dimensions.frameWidth, -400);
columns++;
count = 0;
} else {
@@ -111,7 +113,7 @@ public class ShowCardsDialog extends MageDialog implements MouseListener {
}
}
}
- cardArea.setPreferredSize(new Dimension(FRAME_WIDTH * columns, FRAME_HEIGHT + 400));
+ cardArea.setPreferredSize(new Dimension(Config.dimensions.frameWidth * columns, Config.dimensions.frameHeight + 400));
}
/** This method is called from within the constructor to
diff --git a/Mage.Client/src/mage/client/dialog/TableWaitingDialog.form b/Mage.Client/src/mage/client/dialog/TableWaitingDialog.form
index e69d79a930a..b2b9e434c88 100644
--- a/Mage.Client/src/mage/client/dialog/TableWaitingDialog.form
+++ b/Mage.Client/src/mage/client/dialog/TableWaitingDialog.form
@@ -1,6 +1,9 @@
-
+
\ No newline at end of file
diff --git a/Mage.Client/src/mage/client/TablesPane.java b/Mage.Client/src/mage/client/table/TablesPane.java
similarity index 94%
rename from Mage.Client/src/mage/client/TablesPane.java
rename to Mage.Client/src/mage/client/table/TablesPane.java
index c5f466e0f13..010fb427a36 100644
--- a/Mage.Client/src/mage/client/TablesPane.java
+++ b/Mage.Client/src/mage/client/table/TablesPane.java
@@ -32,9 +32,11 @@
* Created on Dec 17, 2009, 9:21:42 AM
*/
-package mage.client;
+package mage.client.table;
import java.util.UUID;
+import mage.client.MageFrame;
+import mage.client.MagePane;
/**
*
@@ -69,7 +71,7 @@ public class TablesPane extends MagePane {
// //GEN-BEGIN:initComponents
private void initComponents() {
- tablesPanel = new mage.client.TablesPanel();
+ tablesPanel = new mage.client.table.TablesPanel();
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
@@ -87,7 +89,7 @@ public class TablesPane extends MagePane {
// Variables declaration - do not modify//GEN-BEGIN:variables
- private mage.client.TablesPanel tablesPanel;
+ private mage.client.table.TablesPanel tablesPanel;
// End of variables declaration//GEN-END:variables
}
diff --git a/Mage.Client/src/mage/client/TablesPanel.form b/Mage.Client/src/mage/client/table/TablesPanel.form
similarity index 100%
rename from Mage.Client/src/mage/client/TablesPanel.form
rename to Mage.Client/src/mage/client/table/TablesPanel.form
diff --git a/Mage.Client/src/mage/client/TablesPanel.java b/Mage.Client/src/mage/client/table/TablesPanel.java
similarity index 99%
rename from Mage.Client/src/mage/client/TablesPanel.java
rename to Mage.Client/src/mage/client/table/TablesPanel.java
index a3de1763bff..3c610bc2e37 100644
--- a/Mage.Client/src/mage/client/TablesPanel.java
+++ b/Mage.Client/src/mage/client/table/TablesPanel.java
@@ -32,7 +32,7 @@
* Created on 15-Dec-2009, 10:54:01 PM
*/
-package mage.client;
+package mage.client.table;
import mage.client.dialog.NewTableDialog;
import mage.client.dialog.JoinTableDialog;
@@ -51,8 +51,8 @@ import javax.swing.Action;
import javax.swing.JOptionPane;
import javax.swing.Timer;
import javax.swing.table.AbstractTableModel;
-import mage.Constants;
import mage.cards.decks.DeckCardLists;
+import mage.client.MageFrame;
import mage.client.remote.MageRemoteException;
import mage.client.remote.Session;
import mage.client.util.ButtonColumn;
@@ -260,7 +260,8 @@ public class TablesPanel extends javax.swing.JPanel implements Observer {
roomId,
"Two Player Duel",
"Constructed",
- playerTypes
+ playerTypes,
+ null, null
);
session.joinTable(
roomId,
diff --git a/Mage.Client/src/mage/client/util/Config.java b/Mage.Client/src/mage/client/util/Config.java
index 5c59065db32..c5b48cc73c6 100644
--- a/Mage.Client/src/mage/client/util/Config.java
+++ b/Mage.Client/src/mage/client/util/Config.java
@@ -34,6 +34,7 @@ import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
+import mage.client.cards.CardDimensions;
import mage.util.Logging;
/**
@@ -53,7 +54,9 @@ public class Config {
public static final String cardArtResourcePath;
public static final String symbolsResourcePath;
public static final String resourcePath;
+ public static final double cardScalingFactor;
public static final boolean useResource;
+ public static final CardDimensions dimensions;
static {
Properties p = new Properties();
@@ -67,6 +70,8 @@ public class Config {
remoteServer = p.getProperty("remote-server");
cardsResourcePath = p.getProperty("cards-resource-path");
resourcePath = p.getProperty("resource-path");
+ cardScalingFactor = Double.valueOf(p.getProperty("card-scaling-factor"));
+ dimensions = new CardDimensions(cardScalingFactor);
File test = new File(cardsResourcePath);
if (test.isDirectory()) {
useResource = false;
diff --git a/Mage.Client/src/mage/client/util/Constants.java b/Mage.Client/src/mage/client/util/Constants.java
index 2d32aab0f36..23802fe72f1 100644
--- a/Mage.Client/src/mage/client/util/Constants.java
+++ b/Mage.Client/src/mage/client/util/Constants.java
@@ -41,48 +41,50 @@ public final class Constants {
public static final int FRAME_MAX_WIDTH = 256;
public static final int ART_MAX_HEIGHT = 168;
public static final int ART_MAX_WIDTH = 227;
- public static final int SYMBOL_MAX_HEIGHT = 28;
- public static final int SYMBOL_MAX_WIDTH = 28;
+ public static final int SYMBOL_MAX_HEIGHT = 14;
+ public static final int SYMBOL_MAX_WIDTH = 14;
public static final int SYMBOL_MAX_XOFFSET = 27;
public static final int SYMBOL_MAX_YOFFSET = 15;
- public static final int SYMBOL_MAX_SPACE = 28;
+ public static final int SYMBOL_MAX_SPACE = 14;
public static final int CONTENT_MAX_XOFFSET = 15;
public static final int ART_MAX_YOFFSET = 37;
- public static final int NAME_MAX_YOFFSET = 27;
+ public static final int NAME_MAX_YOFFSET = 28;
public static final int TYPE_MAX_YOFFSET = 223;
public static final int TEXT_MAX_YOFFSET = 232;
public static final int TEXT_MAX_WIDTH = 227;
public static final int TEXT_MAX_HEIGHT = 105;
public static final int NAME_FONT_MAX_SIZE = 13;
public static final int TEXT_FONT_MAX_SIZE = 11;
- public static final int PARAGRAPH_MAX_SPACING = 4;
+// public static final int PARAGRAPH_MAX_SPACING = 4;
public static final int POWBOX_MAX_TOP = 336;
public static final int POWBOX_MAX_LEFT = 202;
+ public static final int POWBOX_TEXT_MAX_TOP = 352;
+ public static final int POWBOX_TEXT_MAX_LEFT = 212;
public static final int DAMAGE_MAX_LEFT = 180;
public static final double SCALE_FACTOR = 0.5;
- public static final int FRAME_HEIGHT = (int)(FRAME_MAX_HEIGHT * SCALE_FACTOR);
- public static final int FRAME_WIDTH = (int)(FRAME_MAX_WIDTH * SCALE_FACTOR);
- public static final int ART_HEIGHT = (int)(ART_MAX_HEIGHT * SCALE_FACTOR);
- public static final int ART_WIDTH = (int)(ART_MAX_WIDTH * SCALE_FACTOR);
- public static final int SYMBOL_HEIGHT = (int)(SYMBOL_MAX_HEIGHT * SCALE_FACTOR);
- public static final int SYMBOL_WIDTH = (int)(SYMBOL_MAX_WIDTH * SCALE_FACTOR);
- public static final int SYMBOL_XOFFSET = (int)(SYMBOL_MAX_XOFFSET * SCALE_FACTOR);
- public static final int SYMBOL_YOFFSET = (int)(SYMBOL_MAX_YOFFSET * SCALE_FACTOR);
- public static final int SYMBOL_SPACE = (int)(SYMBOL_MAX_SPACE * SCALE_FACTOR);
- public static final int CONTENT_XOFFSET = (int)(CONTENT_MAX_XOFFSET * SCALE_FACTOR);
- public static final int ART_YOFFSET = (int)(ART_MAX_YOFFSET * SCALE_FACTOR);
- public static final int NAME_YOFFSET = (int)(NAME_MAX_YOFFSET * SCALE_FACTOR);
- public static final int TYPE_YOFFSET = (int)(TYPE_MAX_YOFFSET * SCALE_FACTOR);
- public static final int TEXT_YOFFSET = (int)(TEXT_MAX_YOFFSET * SCALE_FACTOR);
- public static final int TEXT_WIDTH = (int)(TEXT_MAX_WIDTH * SCALE_FACTOR);
- public static final int TEXT_HEIGHT = (int)(TEXT_MAX_HEIGHT * SCALE_FACTOR);
- public static final int POWBOX_TOP = (int)(POWBOX_MAX_TOP * SCALE_FACTOR);
- public static final int POWBOX_LEFT = (int)(POWBOX_MAX_LEFT * SCALE_FACTOR);
- public static final int DAMAGE_LEFT = (int)(DAMAGE_MAX_LEFT * SCALE_FACTOR);
- public static final int NAME_FONT_SIZE = Math.max(9, (int)(NAME_FONT_MAX_SIZE * SCALE_FACTOR));
- public static final int TEXT_FONT_SIZE = Math.max(9, (int)(TEXT_FONT_MAX_SIZE * SCALE_FACTOR));
- public static final int PARAGRAPH_SPACING = (int)(PARAGRAPH_MAX_SPACING * SCALE_FACTOR);
+// public static final int FRAME_HEIGHT = (int)(FRAME_MAX_HEIGHT * SCALE_FACTOR);
+// public static final int FRAME_WIDTH = (int)(FRAME_MAX_WIDTH * SCALE_FACTOR);
+//// public static final int ART_HEIGHT = (int)(ART_MAX_HEIGHT * SCALE_FACTOR);
+//// public static final int ART_WIDTH = (int)(ART_MAX_WIDTH * SCALE_FACTOR);
+// public static final int SYMBOL_HEIGHT = (int)(SYMBOL_MAX_HEIGHT * SCALE_FACTOR);
+// public static final int SYMBOL_WIDTH = (int)(SYMBOL_MAX_WIDTH * SCALE_FACTOR);
+//// public static final int SYMBOL_XOFFSET = (int)(SYMBOL_MAX_XOFFSET * SCALE_FACTOR);
+//// public static final int SYMBOL_YOFFSET = (int)(SYMBOL_MAX_YOFFSET * SCALE_FACTOR);
+//// public static final int SYMBOL_SPACE = (int)(SYMBOL_MAX_SPACE * SCALE_FACTOR);
+// public static final int CONTENT_XOFFSET = (int)(CONTENT_MAX_XOFFSET * SCALE_FACTOR);
+//// public static final int ART_YOFFSET = (int)(ART_MAX_YOFFSET * SCALE_FACTOR);
+// public static final int NAME_YOFFSET = (int)(NAME_MAX_YOFFSET * SCALE_FACTOR);
+// public static final int TYPE_YOFFSET = (int)(TYPE_MAX_YOFFSET * SCALE_FACTOR);
+// public static final int TEXT_YOFFSET = (int)(TEXT_MAX_YOFFSET * SCALE_FACTOR);
+// public static final int TEXT_WIDTH = (int)(TEXT_MAX_WIDTH * SCALE_FACTOR);
+// public static final int TEXT_HEIGHT = (int)(TEXT_MAX_HEIGHT * SCALE_FACTOR);
+// public static final int POWBOX_TEXT_TOP = (int)(POWBOX_TEXT_MAX_TOP * SCALE_FACTOR);
+// public static final int POWBOX_TEXT_LEFT = (int)(POWBOX_TEXT_MAX_LEFT * SCALE_FACTOR);
+//// public static final int DAMAGE_LEFT = (int)(DAMAGE_MAX_LEFT * SCALE_FACTOR);
+// public static final int NAME_FONT_SIZE = Math.max(9, (int)(NAME_FONT_MAX_SIZE * SCALE_FACTOR));
+//// public static final int TEXT_FONT_SIZE = Math.max(9, (int)(TEXT_FONT_MAX_SIZE * SCALE_FACTOR));
+//// public static final int PARAGRAPH_SPACING = (int)(PARAGRAPH_MAX_SPACING * SCALE_FACTOR);
}
diff --git a/Mage.Client/src/mage/client/util/ImageHelper.java b/Mage.Client/src/mage/client/util/ImageHelper.java
index 92ee8ec3dd9..806e5701828 100644
--- a/Mage.Client/src/mage/client/util/ImageHelper.java
+++ b/Mage.Client/src/mage/client/util/ImageHelper.java
@@ -41,6 +41,7 @@ import java.util.HashMap;
import java.util.List;
import javax.imageio.ImageIO;
import mage.Constants.CardType;
+import mage.client.cards.CardDimensions;
import mage.view.AbilityView;
import mage.view.CardView;
import mage.view.StackAbilityView;
@@ -202,23 +203,23 @@ public class ImageHelper {
return image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
}
- public static MemoryImageSource rotate(Image image) {
- int buffer[] = new int[FRAME_WIDTH * FRAME_HEIGHT];
- int rotate[] = new int[FRAME_HEIGHT * FRAME_WIDTH];
- PixelGrabber grabber = new PixelGrabber(image, 0, 0, FRAME_WIDTH, FRAME_HEIGHT, buffer, 0, FRAME_WIDTH);
+ public static MemoryImageSource rotate(Image image, CardDimensions dimensions) {
+ int buffer[] = new int[dimensions.frameWidth * dimensions.frameHeight];
+ int rotate[] = new int[dimensions.frameHeight * dimensions.frameWidth];
+ PixelGrabber grabber = new PixelGrabber(image, 0, 0, dimensions.frameWidth, dimensions.frameHeight, buffer, 0, dimensions.frameWidth);
try {
grabber.grabPixels();
}
catch(InterruptedException e) {
e.printStackTrace();
}
- for(int y = 0; y < FRAME_HEIGHT; y++) {
- for(int x = 0; x < FRAME_WIDTH; x++) {
- rotate[((FRAME_WIDTH - x - 1) *FRAME_HEIGHT)+y] = buffer[(y*FRAME_WIDTH)+x];
+ for(int y = 0; y < dimensions.frameHeight; y++) {
+ for(int x = 0; x < dimensions.frameWidth; x++) {
+ rotate[((dimensions.frameWidth - x - 1) *dimensions.frameHeight)+y] = buffer[(y*dimensions.frameWidth)+x];
}
}
- return new MemoryImageSource(FRAME_HEIGHT, FRAME_WIDTH, rotate, 0, FRAME_HEIGHT);
+ return new MemoryImageSource(dimensions.frameHeight, dimensions.frameWidth, rotate, 0, dimensions.frameHeight);
}
@@ -230,11 +231,11 @@ public class ImageHelper {
Image image = Symbols.getSymbol(symbol);
if (image != null) {
g.drawImage(image, costLeft, yOffset, o);
- costLeft -= SYMBOL_SPACE;
+ costLeft -= SYMBOL_MAX_SPACE;
}
else {
- g.drawString(symbol, costLeft, yOffset + SYMBOL_SPACE);
- costLeft -= SYMBOL_SPACE + 4;
+ g.drawString(symbol, costLeft, yOffset + SYMBOL_MAX_SPACE);
+ costLeft -= SYMBOL_MAX_SPACE + 4;
}
}
}
diff --git a/Mage.Client/src/mage/client/util/Symbols.java b/Mage.Client/src/mage/client/util/Symbols.java
index 79024dfb9e2..1d2b6268e2b 100644
--- a/Mage.Client/src/mage/client/util/Symbols.java
+++ b/Mage.Client/src/mage/client/util/Symbols.java
@@ -42,47 +42,47 @@ public class Symbols {
public static Map symbols = new HashMap();
static {
- symbols.put("{B}", ImageHelper.loadImage(Config.symbolsResourcePath + "mana_black.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{U}", ImageHelper.loadImage(Config.symbolsResourcePath + "mana_blue.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{G}", ImageHelper.loadImage(Config.symbolsResourcePath + "mana_green.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{R}", ImageHelper.loadImage(Config.symbolsResourcePath + "mana_red.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{W}", ImageHelper.loadImage(Config.symbolsResourcePath + "mana_white.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
+ symbols.put("{B}", ImageHelper.loadImage(Config.symbolsResourcePath + "mana_black.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{U}", ImageHelper.loadImage(Config.symbolsResourcePath + "mana_blue.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{G}", ImageHelper.loadImage(Config.symbolsResourcePath + "mana_green.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{R}", ImageHelper.loadImage(Config.symbolsResourcePath + "mana_red.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{W}", ImageHelper.loadImage(Config.symbolsResourcePath + "mana_white.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
- symbols.put("{0}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_0.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{1}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_1.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{2}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_2.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{3}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_3.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{4}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_4.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{5}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_5.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{6}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_6.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{7}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_7.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{8}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_8.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{9}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_9.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{10}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_10.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{11}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_11.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{12}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_12.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{13}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_13.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{14}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_14.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{15}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_15.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{16}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_16.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{X}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_x.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
+ symbols.put("{0}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_0.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{1}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_1.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{2}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_2.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{3}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_3.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{4}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_4.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{5}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_5.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{6}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_6.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{7}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_7.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{8}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_8.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{9}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_9.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{10}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_10.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{11}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_11.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{12}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_12.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{13}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_13.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{14}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_14.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{15}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_15.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{16}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_16.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{X}", ImageHelper.loadImage(Config.symbolsResourcePath + "colorless_x.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
- symbols.put("{B/G}", ImageHelper.loadImage(Config.symbolsResourcePath + "black_green.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{B/R}", ImageHelper.loadImage(Config.symbolsResourcePath + "black_red.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{U/B}", ImageHelper.loadImage(Config.symbolsResourcePath + "blue_black.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{U/R}", ImageHelper.loadImage(Config.symbolsResourcePath + "blue_red.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{G/B}", ImageHelper.loadImage(Config.symbolsResourcePath + "green_blue.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{G/W}", ImageHelper.loadImage(Config.symbolsResourcePath + "green_white.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{R/G}", ImageHelper.loadImage(Config.symbolsResourcePath + "red_green.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{R/W}", ImageHelper.loadImage(Config.symbolsResourcePath + "red_white.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{W/B}", ImageHelper.loadImage(Config.symbolsResourcePath + "white_black.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{W/U}", ImageHelper.loadImage(Config.symbolsResourcePath + "white_blue.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
+ symbols.put("{B/G}", ImageHelper.loadImage(Config.symbolsResourcePath + "black_green.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{B/R}", ImageHelper.loadImage(Config.symbolsResourcePath + "black_red.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{U/B}", ImageHelper.loadImage(Config.symbolsResourcePath + "blue_black.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{U/R}", ImageHelper.loadImage(Config.symbolsResourcePath + "blue_red.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{G/B}", ImageHelper.loadImage(Config.symbolsResourcePath + "green_blue.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{G/W}", ImageHelper.loadImage(Config.symbolsResourcePath + "green_white.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{R/G}", ImageHelper.loadImage(Config.symbolsResourcePath + "red_green.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{R/W}", ImageHelper.loadImage(Config.symbolsResourcePath + "red_white.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{W/B}", ImageHelper.loadImage(Config.symbolsResourcePath + "white_black.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{W/U}", ImageHelper.loadImage(Config.symbolsResourcePath + "white_blue.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
- symbols.put("{2/B}", ImageHelper.loadImage(Config.symbolsResourcePath + "two_black.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{2/U}", ImageHelper.loadImage(Config.symbolsResourcePath + "two_blue.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{2/G}", ImageHelper.loadImage(Config.symbolsResourcePath + "two_green.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{2/R}", ImageHelper.loadImage(Config.symbolsResourcePath + "two_red.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
- symbols.put("{2/W}", ImageHelper.loadImage(Config.symbolsResourcePath + "two_white.png", SYMBOL_WIDTH, SYMBOL_HEIGHT));
+ symbols.put("{2/B}", ImageHelper.loadImage(Config.symbolsResourcePath + "two_black.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{2/U}", ImageHelper.loadImage(Config.symbolsResourcePath + "two_blue.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{2/G}", ImageHelper.loadImage(Config.symbolsResourcePath + "two_green.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{2/R}", ImageHelper.loadImage(Config.symbolsResourcePath + "two_red.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
+ symbols.put("{2/W}", ImageHelper.loadImage(Config.symbolsResourcePath + "two_white.png", SYMBOL_MAX_WIDTH, SYMBOL_MAX_HEIGHT));
}
diff --git a/Mage.Client/src/mage/client/util/resources/config.properties b/Mage.Client/src/mage/client/util/resources/config.properties
index 7c8e6bc7d45..b550d599825 100644
--- a/Mage.Client/src/mage/client/util/resources/config.properties
+++ b/Mage.Client/src/mage/client/util/resources/config.properties
@@ -3,4 +3,5 @@ port=17171
remote-server=mage-server
cards-resource-path=resources/images/cards/
symbols-resource-path=resources/images/symbols/
-resource-path=resources/images/
\ No newline at end of file
+resource-path=resources/images/
+card-scaling-factor=0.4
\ No newline at end of file