diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml index 2931bf5b9ce..fdf70a5a4ae 100644 --- a/Mage.Client/pom.xml +++ b/Mage.Client/pom.xml @@ -1,63 +1,71 @@ - - 4.0.0 - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + 4.0.0 + + + org.mage + mage-root + 0.3 + + org.mage - mage-root - 0.3 - - - org.mage - mage-client - jar - 0.3 - Mage Client - http://maven.apache.org - + mage-client + jar + 0.3 + Mage Client + http://maven.apache.org + - org.mage - mage - ${mage-version} + org.mage + mage + ${mage-version} - org.mage - mage-common - ${mage-version} + org.mage + mage-common + ${mage-version} - org.mage - mage-sets - ${mage-version} + org.mage + mage-sets + ${mage-version} - + src - + + + + resources + false + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.0.2 + + 1.6 + 1.6 + + - org.apache.maven.plugins - maven-compiler-plugin - 2.0.2 - - 1.6 - 1.6 - - - maven-resources-plugin UTF-8 - - + + mage-client - + 0.3 diff --git a/Mage.Client/resources/dk_gray.jpg b/Mage.Client/resources/dk_gray.jpg new file mode 100644 index 00000000000..2e0776d6068 Binary files /dev/null and b/Mage.Client/resources/dk_gray.jpg differ diff --git a/Mage.Client/src/mage/client/cards/Card.java b/Mage.Client/src/mage/client/cards/Card.java index 57d7b90245c..37d3e00238a 100644 --- a/Mage.Client/src/mage/client/cards/Card.java +++ b/Mage.Client/src/mage/client/cards/Card.java @@ -77,9 +77,9 @@ import mage.Constants.CardType; import mage.client.MageFrame; import mage.client.game.PlayAreaPanel; import mage.client.remote.Session; -import mage.client.util.ArrowBuilder; import mage.client.util.Config; import mage.client.util.ImageHelper; +import mage.client.util.gui.ArrowBuilder; import mage.sets.Sets; import mage.view.AbilityView; import mage.view.CardView; diff --git a/Mage.Client/src/mage/client/cards/Cards.java b/Mage.Client/src/mage/client/cards/Cards.java index cbee19ab2e6..a9492f7496d 100644 --- a/Mage.Client/src/mage/client/cards/Cards.java +++ b/Mage.Client/src/mage/client/cards/Cards.java @@ -56,6 +56,10 @@ public class Cards extends javax.swing.JPanel { /** Creates new form Cards */ public Cards() { initComponents(); + setOpaque(false); + jScrollPane1.setOpaque(false); + jScrollPane1.getViewport().setOpaque(false); + cardArea.setOpaque(false); } public boolean loadCards(CardsView cardsView, BigCard bigCard, UUID gameId) { diff --git a/Mage.Client/src/mage/client/chat/ChatPanel.java b/Mage.Client/src/mage/client/chat/ChatPanel.java index f45db03bd26..4de9abc416a 100644 --- a/Mage.Client/src/mage/client/chat/ChatPanel.java +++ b/Mage.Client/src/mage/client/chat/ChatPanel.java @@ -58,6 +58,8 @@ public class ChatPanel extends javax.swing.JPanel { /** Creates new form ChatPanel */ public ChatPanel() { initComponents(); + jScrollPane1.setOpaque(false); + jScrollPane1.getViewport().setOpaque(false); } public void connect(UUID chatId) { diff --git a/Mage.Client/src/mage/client/game/BattlefieldPanel.java b/Mage.Client/src/mage/client/game/BattlefieldPanel.java index d0b47c54af2..82f83fd4ca5 100644 --- a/Mage.Client/src/mage/client/game/BattlefieldPanel.java +++ b/Mage.Client/src/mage/client/game/BattlefieldPanel.java @@ -39,14 +39,20 @@ import java.awt.Dimension; import java.awt.Rectangle; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; +import java.awt.image.BufferedImage; +import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import java.util.Map.Entry; import java.util.UUID; +import java.util.Map.Entry; + +import javax.imageio.ImageIO; + import mage.client.cards.BigCard; import mage.client.cards.Permanent; import mage.client.util.Config; +import mage.client.util.gui.ImagePanel; import mage.view.PermanentView; /** @@ -101,7 +107,7 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane implements Compon moveToFront(perm); perm.update(permanent); } - + private void groupAttachments(PermanentView permanent) { Permanent perm = permanents.get(permanent.getId()); int position = getPosition(perm); diff --git a/Mage.Client/src/mage/client/game/GamePanel.java b/Mage.Client/src/mage/client/game/GamePanel.java index a56d3097617..0876b821f83 100644 --- a/Mage.Client/src/mage/client/game/GamePanel.java +++ b/Mage.Client/src/mage/client/game/GamePanel.java @@ -38,6 +38,9 @@ import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -54,8 +57,11 @@ import mage.client.dialog.PickChoiceDialog; import mage.client.dialog.ShowCardsDialog; import mage.client.game.FeedbackPanel.FeedbackMode; import mage.client.remote.Session; -import mage.client.util.ArrowBuilder; import mage.client.util.Config; +import mage.client.util.Constants; +import mage.client.util.ImageHelper; +import mage.client.util.gui.ArrowBuilder; +import mage.client.util.gui.ImagePanel; import mage.util.Logging; import mage.view.AbilityPickerView; import mage.view.CardsView; @@ -72,7 +78,6 @@ public class GamePanel extends javax.swing.JPanel { private final static Logger logger = Logging.getLogger(GamePanel.class.getName()); private Map players = new HashMap(); - //private Map players = new HashMap(); private Map exiles = new HashMap(); private UUID gameId; private UUID playerId; @@ -82,28 +87,45 @@ public class GamePanel extends javax.swing.JPanel { public GamePanel() { initComponents(); - // Override layout (I can't edit generated code) - this.setLayout(new BorderLayout()); - final JLayeredPane j = new JLayeredPane(); - j.add(ArrowBuilder.getArrowsPanel(), JLayeredPane.MODAL_LAYER); - j.setSize(1024,768); - //j.setBorder(BorderFactory.createLineBorder(Color.green)); - j.add(jSplitPane1, JLayeredPane.DEFAULT_LAYER); - this.add(j); - - // Enlarge jlayeredpane on resize - addComponentListener(new ComponentAdapter(){ - @Override - public void componentResized(ComponentEvent e) { - int width = ((JComponent)e.getSource()).getWidth(); - int height = ((JComponent)e.getSource()).getHeight(); - j.setSize(width, height); - JPanel arrowsPanel = ArrowBuilder.getArrowsPanelRef(); - if (arrowsPanel != null) arrowsPanel.setSize(width, height); - jSplitPane1.setSize(width, height); - } - }); + //FIXME: remove from here + try { + BufferedImage background = ImageHelper.loadImage("/dk_gray.jpg"); + ImagePanel bgPanel = new ImagePanel(background, ImagePanel.TILED); + + // Override layout (I can't edit generated code) + this.setLayout(new BorderLayout()); + final JLayeredPane j = new JLayeredPane(); + j.add(ArrowBuilder.getArrowsPanel(), JLayeredPane.MODAL_LAYER); + j.setSize(1024,768); + //j.setBorder(BorderFactory.createLineBorder(Color.green)); + //this.add(j); + j.add(jSplitPane1, JLayeredPane.DEFAULT_LAYER); + + jSplitPane1.setOpaque(false); + pnlBattlefield.setOpaque(false); + jPanel3.setOpaque(false); + hand.setOpaque(false); + chatPanel.setOpaque(false); + bgPanel.add(j); + this.add(bgPanel); + // Enlarge jlayeredpane on resize + addComponentListener(new ComponentAdapter(){ + @Override + public void componentResized(ComponentEvent e) { + int width = ((JComponent)e.getSource()).getWidth(); + int height = ((JComponent)e.getSource()).getHeight(); + j.setSize(width, height); + JPanel arrowsPanel = ArrowBuilder.getArrowsPanelRef(); + if (arrowsPanel != null) arrowsPanel.setSize(width, height); + jSplitPane1.setSize(width, height); + } + }); + + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } } public void cleanUp() { diff --git a/Mage.Client/src/mage/client/game/PlayAreaPanel.java b/Mage.Client/src/mage/client/game/PlayAreaPanel.java index 182dc837126..b340b23db3f 100644 --- a/Mage.Client/src/mage/client/game/PlayAreaPanel.java +++ b/Mage.Client/src/mage/client/game/PlayAreaPanel.java @@ -56,6 +56,10 @@ public class PlayAreaPanel extends javax.swing.JPanel { /** Creates new form PlayAreaPanel */ public PlayAreaPanel() { initComponents(); + setOpaque(false); + jScrollPane1.setOpaque(false); + jScrollPane1.getViewport().setOpaque(false); + battlefieldPanel.setOpaque(false); } public PlayAreaPanel(PlayerView player, BigCard bigCard, UUID gameId) { diff --git a/Mage.Client/src/mage/client/util/Constants.java b/Mage.Client/src/mage/client/util/Constants.java index c55c965f150..1daaeed73d0 100644 --- a/Mage.Client/src/mage/client/util/Constants.java +++ b/Mage.Client/src/mage/client/util/Constants.java @@ -28,6 +28,8 @@ package mage.client.util; +import java.io.File; + /** * * @author BetaSteward_at_googlemail.com @@ -66,5 +68,4 @@ public final class Constants { public static final int DAMAGE_MAX_LEFT = 180; public static final double SCALE_FACTOR = 0.5; - } diff --git a/Mage.Client/src/mage/client/util/Arrow.java b/Mage.Client/src/mage/client/util/gui/Arrow.java similarity index 95% rename from Mage.Client/src/mage/client/util/Arrow.java rename to Mage.Client/src/mage/client/util/gui/Arrow.java index 3075bbe315e..ef74111f2e1 100644 --- a/Mage.Client/src/mage/client/util/Arrow.java +++ b/Mage.Client/src/mage/client/util/gui/Arrow.java @@ -1,4 +1,4 @@ -package mage.client.util; +package mage.client.util.gui; import java.awt.AlphaComposite; import java.awt.BorderLayout; diff --git a/Mage.Client/src/mage/client/util/ArrowBuilder.java b/Mage.Client/src/mage/client/util/gui/ArrowBuilder.java similarity index 94% rename from Mage.Client/src/mage/client/util/ArrowBuilder.java rename to Mage.Client/src/mage/client/util/gui/ArrowBuilder.java index 5c9593a7f05..b0fa6ab93d2 100644 --- a/Mage.Client/src/mage/client/util/ArrowBuilder.java +++ b/Mage.Client/src/mage/client/util/gui/ArrowBuilder.java @@ -1,4 +1,4 @@ -package mage.client.util; +package mage.client.util.gui; import java.awt.BorderLayout; import java.awt.Color; diff --git a/Mage.Client/src/mage/client/util/gui/ImagePanel.java b/Mage.Client/src/mage/client/util/gui/ImagePanel.java new file mode 100644 index 00000000000..299d0988baf --- /dev/null +++ b/Mage.Client/src/mage/client/util/gui/ImagePanel.java @@ -0,0 +1,105 @@ +package mage.client.util.gui; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.image.BufferedImage; + +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JViewport; + +@SuppressWarnings("serial") +public class ImagePanel extends JPanel { + public static final int TILED = 0; + public static final int SCALED = 1; + public static final int ACTUAL = 2; + + private BufferedImage image; + private int style; + private float alignmentX = 0.5f; + private float alignmentY = 0.5f; + + public ImagePanel(BufferedImage image) { + this(image, TILED); + } + + public ImagePanel(BufferedImage image, int style) { + this.image = image; + this.style = style; + setLayout(new BorderLayout()); + } + + public void setImageAlignmentX(float alignmentX) { + this.alignmentX = alignmentX > 1.0f ? 1.0f : alignmentX < 0.0f ? 0.0f : alignmentX; + } + + public void setImageAlignmentY(float alignmentY) { + this.alignmentY = alignmentY > 1.0f ? 1.0f : alignmentY < 0.0f ? 0.0f : alignmentY; + + } + + public void add(JComponent component) { + add(component, null); + } + + public void add(JComponent component, Object constraints) { + component.setOpaque(false); + + if (component instanceof JScrollPane) { + JScrollPane scrollPane = (JScrollPane) component; + JViewport viewport = scrollPane.getViewport(); + viewport.setOpaque(false); + Component c = viewport.getView(); + + if (c instanceof JComponent) { + ((JComponent) c).setOpaque(false); + } + } + + super.add(component, constraints); + } + + protected void paintComponent(Graphics g) { + super.paintComponent(g); + + if (image == null) + return; + + switch (style) { + case TILED: + drawTiled(g); + break; + + case SCALED: + Dimension d = getSize(); + g.drawImage(image, 0, 0, d.width, d.height, null); + break; + + case ACTUAL: + drawActual(g); + break; + } + } + + private void drawTiled(Graphics g) { + Dimension d = getSize(); + int width = image.getWidth(null); + int height = image.getHeight(null); + + for (int x = 0; x < d.width; x += width) { + for (int y = 0; y < d.height; y += height) { + g.drawImage(image, x, y, null, null); + } + } + } + + private void drawActual(Graphics g) { + Dimension d = getSize(); + float x = (d.width - image.getWidth()) * alignmentX; + float y = (d.height - image.getHeight()) * alignmentY; + g.drawImage(image, (int) x, (int) y, this); + } +}