diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 927ff9248c..f1e6a9af34 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -34,7 +34,6 @@ package mage.client; -import java.io.FileNotFoundException; import mage.cards.Card; import mage.cards.decks.Deck; import mage.client.cards.CardsStorage; @@ -50,7 +49,6 @@ import mage.client.remote.Session; import mage.client.util.EDTExceptionHandler; import mage.client.util.gui.ArrowBuilder; import mage.components.ImagePanel; -import mage.game.GameException; import mage.util.Logging; import javax.imageio.ImageIO; @@ -70,7 +68,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import java.util.prefs.Preferences; import mage.client.draft.DraftPane; -import mage.sets.Sets; /** * @author BetaSteward_at_googlemail.com @@ -156,6 +153,11 @@ public class MageFrame extends javax.swing.JFrame { addMageLabel(); setAppIcon(); + //PlayerPanelNew n = new PlayerPanelNew(); + //n.setBounds(100,100,100,300); + //n.setVisible(true); + //backgroundPane.add(n); + desktopPane.add(ArrowBuilder.getArrowsPanel(), JLayeredPane.DRAG_LAYER); desktopPane.addComponentListener(new ComponentAdapter() { diff --git a/Mage.Client/src/main/java/mage/client/cards/BigCard.java b/Mage.Client/src/main/java/mage/client/cards/BigCard.java index 71208e84a6..4c1da527b2 100644 --- a/Mage.Client/src/main/java/mage/client/cards/BigCard.java +++ b/Mage.Client/src/main/java/mage/client/cards/BigCard.java @@ -35,6 +35,7 @@ package mage.client.cards; import mage.client.plugins.impl.Plugins; +import mage.client.util.ImageHelper; import mage.client.util.gui.BufferedImageBuilder; import mage.filters.FilterFactory; import mage.filters.impl.HueFilter; @@ -69,9 +70,9 @@ public class BigCard extends JComponent { protected float hue = 0.005f; protected float dh = 0.005f; - static private final int DEFAULT_DELAY_PERIOD = 30; - static private final float LEFT_BOUNDARY = 0.0f; - static private final float RIGHT_BOUNDARY = 1f; + static private final int DEFAULT_DELAY_PERIOD = 50; + static private final float LEFT_BOUNDARY = -0.15f; + static private final float RIGHT_BOUNDARY = 0.15f; public BigCard() { initComponents(); @@ -79,7 +80,6 @@ public class BigCard extends JComponent { initBounds(); } setDoubleBuffered(true); - setOpaque(true); } protected void initBounds() { @@ -252,9 +252,9 @@ public class BigCard extends JComponent { setFocusable(false); setMinimumSize(new Dimension(FRAME_MAX_WIDTH, FRAME_MAX_HEIGHT)); setMaximumSize(new Dimension(FRAME_MAX_WIDTH, FRAME_MAX_HEIGHT)); - setOpaque(false); setPreferredSize(getMinimumSize()); setLayout(null); + //setBackground(new Color(255,255,255,200)); scrollPane.setBorder(null); scrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); @@ -268,6 +268,10 @@ public class BigCard extends JComponent { add(scrollPane); }// </editor-fold>//GEN-END:initComponents + public void setDefaultImage() { + bigImage = ImageHelper.getImageFromResources("/empty.png"); + bigImage = ImageHelper.getResizedImage((BufferedImage) bigImage, getWidth(), getHeight()); + } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JScrollPane scrollPane; diff --git a/Mage.Client/src/main/java/mage/client/cards/Card.java b/Mage.Client/src/main/java/mage/client/cards/Card.java index 7e080ed16c..58596c2e5e 100644 --- a/Mage.Client/src/main/java/mage/client/cards/Card.java +++ b/Mage.Client/src/main/java/mage/client/cards/Card.java @@ -382,8 +382,6 @@ public class Card extends MagePermanent implements MouseMotionListener, MouseLis List<UUID> targets = card.getTargets(); if (targets != null) { for (UUID uuid : targets) { - //System.out.println("Getting play area panel for uuid: " + uuid); - PlayAreaPanel p = session.getGame().getPlayers().get(uuid); if (p != null) { Point target = p.getLocationOnScreen(); diff --git a/Mage.Client/src/main/java/mage/client/cards/Cards.java b/Mage.Client/src/main/java/mage/client/cards/Cards.java index f98722137b..0e9492eebe 100644 --- a/Mage.Client/src/main/java/mage/client/cards/Cards.java +++ b/Mage.Client/src/main/java/mage/client/cards/Cards.java @@ -51,6 +51,10 @@ import mage.view.CardsView; import mage.view.PermanentView; import mage.view.StackAbilityView; +import javax.swing.*; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; + /** * * @author BetaSteward_at_googlemail.com @@ -63,15 +67,29 @@ public class Cards extends javax.swing.JPanel { /** Creates new form Cards */ public Cards() { - initComponents(); + this(false); + } + + public Cards(boolean skipAddingScrollPane) { + initComponents(skipAddingScrollPane); setOpaque(false); - jScrollPane1.setOpaque(false); - jScrollPane1.getViewport().setOpaque(false); - cardArea.setOpaque(false); + cardArea.setOpaque(false); + if (!skipAddingScrollPane) { + jScrollPane1.setOpaque(false); + jScrollPane1.getViewport().setOpaque(false); + } if (Plugins.getInstance().isCardPluginLoaded()) { cardArea.setLayout(null); } - } + } + + public void setBorder(Border border) { + super.setBorder(border); + if (jScrollPane1 != null) { + jScrollPane1.setViewportBorder(border); + jScrollPane1.setBorder(border); + } + } public boolean loadCards(CardsView cardsView, BigCard bigCard, UUID gameId) { boolean changed = false; @@ -157,20 +175,21 @@ public class Cards extends javax.swing.JPanel { */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents - private void initComponents() { - - jScrollPane1 = new javax.swing.JScrollPane(); - cardArea = new javax.swing.JPanel(); - - setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); + private void initComponents(boolean skipAddingScrollPane) { + setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0, 0))); setLayout(new java.awt.BorderLayout()); - jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); + cardArea = new javax.swing.JPanel(); + cardArea.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 0, 0)); - cardArea.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 0, 0)); - jScrollPane1.setViewportView(cardArea); - - add(jScrollPane1, java.awt.BorderLayout.CENTER); + if (skipAddingScrollPane) { + add(cardArea, java.awt.BorderLayout.CENTER); + } else{ + jScrollPane1 = new javax.swing.JScrollPane(); + jScrollPane1.setViewportView(cardArea); + jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); + add(jScrollPane1, java.awt.BorderLayout.CENTER); + } }// </editor-fold>//GEN-END:initComponents @@ -184,10 +203,14 @@ public class Cards extends javax.swing.JPanel { } public void setHScrollSpeed(int unitIncrement) { - jScrollPane1.getHorizontalScrollBar().setUnitIncrement(unitIncrement); + if (jScrollPane1 != null) { + jScrollPane1.getHorizontalScrollBar().setUnitIncrement(unitIncrement); + } } public void setVScrollSpeed(int unitIncrement) { - jScrollPane1.getVerticalScrollBar().setUnitIncrement(unitIncrement); + if (jScrollPane1 != null) { + jScrollPane1.getVerticalScrollBar().setUnitIncrement(unitIncrement); + } } } diff --git a/Mage.Client/src/main/java/mage/client/components/HoverButton.java b/Mage.Client/src/main/java/mage/client/components/HoverButton.java index 83dab1f3a8..ce0176dcd7 100644 --- a/Mage.Client/src/main/java/mage/client/components/HoverButton.java +++ b/Mage.Client/src/main/java/mage/client/components/HoverButton.java @@ -168,4 +168,8 @@ public class HoverButton extends JPanel implements MouseListener { public void changeSelected() { this.isSelected = !this.isSelected; } + + public void setText(String text) { + this.text = text; + } } diff --git a/Mage.Client/src/main/java/mage/client/components/MageRoundPane.java b/Mage.Client/src/main/java/mage/client/components/MageRoundPane.java index 1460445506..867830f25a 100644 --- a/Mage.Client/src/main/java/mage/client/components/MageRoundPane.java +++ b/Mage.Client/src/main/java/mage/client/components/MageRoundPane.java @@ -18,10 +18,10 @@ import javax.swing.JPanel; */ public class MageRoundPane extends JPanel { - private static int X_OFFSET = 30; - private static int Y_OFFSET = 30; + private int X_OFFSET = 30; + private int Y_OFFSET = 30; private BufferedImage shadow = null; - private Color backgroundColor = new Color(255, 255, 255, 220); + private Color backgroundColor = new Color(255, 255, 255, 200); private int alpha = 0; @Override @@ -66,6 +66,14 @@ public class MageRoundPane extends JPanel { g2.dispose(); } + public void setXOffset(int x_offset) { + X_OFFSET = x_offset; + } + + public void setYOffset(int y_offset) { + Y_OFFSET = y_offset; + } + @Override public void setBounds(int x, int y, int width, int height) { super.setBounds(x, y, width, height); diff --git a/Mage.Client/src/main/java/mage/client/components/arcane/ManaSymbols.java b/Mage.Client/src/main/java/mage/client/components/arcane/ManaSymbols.java index 726aecd3f0..832b95fa79 100644 --- a/Mage.Client/src/main/java/mage/client/components/arcane/ManaSymbols.java +++ b/Mage.Client/src/main/java/mage/client/components/arcane/ManaSymbols.java @@ -20,7 +20,7 @@ import java.util.regex.Pattern; public class ManaSymbols { private static final Logger log = Logger.getLogger(ManaSymbols.class); - static private final Map<String, Image> manaImages = new HashMap<String, Image>(); + static private final Map<String, BufferedImage> manaImages = new HashMap<String, BufferedImage>(); static private final Map<String, Image> manaImagesOriginal = new HashMap<String, Image>(); static private final Map<String, Image> setImages = new HashMap<String, Image>(); static private Pattern replaceSymbolsPattern = Pattern.compile("\\{([^}/]*)/?([^}]*)\\}"); @@ -107,6 +107,10 @@ public class ManaSymbols { return manaImagesOriginal.get(symbol); } + static public BufferedImage getManaSymbolImageSmall(String symbol) { + return manaImages.get(symbol); + } + static public Image getSetSymbolImage(String set) { return setImages.get(set); } diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/CollectionViewerPane.java b/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/CollectionViewerPane.java index 3f9946f323..b499405727 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/CollectionViewerPane.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/CollectionViewerPane.java @@ -66,7 +66,7 @@ public class CollectionViewerPane extends MagePane { } private void initComponents(Component container) { - Component component = container != null ? container : collectionViewerPanel; + Component component = container != null ? container : new CollectionViewerPanel(); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); diff --git a/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java b/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java index d892b9b29b..0a2e397cbe 100644 --- a/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java @@ -71,9 +71,7 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane { private BigCard bigCard; private Map<String, JComponent> ui = new HashMap<String, JComponent>(); - protected static DefaultActionCallback defaultCallback = DefaultActionCallback.getInstance(); protected static Map<UUID, PermanentView> battlefield; - protected static Map<UUID, Integer> attachmentCache = new HashMap<UUID, Integer>(); protected static List<Thread> threads = new ArrayList<Thread>(); /** Creates new form BattlefieldPanel */ @@ -277,8 +275,8 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane { // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { - setBackground(java.awt.Color.gray); - setForeground(java.awt.Color.gray); + //setBackground(java.awt.Color.gray); + //setForeground(java.awt.Color.gray); setOpaque(true); }// </editor-fold>//GEN-END:initComponents diff --git a/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java b/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java index 6301ec81bc..5f5eafff38 100644 --- a/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java @@ -187,7 +187,7 @@ public class FeedbackPanel extends javax.swing.JPanel { lblMessage = new MageTextArea(); btnSpecial = new javax.swing.JButton(); - setBackground(new java.awt.Color(204, 204, 204)); + setBackground(new java.awt.Color(255,255,255,200)); btnRight.setText("Cancel"); btnRight.addActionListener(new java.awt.event.ActionListener() { diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index 1ea8122052..6b6be4b863 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -34,9 +34,7 @@ package mage.client.game; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.GridBagConstraints; +import java.awt.*; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.util.HashMap; @@ -46,12 +44,14 @@ import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; -import javax.swing.JComponent; -import javax.swing.JLayeredPane; -import javax.swing.JOptionPane; -import javax.swing.JPanel; +import javax.swing.*; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; +import javax.swing.border.LineBorder; import mage.client.MageFrame; +import mage.client.cards.Cards; +import mage.client.deckeditor.collection.viewer.MageBook; import mage.client.dialog.ExileZoneDialog; import mage.client.dialog.PickChoiceDialog; import mage.client.dialog.ShowCardsDialog; @@ -225,7 +225,7 @@ public class GamePanel extends javax.swing.JPanel { } } PlayerView player = game.getPlayers().get(playerSeat); - PlayAreaPanel sessionPlayer = new PlayAreaPanel(player, bigCard, gameId); + PlayAreaPanel sessionPlayer = new PlayAreaPanel(player, bigCard, gameId, true); players.put(player.getPlayerId(), sessionPlayer); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; @@ -252,7 +252,7 @@ public class GamePanel extends javax.swing.JPanel { col = numColumns - 1; } player = game.getPlayers().get(playerNum); - PlayAreaPanel playerPanel = new PlayAreaPanel(player, bigCard, gameId); + PlayAreaPanel playerPanel = new PlayAreaPanel(player, bigCard, gameId, false); players.put(player.getPlayerId(), playerPanel); c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; @@ -271,10 +271,13 @@ public class GamePanel extends javax.swing.JPanel { } public synchronized void updateGame(GameView game) { - if (playerId == null || game.getHand() == null) + if (playerId == null || game.getHand() == null) { this.hand.setVisible(false); - else + } else { this.hand.loadCards(game.getHand(), bigCard, gameId); + int count = game.getHand().size(); + hand.setPreferredSize(new java.awt.Dimension((Config.dimensions.frameWidth + 5) * count + 5, Config.dimensions.frameHeight + 20)); // for scroll + } if (game.getPhase() != null) this.txtPhase.setText(game.getPhase().toString()); else @@ -447,7 +450,7 @@ public class GamePanel extends javax.swing.JPanel { btnPreviousPlay = new javax.swing.JButton(); btnNextPlay = new javax.swing.JButton(); pnlBattlefield = new javax.swing.JPanel(); - hand = new mage.client.cards.Cards(); + hand = new mage.client.cards.Cards(true); chatPanel = new mage.client.chat.ChatPanel(); jSplitPane1.setBorder(null); @@ -455,8 +458,9 @@ public class GamePanel extends javax.swing.JPanel { jSplitPane1.setResizeWeight(1.0); jSplitPane1.setOneTouchExpandable(true); jSplitPane1.setMinimumSize(new java.awt.Dimension(26, 48)); - - pnlGameInfo.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jSplitPane1.setDividerLocation(Integer.MAX_VALUE); + //pnlGameInfo.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + pnlGameInfo.setOpaque(false); lblPhase.setLabelFor(txtPhase); lblPhase.setText("Phase:"); @@ -497,6 +501,8 @@ public class GamePanel extends javax.swing.JPanel { feedbackPanel.setMaximumSize(new java.awt.Dimension(208, 121)); feedbackPanel.setMinimumSize(new java.awt.Dimension(208, 121)); + bigCard.setBorder(new LineBorder(Color.black, 1, true)); + btnConcede.setText("Concede"); btnConcede.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -556,44 +562,44 @@ public class GamePanel extends javax.swing.JPanel { javax.swing.GroupLayout pnlGameInfoLayout = new javax.swing.GroupLayout(pnlGameInfo); pnlGameInfo.setLayout(pnlGameInfoLayout); pnlGameInfoLayout.setHorizontalGroup( - pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(pnlGameInfoLayout.createSequentialGroup() - .addContainerGap() - .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lblPriority) - .addComponent(lblPhase) - .addComponent(lblStep) - .addComponent(lblTurn) - .addComponent(lblActivePlayer)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(txtActivePlayer, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) - .addComponent(txtPriority, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) - .addComponent(txtTurn, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) - .addComponent(txtStep, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) - .addComponent(txtPhase, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)) - .addContainerGap()) - .addGroup(pnlGameInfoLayout.createSequentialGroup() - .addGap(10, 10, 10) - .addComponent(btnConcede) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnStopWatching) - .addContainerGap(62, Short.MAX_VALUE)) - .addComponent(bigCard, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE) - .addComponent(feedbackPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE) - .addComponent(stack, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE) - .addGroup(pnlGameInfoLayout.createSequentialGroup() - .addContainerGap() - .addComponent(pnlReplay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(51, Short.MAX_VALUE)) - ); + pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + /*.addGroup(pnlGameInfoLayout.createSequentialGroup() + .addContainerGap() + .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblPriority) + .addComponent(lblPhase) + .addComponent(lblStep) + .addComponent(lblTurn) + .addComponent(lblActivePlayer)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtActivePlayer, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) + .addComponent(txtPriority, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) + .addComponent(txtTurn, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) + .addComponent(txtStep, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) + .addComponent(txtPhase, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)) + .addContainerGap())*/ + .addGroup(pnlGameInfoLayout.createSequentialGroup() + .addGap(10, 10, 10) + .addComponent(btnConcede) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnStopWatching) + .addContainerGap(62, Short.MAX_VALUE)) + .addComponent(bigCard, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE) + .addComponent(feedbackPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE) + .addComponent(stack, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE) + .addGroup(pnlGameInfoLayout.createSequentialGroup() + .addContainerGap() + .addComponent(pnlReplay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(51, Short.MAX_VALUE)) + ); pnlGameInfoLayout.setVerticalGroup( pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlGameInfoLayout.createSequentialGroup() .addComponent(bigCard, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(1, 1, 1) .addComponent(feedbackPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(7, 7, 7) + /*.addGap(7, 7, 7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblPhase) @@ -615,7 +621,8 @@ public class GamePanel extends javax.swing.JPanel { .addComponent(lblPriority) .addComponent(txtPriority, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(stack, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + */ + .addComponent(stack, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 164, Short.MAX_VALUE) .addComponent(pnlReplay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -626,7 +633,9 @@ public class GamePanel extends javax.swing.JPanel { pnlBattlefield.setLayout(new java.awt.GridBagLayout()); - hand.setPreferredSize(new java.awt.Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight + 25)); + //hand.setPreferredSize(new java.awt.Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight + 20)); // for scroll + hand.setBorder(emptyBorder); + HandContainer handContainer = new HandContainer(hand); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); @@ -636,15 +645,16 @@ public class GamePanel extends javax.swing.JPanel { .addComponent(pnlGameInfo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(hand, javax.swing.GroupLayout.DEFAULT_SIZE, 715, Short.MAX_VALUE) - .addComponent(pnlBattlefield, javax.swing.GroupLayout.DEFAULT_SIZE, 715, Short.MAX_VALUE))) + .addComponent(handContainer, javax.swing.GroupLayout.DEFAULT_SIZE, 715, Short.MAX_VALUE) + .addComponent(pnlBattlefield, javax.swing.GroupLayout.DEFAULT_SIZE, 715, Short.MAX_VALUE) + )) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addComponent(pnlBattlefield, javax.swing.GroupLayout.DEFAULT_SIZE, 794, Short.MAX_VALUE) .addGap(0, 0, 0) - .addComponent(hand, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(handContainer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(pnlGameInfo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); @@ -664,6 +674,13 @@ public class GamePanel extends javax.swing.JPanel { layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 798, Short.MAX_VALUE) ); + + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + bigCard.setDefaultImage(); + } + }); } private void btnConcedeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnConcedeActionPerformed @@ -692,6 +709,39 @@ public class GamePanel extends javax.swing.JPanel { session.previousPlay(); }//GEN-LAST:event_btnPreviousPlayActionPerformed + private class HandContainer extends JPanel { + + public HandContainer(Cards hand) { + super(); + initComponents(hand); + } + + public void initComponents(Cards hand) { + jPanel = new JPanel(); + jScrollPane1 = new JScrollPane(jPanel); + jScrollPane1.getViewport().setBackground(new Color(0,0,0,0)); + + jPanel.setLayout(new GridBagLayout()); // centers hand + jPanel.setBackground(new Color(0,0,0,0)); + jPanel.add(hand); + + setOpaque(false); + jPanel.setOpaque(false); + jScrollPane1.setOpaque(false); + + jPanel.setBorder(emptyBorder); + jScrollPane1.setBorder(emptyBorder); + jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); + jScrollPane1.getHorizontalScrollBar().setUnitIncrement(8); + + setLayout(new java.awt.BorderLayout()); + add(jScrollPane1, java.awt.BorderLayout.CENTER); + } + + private JPanel jPanel; + private javax.swing.JScrollPane jScrollPane1; + } + // Variables declaration - do not modify//GEN-BEGIN:variables private mage.client.game.AbilityPicker abilityPicker; private mage.client.cards.BigCard bigCard; @@ -721,4 +771,5 @@ public class GamePanel extends javax.swing.JPanel { private javax.swing.JLabel txtTurn; // End of variables declaration//GEN-END:variables + private Border emptyBorder = new EmptyBorder(0,0,0,0); } diff --git a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java index e73831fb5f..391e340d65 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java @@ -34,18 +34,22 @@ package mage.client.game; +import java.awt.*; import java.io.FileNotFoundException; import java.io.IOException; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; -import mage.cards.decks.DeckCardLists; import mage.client.MageFrame; import mage.client.cards.BigCard; import mage.sets.Sets; import mage.view.PlayerView; +import javax.swing.*; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; + /** * * @author BetaSteward_at_googlemail.com @@ -56,16 +60,17 @@ public class PlayAreaPanel extends javax.swing.JPanel { UUID gameId; /** Creates new form PlayAreaPanel */ - public PlayAreaPanel() { - initComponents(); - setOpaque(false); + public PlayAreaPanel(boolean me) { + initComponents(me); + setOpaque(false); + jPanel1.setOpaque(false); jScrollPane1.setOpaque(false); jScrollPane1.getViewport().setOpaque(false); battlefieldPanel.setOpaque(false); - } + } - public PlayAreaPanel(PlayerView player, BigCard bigCard, UUID gameId) { - this(); + public PlayAreaPanel(PlayerView player, BigCard bigCard, UUID gameId, boolean me) { + this(me); init(player, bigCard, gameId); update(player); } @@ -85,7 +90,6 @@ public class PlayAreaPanel extends javax.swing.JPanel { public void update(PlayerView player) { this.playerPanel.update(player); - this.manaPool.update(player.getManaPool()); this.battlefieldPanel.update(player.getBattlefield()); } @@ -100,16 +104,17 @@ public class PlayAreaPanel extends javax.swing.JPanel { */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents - private void initComponents() { - + private void initComponents(boolean me) { + setBorder(BorderFactory.createLineBorder(new Color(0,0,0,0))); jPanel1 = new javax.swing.JPanel(); - playerPanel = new mage.client.game.PlayerPanel(); - manaPool = new mage.client.game.ManaPool(); + playerPanel = new PlayerPanelExt(me); + playerPanel.setPreferredSize(new Dimension(92, 250)); + //manaPool = new mage.client.game.ManaPool(); btnCheat = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); battlefieldPanel = new mage.client.game.BattlefieldPanel(jScrollPane1); - jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); + //jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); btnCheat.setText("Cheat"); btnCheat.addActionListener(new java.awt.event.ActionListener() { @@ -118,26 +123,29 @@ public class PlayAreaPanel extends javax.swing.JPanel { } }); - javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(manaPool, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE) + //.addComponent(manaPool, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE) .addComponent(playerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnCheat, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE) + //.addComponent(btnCheat, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(playerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, 0) - .addComponent(manaPool, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 17, Short.MAX_VALUE) - .addComponent(btnCheat)) + //.addGap(0, 0, 0) + //.addComponent(manaPool, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + //.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 17, Short.MAX_VALUE) + //.addComponent(btnCheat) + ) ); jScrollPane1.setViewportView(battlefieldPanel); + Border empty = new EmptyBorder(0,0,0,0); + jScrollPane1.setBorder(empty); + jScrollPane1.setViewportBorder(empty); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); @@ -146,11 +154,12 @@ public class PlayAreaPanel extends javax.swing.JPanel { .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 357, Short.MAX_VALUE)) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 357, Short.MAX_VALUE) + ) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 250, Short.MAX_VALUE) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); }// </editor-fold>//GEN-END:initComponents @@ -170,8 +179,8 @@ public class PlayAreaPanel extends javax.swing.JPanel { private javax.swing.JButton btnCheat; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; - private mage.client.game.ManaPool manaPool; - private mage.client.game.PlayerPanel playerPanel; + //private mage.client.game.ManaPool manaPool; + private PlayerPanelExt playerPanel; // End of variables declaration//GEN-END:variables } diff --git a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java new file mode 100644 index 0000000000..5add0f773a --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java @@ -0,0 +1,320 @@ +/* +* 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. +*/ + +/* + * PlayerPanel.java + * + * Created on Nov 18, 2009, 3:01:31 PM + */ + +package mage.client.game; + +import mage.client.MageFrame; +import mage.client.cards.BigCard; +import mage.client.components.HoverButton; +import mage.client.components.MageRoundPane; +import mage.client.components.arcane.GlowText; +import mage.client.components.arcane.ManaSymbols; +import mage.client.components.arcane.UI; +import mage.client.dialog.ShowCardsDialog; +import mage.client.remote.Session; +import mage.client.util.Command; +import mage.client.util.Config; +import mage.client.util.ImageHelper; +import mage.client.util.gui.BufferedImageBuilder; +import mage.client.util.gui.ImageResizeUtil; +import mage.components.ImagePanel; +import mage.sets.Sets; +import mage.view.ManaPoolView; +import mage.view.PlayerView; + +import javax.imageio.ImageIO; +import javax.swing.*; +import javax.swing.border.Border; +import javax.swing.border.LineBorder; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.image.BufferedImage; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import java.util.UUID; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Enhanced player pane. + * + * @author nantuko + */ +public class PlayerPanelExt extends javax.swing.JPanel { + + private UUID playerId; + private UUID gameId; + private Session session; + private PlayerView player; + + private ShowCardsDialog graveyard; + private BigCard bigCard; + + private static final int AVATAR_COUNT = 77; + + private static final Border greenBorder = new LineBorder(Color.green, 2); + private static final Border redBorder = new LineBorder(Color.red, 2); + private static final Border emptyBorder = BorderFactory.createEmptyBorder(0,0,0,0); + + /** Creates new form PlayerPanel */ + public PlayerPanelExt(boolean me) { + initComponents(me); + } + + public void init(UUID gameId, UUID playerId, BigCard bigCard) { + this.gameId = gameId; + this.playerId = playerId; + this.bigCard = bigCard; + session = MageFrame.getSession(); + } + + public void update(PlayerView player) { + this.player = player; + lifeLabel.setText(Integer.toString(player.getLife())); + handLabel.setText(Integer.toString(player.getHandCount())); + libraryLabel.setText(Integer.toString(player.getLibraryCount())); + graveLabel.setText(Integer.toString(player.getGraveyard().size())); + + this.avatar.setText(player.getName()); + if (player.isActive()) { + this.avatar.setBorder(greenBorder); + } else if (player.hasLeft()) { + this.avatar.setBorder(redBorder); + } else { + this.avatar.setBorder(emptyBorder); + } + + update(player.getManaPool()); + } + + protected void update(ManaPoolView pool) { + manaLabels.get("B").setText(Integer.toString(pool.getBlack())); + manaLabels.get("R").setText(Integer.toString(pool.getRed())); + manaLabels.get("W").setText(Integer.toString(pool.getWhite())); + manaLabels.get("G").setText(Integer.toString(pool.getGreen())); + manaLabels.get("U").setText(Integer.toString(pool.getBlue())); + manaLabels.get("X").setText(Integer.toString(pool.getColorless())); + } + + /** 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") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents(boolean me) { + setLayout(null); + setOpaque(false); + + MageRoundPane panelBackground = new MageRoundPane(); + panelBackground.setXOffset(3); + panelBackground.setYOffset(3); + panelBackground.setLayout(null); + panelBackground.setVisible(true); + panelBackground.setBounds(0, 0, 92, 250); + add(panelBackground); + + Rectangle r = new Rectangle(80, 80); + Random rand = new Random(); + Integer index = me ? 51 : rand.nextInt(AVATAR_COUNT) + 1; + if (index == 64 || index == 65) { + index += 2; + } + Image image = ImageHelper.getImageFromResources("/avatars/face" + index + ".jpg"); + + // Avatar + BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + avatar = new HoverButton("player", resized, resized, resized, r); + avatar.setBounds(6, 6, r.width, r.height); + panelBackground.add(avatar); + avatar.setObserver(new Command() { + @Override + public void execute() { + session.sendPlayerUUID(gameId, playerId); + } + }); + + // Life count + lifeLabel = new JLabel(); + lifeLabel.setBounds(30, 82, 30, 30); + r = new Rectangle(18, 18); + life = (ImagePanel)addParam(panelBackground, "Life", lifeLabel, r, "/info/life.png", false); + life.setBounds(9, 90, r.width, r.height); + + // Hand count + handLabel = new JLabel(); + handLabel.setBounds(70, 82, 50, 30); + r = new Rectangle(18, 18); + hand = (ImagePanel)addParam(panelBackground, "Hand", handLabel, r, "/info/hand.png", false); + hand.setBounds(48, 90, r.width, r.height); + + // Poison count + poisonLabel = new JLabel(); + poisonLabel.setText("0"); + poisonLabel.setBounds(30, 112, 20, 20); + //poisonLabel.setBorder(greenBorder); + r = new Rectangle(14, 14); + poison = (ImagePanel)addParam(panelBackground, "Poison", poisonLabel, r, "/info/poison.png", false); + poison.setBounds(12, 116, r.width, r.height); + + // Library count + libraryLabel = new JLabel(); + libraryLabel.setBounds(70, 107, 30, 30); + r = new Rectangle(19, 19); + library = (ImagePanel)addParam(panelBackground, "Library", libraryLabel, r, "/info/library.png", false); + library.setBounds(48, 113, r.width, r.height); + + // Grave count and open graveyard button + graveLabel = new JLabel(); + r = new Rectangle(21, 21); + graveLabel.setBounds(35, 250 - r.height - 5, r.width, r.height); + grave = (HoverButton)addParam(panelBackground, "Graveyard", graveLabel, r, "/info/grave.png", true); + grave.setBounds(9, 250 - r.height - 5, r.width, r.height); + grave.setObserver(new Command() { + @Override + public void execute() { + btnGraveActionPerformed(null); + } + }); + + // Cheat button + r = new Rectangle(25, 21); + image = ImageHelper.getImageFromResources("/info/cheat.png"); + resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + cheat = new JButton(); + cheat.setIcon(new ImageIcon(resized)); + panelBackground.add(cheat); + cheat.setBounds(55, 250 - r.height - 5, r.width, r.height); + cheat.setToolTipText("Cheat button"); + cheat.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + btnCheatActionPerformed(e); + } + }); + + // Add mana symbols + addManaImagePanel("W", new Rectangle(11, 140, 15, 15), panelBackground); + addManaImagePanel("U", new Rectangle(11, 160, 15, 15), panelBackground); + addManaImagePanel("B", new Rectangle(11, 180, 15, 15), panelBackground); + addManaImagePanel("R", new Rectangle(50, 140, 15, 15), panelBackground); + addManaImagePanel("G", new Rectangle(50, 160, 15, 15), panelBackground); + addManaImagePanel("X", new Rectangle(50, 180, 15, 15), panelBackground); + } + + private void addManaImagePanel(String mana, Rectangle rect, JPanel container) { + BufferedImage imageMana = ManaSymbols.getManaSymbolImageSmall(mana); + if (imageMana != null) { + ImagePanel manaB = new ImagePanel(imageMana, ImagePanel.ACTUAL); + manaB.setBounds(rect.x, rect.y, rect.width, rect.height); + manaB.setOpaque(false); + container.add(manaB); + } + JLabel manaCountLabel = new JLabel(); + manaCountLabel.setText("0"); + manaCountLabel.setBounds(rect.x + rect.width + 5, rect.y - 8, 30, 30); + container.add(manaCountLabel); + manaLabels.put(mana, manaCountLabel); + } + + /** + * Adds image panel and label to the container panel. + * + * @param containerPanel + * @param text + * @param r + * @param imagePath + * @return + */ + private JComponent addParam(JPanel containerPanel, String tooltip, JLabel text, Rectangle r, String imagePath, boolean isButton) { + if (text != null) { + text.setForeground(Color.black); + containerPanel.add(text); + text.setToolTipText(tooltip); + } + + Image image = ImageHelper.getImageFromResources(imagePath); + BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + JComponent component = null; + if (isButton) { + component = new HoverButton(null, resized, resized, resized, r); + } else { + component = new ImagePanel(resized, ImagePanel.ACTUAL); + } + component.setToolTipText(tooltip); + component.setOpaque(false); + containerPanel.add(component); + + return component; + } + + private void btnGraveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGraveActionPerformed + if (graveyard == null) { + graveyard = new ShowCardsDialog(); + } + graveyard.loadCards(player.getName() + " graveyard", player.getGraveyard(), bigCard, Config.dimensions, gameId, false); + } + + private void btnCheatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCheatActionPerformed + try { + session.cheat(gameId, playerId, Sets.loadDeck("cheat.dck")); + } catch (FileNotFoundException ex) { + Logger.getLogger(PlayAreaPanel.class.getName()).log(Level.SEVERE, null, ex); + } catch (IOException ex) { + Logger.getLogger(PlayAreaPanel.class.getName()).log(Level.SEVERE, null, ex); + } + } + + private HoverButton avatar; + private ImagePanel life; + private ImagePanel poison; + private ImagePanel hand; + private HoverButton grave; + private ImagePanel library; + private JButton cheat; + + private JLabel lifeLabel; + private JLabel handLabel; + private JLabel libraryLabel; + private JLabel poisonLabel; + private JLabel graveLabel; + + private Map<String, JLabel> manaLabels = new HashMap<String, JLabel>(); +} diff --git a/Mage.Client/src/main/java/mage/client/util/ImageHelper.java b/Mage.Client/src/main/java/mage/client/util/ImageHelper.java index 06f09367b8..75b77b35d3 100644 --- a/Mage.Client/src/main/java/mage/client/util/ImageHelper.java +++ b/Mage.Client/src/main/java/mage/client/util/ImageHelper.java @@ -39,6 +39,8 @@ import java.awt.image.ImageObserver; import java.awt.image.MemoryImageSource; import java.awt.image.PixelGrabber; import java.io.File; +import java.io.IOException; +import java.io.InputStream; import java.util.HashMap; import java.util.List; @@ -47,6 +49,7 @@ import javax.imageio.ImageIO; import mage.Constants.CardType; import mage.Constants.Rarity; import mage.cards.CardDimensions; +import mage.client.components.arcane.UI; import mage.sets.Sets; import mage.view.AbilityView; import mage.view.CardView; @@ -311,4 +314,24 @@ public class ImageHelper { return image; } + /** + * Get image using relative path in resources. + * @param path + * @return + */ + public static Image getImageFromResources(String path) { + InputStream stream; + stream = UI.class.getResourceAsStream(path); + if (stream == null) { + throw new IllegalArgumentException("Couldn't find image in resources: " + path); + } + + try { + BufferedImage image = ImageIO.read(stream); + return image; + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } } diff --git a/Mage.Client/src/main/resources/avatars/Face4.jpg b/Mage.Client/src/main/resources/avatars/Face4.jpg new file mode 100644 index 0000000000..0a8af4a001 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/Face4.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/Face40.jpg b/Mage.Client/src/main/resources/avatars/Face40.jpg new file mode 100644 index 0000000000..6d97742c9c Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/Face40.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/Face41.jpg b/Mage.Client/src/main/resources/avatars/Face41.jpg new file mode 100644 index 0000000000..294a331992 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/Face41.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/Face42.jpg b/Mage.Client/src/main/resources/avatars/Face42.jpg new file mode 100644 index 0000000000..175fb031a9 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/Face42.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/Face43.jpg b/Mage.Client/src/main/resources/avatars/Face43.jpg new file mode 100644 index 0000000000..d7a0a72099 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/Face43.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/Face44.jpg b/Mage.Client/src/main/resources/avatars/Face44.jpg new file mode 100644 index 0000000000..8660ba9d7c Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/Face44.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/Face45.jpg b/Mage.Client/src/main/resources/avatars/Face45.jpg new file mode 100644 index 0000000000..ca7b4a77d7 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/Face45.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/Face46.jpg b/Mage.Client/src/main/resources/avatars/Face46.jpg new file mode 100644 index 0000000000..bd1a3697f0 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/Face46.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/Face47.jpg b/Mage.Client/src/main/resources/avatars/Face47.jpg new file mode 100644 index 0000000000..696a329643 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/Face47.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/Face48.jpg b/Mage.Client/src/main/resources/avatars/Face48.jpg new file mode 100644 index 0000000000..cca49574b9 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/Face48.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face1.jpg b/Mage.Client/src/main/resources/avatars/face1.jpg new file mode 100644 index 0000000000..b5d8e51e3c Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face1.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face10.jpg b/Mage.Client/src/main/resources/avatars/face10.jpg new file mode 100644 index 0000000000..fb5b274464 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face10.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face11.jpg b/Mage.Client/src/main/resources/avatars/face11.jpg new file mode 100644 index 0000000000..39f0d2ec2a Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face11.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face12.jpg b/Mage.Client/src/main/resources/avatars/face12.jpg new file mode 100644 index 0000000000..a6e77ef670 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face12.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face13.jpg b/Mage.Client/src/main/resources/avatars/face13.jpg new file mode 100644 index 0000000000..2b665f235a Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face13.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face14.jpg b/Mage.Client/src/main/resources/avatars/face14.jpg new file mode 100644 index 0000000000..d57f3963ee Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face14.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face15.jpg b/Mage.Client/src/main/resources/avatars/face15.jpg new file mode 100644 index 0000000000..af26ef211e Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face15.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face16.jpg b/Mage.Client/src/main/resources/avatars/face16.jpg new file mode 100644 index 0000000000..592532ab86 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face16.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face17.jpg b/Mage.Client/src/main/resources/avatars/face17.jpg new file mode 100644 index 0000000000..28c0045ab6 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face17.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face18.jpg b/Mage.Client/src/main/resources/avatars/face18.jpg new file mode 100644 index 0000000000..a3ead31b07 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face18.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face19.jpg b/Mage.Client/src/main/resources/avatars/face19.jpg new file mode 100644 index 0000000000..b08ae1c24a Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face19.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face2.jpg b/Mage.Client/src/main/resources/avatars/face2.jpg new file mode 100644 index 0000000000..4ea232eb1f Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face2.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face20.jpg b/Mage.Client/src/main/resources/avatars/face20.jpg new file mode 100644 index 0000000000..4567f2e756 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face20.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face21.jpg b/Mage.Client/src/main/resources/avatars/face21.jpg new file mode 100644 index 0000000000..32dfabedeb Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face21.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face22.jpg b/Mage.Client/src/main/resources/avatars/face22.jpg new file mode 100644 index 0000000000..e45b888a9e Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face22.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face23.jpg b/Mage.Client/src/main/resources/avatars/face23.jpg new file mode 100644 index 0000000000..d7fcc94512 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face23.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face24.jpg b/Mage.Client/src/main/resources/avatars/face24.jpg new file mode 100644 index 0000000000..4d27da5242 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face24.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face25.jpg b/Mage.Client/src/main/resources/avatars/face25.jpg new file mode 100644 index 0000000000..75b41b0ce6 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face25.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face26.jpg b/Mage.Client/src/main/resources/avatars/face26.jpg new file mode 100644 index 0000000000..0374b6e362 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face26.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face27.jpg b/Mage.Client/src/main/resources/avatars/face27.jpg new file mode 100644 index 0000000000..79300af382 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face27.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face28.jpg b/Mage.Client/src/main/resources/avatars/face28.jpg new file mode 100644 index 0000000000..866c2e0a33 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face28.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face29.jpg b/Mage.Client/src/main/resources/avatars/face29.jpg new file mode 100644 index 0000000000..12905b63ec Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face29.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face3.jpg b/Mage.Client/src/main/resources/avatars/face3.jpg new file mode 100644 index 0000000000..4f675de415 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face3.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face30.jpg b/Mage.Client/src/main/resources/avatars/face30.jpg new file mode 100644 index 0000000000..d02ccd4c29 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face30.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face31.jpg b/Mage.Client/src/main/resources/avatars/face31.jpg new file mode 100644 index 0000000000..2827794088 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face31.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face32.jpg b/Mage.Client/src/main/resources/avatars/face32.jpg new file mode 100644 index 0000000000..34a2e5ebf9 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face32.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face33.jpg b/Mage.Client/src/main/resources/avatars/face33.jpg new file mode 100644 index 0000000000..67cb83e148 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face33.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face34.jpg b/Mage.Client/src/main/resources/avatars/face34.jpg new file mode 100644 index 0000000000..ce06973f9e Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face34.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face35.jpg b/Mage.Client/src/main/resources/avatars/face35.jpg new file mode 100644 index 0000000000..d7d3a797e8 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face35.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face36.jpg b/Mage.Client/src/main/resources/avatars/face36.jpg new file mode 100644 index 0000000000..f573344de5 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face36.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face37.jpg b/Mage.Client/src/main/resources/avatars/face37.jpg new file mode 100644 index 0000000000..261a2b6fea Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face37.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face38.jpg b/Mage.Client/src/main/resources/avatars/face38.jpg new file mode 100644 index 0000000000..88b302e239 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face38.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face39.jpg b/Mage.Client/src/main/resources/avatars/face39.jpg new file mode 100644 index 0000000000..bbffc049ee Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face39.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face49.jpg b/Mage.Client/src/main/resources/avatars/face49.jpg new file mode 100644 index 0000000000..36185fa970 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face49.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face5.jpg b/Mage.Client/src/main/resources/avatars/face5.jpg new file mode 100644 index 0000000000..a5c6fd6656 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face5.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face50.jpg b/Mage.Client/src/main/resources/avatars/face50.jpg new file mode 100644 index 0000000000..30dfaaad5a Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face50.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face51.jpg b/Mage.Client/src/main/resources/avatars/face51.jpg new file mode 100644 index 0000000000..7ce97fc81e Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face51.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face52.jpg b/Mage.Client/src/main/resources/avatars/face52.jpg new file mode 100644 index 0000000000..12c2a87b7b Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face52.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face53.jpg b/Mage.Client/src/main/resources/avatars/face53.jpg new file mode 100644 index 0000000000..64459f6171 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face53.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face54.jpg b/Mage.Client/src/main/resources/avatars/face54.jpg new file mode 100644 index 0000000000..8973c9221b Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face54.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face55.jpg b/Mage.Client/src/main/resources/avatars/face55.jpg new file mode 100644 index 0000000000..04dd6f3092 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face55.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face56.jpg b/Mage.Client/src/main/resources/avatars/face56.jpg new file mode 100644 index 0000000000..dad096e692 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face56.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face57.jpg b/Mage.Client/src/main/resources/avatars/face57.jpg new file mode 100644 index 0000000000..40afffd355 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face57.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face58.jpg b/Mage.Client/src/main/resources/avatars/face58.jpg new file mode 100644 index 0000000000..d8be90b83b Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face58.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face59.jpg b/Mage.Client/src/main/resources/avatars/face59.jpg new file mode 100644 index 0000000000..2a3ccb2732 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face59.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face6.jpg b/Mage.Client/src/main/resources/avatars/face6.jpg new file mode 100644 index 0000000000..68b2b33864 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face6.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face60.jpg b/Mage.Client/src/main/resources/avatars/face60.jpg new file mode 100644 index 0000000000..c220ff14c6 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face60.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face61.jpg b/Mage.Client/src/main/resources/avatars/face61.jpg new file mode 100644 index 0000000000..b81672826a Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face61.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face62.jpg b/Mage.Client/src/main/resources/avatars/face62.jpg new file mode 100644 index 0000000000..e41517cd7e Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face62.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face63.jpg b/Mage.Client/src/main/resources/avatars/face63.jpg new file mode 100644 index 0000000000..3b2f2ba439 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face63.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face64.jpg b/Mage.Client/src/main/resources/avatars/face64.jpg new file mode 100644 index 0000000000..4c93f5d8c3 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face64.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face65.jpg b/Mage.Client/src/main/resources/avatars/face65.jpg new file mode 100644 index 0000000000..25a99efcfc Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face65.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face66.jpg b/Mage.Client/src/main/resources/avatars/face66.jpg new file mode 100644 index 0000000000..c0c21c014c Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face66.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face67.jpg b/Mage.Client/src/main/resources/avatars/face67.jpg new file mode 100644 index 0000000000..522ceac801 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face67.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face68.jpg b/Mage.Client/src/main/resources/avatars/face68.jpg new file mode 100644 index 0000000000..7c3b98b2a6 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face68.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face69.jpg b/Mage.Client/src/main/resources/avatars/face69.jpg new file mode 100644 index 0000000000..c8580d6f1d Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face69.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face7.jpg b/Mage.Client/src/main/resources/avatars/face7.jpg new file mode 100644 index 0000000000..54920cec76 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face7.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face70.jpg b/Mage.Client/src/main/resources/avatars/face70.jpg new file mode 100644 index 0000000000..6988b55105 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face70.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face71.jpg b/Mage.Client/src/main/resources/avatars/face71.jpg new file mode 100644 index 0000000000..3ba5e5f9b9 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face71.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face72.jpg b/Mage.Client/src/main/resources/avatars/face72.jpg new file mode 100644 index 0000000000..ee79324b94 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face72.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face73.jpg b/Mage.Client/src/main/resources/avatars/face73.jpg new file mode 100644 index 0000000000..4f0f5bf289 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face73.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face74.jpg b/Mage.Client/src/main/resources/avatars/face74.jpg new file mode 100644 index 0000000000..f40c784576 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face74.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face75.jpg b/Mage.Client/src/main/resources/avatars/face75.jpg new file mode 100644 index 0000000000..cf70d9b85e Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face75.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face76.jpg b/Mage.Client/src/main/resources/avatars/face76.jpg new file mode 100644 index 0000000000..ccf1d720b6 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face76.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face77.jpg b/Mage.Client/src/main/resources/avatars/face77.jpg new file mode 100644 index 0000000000..531577d149 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face77.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face8.jpg b/Mage.Client/src/main/resources/avatars/face8.jpg new file mode 100644 index 0000000000..a1c27b8b62 Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face8.jpg differ diff --git a/Mage.Client/src/main/resources/avatars/face9.jpg b/Mage.Client/src/main/resources/avatars/face9.jpg new file mode 100644 index 0000000000..04dbda246a Binary files /dev/null and b/Mage.Client/src/main/resources/avatars/face9.jpg differ diff --git a/Mage.Client/src/main/resources/empty.png b/Mage.Client/src/main/resources/empty.png new file mode 100644 index 0000000000..b4acd98630 Binary files /dev/null and b/Mage.Client/src/main/resources/empty.png differ diff --git a/Mage.Client/src/main/resources/info/cheat.png b/Mage.Client/src/main/resources/info/cheat.png new file mode 100644 index 0000000000..cee12e64fd Binary files /dev/null and b/Mage.Client/src/main/resources/info/cheat.png differ diff --git a/Mage.Client/src/main/resources/info/grave.png b/Mage.Client/src/main/resources/info/grave.png new file mode 100644 index 0000000000..b2678b09ca Binary files /dev/null and b/Mage.Client/src/main/resources/info/grave.png differ diff --git a/Mage.Client/src/main/resources/info/hand.png b/Mage.Client/src/main/resources/info/hand.png new file mode 100644 index 0000000000..04482b29c7 Binary files /dev/null and b/Mage.Client/src/main/resources/info/hand.png differ diff --git a/Mage.Client/src/main/resources/info/library.png b/Mage.Client/src/main/resources/info/library.png new file mode 100644 index 0000000000..9cb19eb172 Binary files /dev/null and b/Mage.Client/src/main/resources/info/library.png differ diff --git a/Mage.Client/src/main/resources/info/life.png b/Mage.Client/src/main/resources/info/life.png new file mode 100644 index 0000000000..a3b5045ff2 Binary files /dev/null and b/Mage.Client/src/main/resources/info/life.png differ diff --git a/Mage.Client/src/main/resources/info/poison.png b/Mage.Client/src/main/resources/info/poison.png new file mode 100644 index 0000000000..888091bd1a Binary files /dev/null and b/Mage.Client/src/main/resources/info/poison.png differ diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java index f289f44876..c3ee71fcc1 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/ManaSymbols.java @@ -113,10 +113,14 @@ public class ManaSymbols { } static public String replaceSetCodeWithHTML(String set, String rarity) { - if (setImagesExist.containsKey(set)) { - Integer width = setImagesExist.get(set).width; - Integer height = setImagesExist.get(set).height; - return "<img src='file:plugins/images/sets/small/" + set + "-" + rarity + ".png' alt='" + rarity + " ' width=" + width + " height=" + height + ">"; + String _set = set; + if (_set.equals("CON")) { + _set = "CFX"; + } + if (setImagesExist.containsKey(_set)) { + Integer width = setImagesExist.get(_set).width; + Integer height = setImagesExist.get(_set).height; + return "<img src='file:plugins/images/sets/small/" + _set + "-" + rarity + ".png' alt='" + rarity + " ' width=" + width + " height=" + height + ">"; } else { return set; } diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/info/CardInfoPaneImpl.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/info/CardInfoPaneImpl.java index f42c355f45..7c702dd5c8 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/info/CardInfoPaneImpl.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/info/CardInfoPaneImpl.java @@ -123,6 +123,8 @@ public class CardInfoPaneImpl extends JEditorPane implements CardInfoPane { } } + + if (legal.length() > 0) { //buffer.append("<br>"); legal = legal.replaceAll("\\{this\\}", card.getName()); diff --git a/Mage/src/mage/abilities/effects/common/ChooseNewTargetsTargetEffect.java b/Mage/src/mage/abilities/effects/common/ChooseNewTargetsTargetEffect.java index 92b72b6b9f..843225ea6f 100644 --- a/Mage/src/mage/abilities/effects/common/ChooseNewTargetsTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/ChooseNewTargetsTargetEffect.java @@ -62,4 +62,8 @@ public class ChooseNewTargetsTargetEffect extends OneShotEffect<ChooseNewTargets return new ChooseNewTargetsTargetEffect(this); } + @Override + public String getText(Ability source) { + return "You may choose new targets for target " + source.getTargets().get(0).getTargetName(); + } }