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 3b72f30173f..b338e076ec5 100644 --- a/Mage.Client/src/main/java/mage/client/cards/Card.java +++ b/Mage.Client/src/main/java/mage/client/cards/Card.java @@ -386,6 +386,7 @@ public class Card extends MagePermanent implements MouseMotionListener, MouseLis ArrowBuilder.getBuilder().removeArrowsByType(gameId, ArrowBuilder.Type.TARGET); ArrowBuilder.getBuilder().removeArrowsByType(gameId, ArrowBuilder.Type.PAIRED); ArrowBuilder.getBuilder().removeArrowsByType(gameId, ArrowBuilder.Type.SOURCE); + ArrowBuilder.getBuilder().removeArrowsByType(gameId, ArrowBuilder.Type.ENCHANT_PLAYERS); } } 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 c07f0720aab..ef009014516 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java @@ -119,6 +119,10 @@ public class PlayAreaPanel extends javax.swing.JPanel { return battlefieldPanel; } + public PlayerPanelExt getPlayerPanel() { + return playerPanel; + } + private void initComponents() { setBorder(BorderFactory.createLineBorder(new Color(0,0,0,0))); playerPanel = new PlayerPanelExt(); diff --git a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java index b6c173b1939..0c718d6a547 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java @@ -218,6 +218,12 @@ public class PlayerPanelExt extends javax.swing.JPanel { session.sendPlayerUUID(gameId, playerId); } }); + avatar.setOnHover(new Command() { + @Override + public void execute() { + + } + }); r = new Rectangle(18, 18); lifeLabel.setToolTipText("Life"); Image imageLife = ImageHelper.getImageFromResources("/info/life.png"); @@ -563,6 +569,10 @@ public class PlayerPanelExt extends javax.swing.JPanel { session.cheat(gameId, playerId, deckImporter.importDeck("cheat.dck")); } + public PlayerView getPlayer() { + return player; + } + private HoverButton avatar; private JButton btnPlayer; private ImagePanel life; diff --git a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java index 434b1d744f8..0fd3daeabe1 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java +++ b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java @@ -10,6 +10,7 @@ import mage.client.cards.BigCard; import mage.client.components.MageComponents; import mage.client.dialog.PreferencesDialog; import mage.client.game.PlayAreaPanel; +import mage.client.game.PlayerPanelExt; import mage.client.plugins.impl.Plugins; import mage.client.util.DefaultActionCallback; import mage.client.util.ImageHelper; @@ -89,6 +90,7 @@ public class MageActionCallback implements ActionCallback { drawArrowsForTargets(data, parentPoint); drawArrowsForSource(data, parentPoint); drawArrowsForPairedCards(data, parentPoint); + drawArrowsForEnchantPlayers(data, parentPoint); showPopup(data, parentComponent, parentPoint); } @@ -109,6 +111,23 @@ public class MageActionCallback implements ActionCallback { } } + private void drawArrowsForEnchantPlayers(TransferData data, Point parentPoint) { + for (PlayAreaPanel pa : MageFrame.getGame(data.gameId).getPlayers().values()) { + PlayerPanelExt playAreaPanel = pa.getPlayerPanel(); + if (playAreaPanel != null && playAreaPanel.getPlayer() != null && playAreaPanel.getPlayer().hasAttachments()) { + Point me = new Point(data.locationOnScreen); + me.translate(-parentPoint.x, -parentPoint.y); + for (UUID attachmentId : playAreaPanel.getPlayer().getAttachments()) { + if (attachmentId.equals(data.card.getId())) { + Point player = pa.getLocationOnScreen(); + player.translate(-parentPoint.x, -parentPoint.y); + ArrowBuilder.getBuilder().addArrow(data.gameId,(int) me.getX() + 35, (int) me.getY(), (int) player.getX() + 40, (int) player.getY() - 40, Color.magenta, ArrowBuilder.Type.ENCHANT_PLAYERS); + } + } + } + } + } + private void drawArrowsForSource(TransferData data, Point parentPoint) { if (data.card.isAbility()) { Point me = new Point(data.locationOnScreen); @@ -291,6 +310,7 @@ public class MageActionCallback implements ActionCallback { ArrowBuilder.getBuilder().removeArrowsByType(gameId, ArrowBuilder.Type.TARGET); ArrowBuilder.getBuilder().removeArrowsByType(gameId, ArrowBuilder.Type.PAIRED); ArrowBuilder.getBuilder().removeArrowsByType(gameId, ArrowBuilder.Type.SOURCE); + ArrowBuilder.getBuilder().removeArrowsByType(gameId, ArrowBuilder.Type.ENCHANT_PLAYERS); } } diff --git a/Mage.Client/src/main/java/mage/client/util/CardsViewUtil.java b/Mage.Client/src/main/java/mage/client/util/CardsViewUtil.java index 2dc69ae4579..9f48d42f3ea 100644 --- a/Mage.Client/src/main/java/mage/client/util/CardsViewUtil.java +++ b/Mage.Client/src/main/java/mage/client/util/CardsViewUtil.java @@ -31,10 +31,9 @@ package mage.client.util; import mage.cards.Card; import mage.cards.repository.CardInfo; import mage.cards.repository.CardRepository; -import mage.view.CardView; -import mage.view.CardsView; -import mage.view.SimpleCardView; -import mage.view.SimpleCardsView; +import mage.view.*; + +import java.util.List; /** * @@ -56,4 +55,16 @@ public class CardsViewUtil { return cards; } + public static CardsView convertEmblems(List view) { + CardsView cards = new CardsView(); + + for (EmblemView emblem : view) { + CardView cardView = new CardView(emblem.getName()); + cardView.overrideRules(emblem.getRules()); + cardView.setExpansionSetCode(emblem.getExpansionSetCode()); + cards.put(emblem.getId(), cardView); + } + + return cards; + } } diff --git a/Mage.Client/src/main/java/mage/client/util/gui/ArrowBuilder.java b/Mage.Client/src/main/java/mage/client/util/gui/ArrowBuilder.java index 75f75971f90..3cc7f38a509 100644 --- a/Mage.Client/src/main/java/mage/client/util/gui/ArrowBuilder.java +++ b/Mage.Client/src/main/java/mage/client/util/gui/ArrowBuilder.java @@ -38,7 +38,7 @@ public class ArrowBuilder { private int currentHeight; public enum Type { - PAIRED, SOURCE, TARGET, COMBAT; + PAIRED, SOURCE, TARGET, COMBAT, ENCHANT_PLAYERS; } /** diff --git a/Mage.Common/src/mage/view/PlayerView.java b/Mage.Common/src/mage/view/PlayerView.java index e7d1dcc5003..83c77d3fd04 100644 --- a/Mage.Common/src/mage/view/PlayerView.java +++ b/Mage.Common/src/mage/view/PlayerView.java @@ -61,6 +61,7 @@ public class PlayerView implements Serializable { private CardView topCard; private UserDataView userDataView; private List emblemList = new ArrayList(); + private List attachments = new ArrayList(); public PlayerView(Player player, GameState state, Game game) { this.playerId = player.getId(); @@ -100,6 +101,10 @@ public class PlayerView implements Serializable { } } } + + if (player.getAttachments() != null) { + attachments.addAll(player.getAttachments()); + } } private boolean showInBattlefield(Permanent permanent, GameState state) { @@ -171,4 +176,12 @@ public class PlayerView implements Serializable { public List getEmblemList() { return emblemList; } + + public List getAttachments() { + return attachments; + } + + public boolean hasAttachments() { + return attachments != null && attachments.size() > 0; + } }