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 7ff9091c75f..c81ed5f1b35 100644 --- a/Mage.Client/src/main/java/mage/client/cards/Card.java +++ b/Mage.Client/src/main/java/mage/client/cards/Card.java @@ -503,4 +503,8 @@ public class Card extends MagePermanent implements MouseMotionListener, MouseLis @Override public void showCardTitle() { } + + @Override + public void setSelected(boolean selected) { + } } diff --git a/Mage.Client/src/main/java/mage/client/cards/CardArea.java b/Mage.Client/src/main/java/mage/client/cards/CardArea.java index ded95e97d27..02756b6e37f 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardArea.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardArea.java @@ -41,7 +41,8 @@ import mage.view.SimpleCardsView; import javax.swing.*; import java.awt.*; import java.awt.event.MouseListener; -import java.util.UUID; +import java.util.*; +import java.util.List; public class CardArea extends JPanel { @@ -148,6 +149,17 @@ public class CardArea extends JPanel { public void clearReloaded() { this.reloaded = false; - } + } + + public void selectCards(List selected) { + for (Component component : cardArea.getComponents()) { + if (component instanceof MageCard) { + MageCard mageCard = (MageCard)component; + if (selected.contains(mageCard.getOriginal().getId())) { + mageCard.setSelected(true); + } + } + } + } } diff --git a/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java b/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java index f816779e59a..0a7f7b2f04e 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java @@ -48,6 +48,8 @@ import javax.swing.*; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import java.io.Serializable; +import java.util.Map; import java.util.UUID; /** @@ -70,9 +72,20 @@ public class ShowCardsDialog extends MageDialog implements MouseListener { } public void loadCards(String name, CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId, boolean modal) { + loadCards(name, showCards, bigCard, dimension, gameId, modal, null); + } + + public void loadCards(String name, CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId, boolean modal, Map options) { this.reloaded = true; this.title = name; cardArea.loadCards(showCards, bigCard, dimension, gameId, this); + if (options != null) { + if (options.containsKey("chosen")) { + java.util.List chosenCards = (java.util.List)options.get("chosen"); + cardArea.selectCards(chosenCards); + } + } + if (getParent() != MageFrame.getDesktop() /*|| this.isClosed*/) { MageFrame.getDesktop().add(this, JLayeredPane.DEFAULT_LAYER); } 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 ff6579bbcca..2cd6bf96653 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -530,7 +530,7 @@ public class GamePanel extends javax.swing.JPanel { updateGame(gameView); Map options0 = options == null ? new HashMap() : options; if (cardView != null && cardView.size() > 0) { - ShowCardsDialog dialog = showCards(message, cardView, required); + ShowCardsDialog dialog = showCards(message, cardView, required, options0); options0.put("dialog", dialog); } this.feedbackPanel.getFeedback(required?FeedbackMode.INFORM:FeedbackMode.CANCEL, message, gameView.getSpecial(), options0); @@ -589,9 +589,9 @@ public class GamePanel extends javax.swing.JPanel { this.abilityPicker.show(choices, MageFrame.getDesktop().getMousePosition()); } - private ShowCardsDialog showCards(String title, CardsView cards, boolean required) { + private ShowCardsDialog showCards(String title, CardsView cards, boolean required, Map options) { ShowCardsDialog showCards = new ShowCardsDialog(); - showCards.loadCards(title, cards, bigCard, Config.dimensionsEnlarged, gameId, required); + showCards.loadCards(title, cards, bigCard, Config.dimensionsEnlarged, gameId, required, options); return showCards; } diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java b/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java index 663070fcefb..eb4d3913857 100644 --- a/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java +++ b/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java @@ -316,8 +316,10 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti this.isAnimationPanel = isAnimationPanel; } + @Override public void setSelected(boolean isSelected) { this.isSelected = isSelected; + this.titleText.setGlowColor(Color.green); repaint(); } @@ -376,7 +378,8 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti g2d.fillRoundRect(cardXOffset, cardYOffset, cardWidth, cardHeight, cornerSize, cornerSize); if (isSelected) { //g2d.setColor(new Color(0,250,0,200)); - g2d.setColor(new Color(200, 120, 40, 200)); + //g2d.setColor(new Color(200, 120, 40, 200)); + g2d.setColor(Color.green); g2d.fillRoundRect(cardXOffset + 1, cardYOffset + 1, cardWidth - 2, cardHeight - 2, cornerSize, cornerSize); } diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/GlowText.java b/Mage.Client/src/main/java/org/mage/card/arcane/GlowText.java index cb2d2638075..d49177fa37d 100644 --- a/Mage.Client/src/main/java/org/mage/card/arcane/GlowText.java +++ b/Mage.Client/src/main/java/org/mage/card/arcane/GlowText.java @@ -1,11 +1,7 @@ package org.mage.card.arcane; -import java.awt.AlphaComposite; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; +import javax.swing.*; +import java.awt.*; import java.awt.font.FontRenderContext; import java.awt.font.LineBreakMeasurer; import java.awt.font.TextAttribute; @@ -15,8 +11,6 @@ import java.text.AttributedString; import java.text.BreakIterator; import java.util.Locale; -import javax.swing.JLabel; - public class GlowText extends JLabel { private static final long serialVersionUID = 1827677946939348001L; private int glowSize; @@ -99,4 +93,8 @@ public class GlowText extends JLabel { public int getLineCount() { return this.lineCount; } + + public void setGlowColor(Color glowColor) { + this.glowColor = glowColor; + } } diff --git a/Mage.Common/src/mage/cards/MageCard.java b/Mage.Common/src/mage/cards/MageCard.java index 77e5458ec53..7c13249d416 100644 --- a/Mage.Common/src/mage/cards/MageCard.java +++ b/Mage.Common/src/mage/cards/MageCard.java @@ -29,4 +29,5 @@ public abstract class MageCard extends JPanel { abstract public void toggleTransformed(); abstract public boolean isTransformed(); abstract public void showCardTitle(); + abstract public void setSelected(boolean selected); } diff --git a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java index 16602725b6e..29cd9d2b242 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java @@ -268,7 +268,7 @@ public class HumanPlayer extends PlayerImpl { return false; } - private Map getOptions(Target target) { + private Map getOptions(Target target) { return target.getNumberOfTargets() != target.getMaxNumberOfTargets() ? staticOptions : null; } @@ -284,7 +284,15 @@ public class HumanPlayer extends PlayerImpl { int count = cards.count(target.getFilter(), game); if (count == 0) required = false; } - game.fireSelectTargetEvent(playerId, target.getMessage(), cards, required, getOptions(target)); + Map options = getOptions(target); + if (target.getTargets().size() > 0) { + if (options == null) { + options = new HashMap(1); + } + List chosen = (List)target.getTargets(); + options.put("chosen", (Serializable)chosen); + } + game.fireSelectTargetEvent(playerId, target.getMessage(), cards, required, options); waitForResponse(); if (response.getUUID() != null) { if (target.canTarget(response.getUUID(), cards, game)) { diff --git a/Mage.Server/plugins/mage-player-human.jar b/Mage.Server/plugins/mage-player-human.jar index c1c901de6f3..ae701fbf9ca 100644 Binary files a/Mage.Server/plugins/mage-player-human.jar and b/Mage.Server/plugins/mage-player-human.jar differ