From 17b8619b3e196fe70870853320d156339d4d1a97 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Mon, 14 Jan 2013 18:16:12 +0400 Subject: [PATCH] Implemented Issue#106: Display emblems of players --- .../components/ext/dlg/DialogContainer.java | 22 +- .../components/ext/dlg/DialogManager.java | 36 +- .../components/ext/dlg/impl/ChoiceDialog.java | 11 +- .../java/mage/client/game/PlayAreaPanel.java | 11 +- .../java/mage/client/game/PlayerPanelExt.java | 351 ++++++++++-------- .../src/main/resources/info/command_zone.png | Bin 0 -> 6247 bytes Mage.Common/src/mage/view/CardView.java | 8 +- Mage.Common/src/mage/view/EmblemView.java | 42 +++ Mage.Common/src/mage/view/PlayerView.java | 23 +- 9 files changed, 333 insertions(+), 171 deletions(-) create mode 100644 Mage.Client/src/main/resources/info/command_zone.png create mode 100644 Mage.Common/src/mage/view/EmblemView.java diff --git a/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogContainer.java b/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogContainer.java index 4d8ed6a65f2..714c8ee8051 100644 --- a/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogContainer.java +++ b/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogContainer.java @@ -81,12 +81,32 @@ public class DialogContainer extends JPanel { //backgroundColor = new Color(139, 46, 173, 0); alpha = 0; - ChoiceDialog dlg = new ChoiceDialog(params); + ChoiceDialog dlg = new ChoiceDialog(params, "Choose"); add(dlg); //GameManager.getManager().setCurrentChoiceDlg(dlg); dlg.setLocation(X_OFFSET + 10, Y_OFFSET + 10); dlg.updateSize(params.rect.width - 80, params.rect.height - 80); + } else if (dialogType == DialogManager.MTGDialogs.GraveDialog) { + + backgroundColor = new Color(0, 0, 0, 110); + + alpha = 0; + ChoiceDialog dlg = new ChoiceDialog(params, "Graveyard"); + add(dlg); + dlg.setLocation(X_OFFSET + 10, Y_OFFSET + 10); + dlg.updateSize(params.rect.width - 80, params.rect.height - 80); + + } else if (dialogType == DialogManager.MTGDialogs.EmblemsDialog) { + + backgroundColor = new Color(0, 0, 50, 110); + + alpha = 0; + ChoiceDialog dlg = new ChoiceDialog(params, "Command Zone (Emblems)"); + add(dlg); + dlg.setLocation(X_OFFSET + 10, Y_OFFSET + 10); + dlg.updateSize(params.rect.width - 80, params.rect.height - 80); + } /*else if (dialogType == DialogManager.MTGDialogs.GraveDialog) { backgroundColor = new Color(20, 20, 20, 120); alpha = 0; diff --git a/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogManager.java b/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogManager.java index 1e47b00543a..a8b12710446 100644 --- a/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogManager.java +++ b/Mage.Client/src/main/java/mage/client/components/ext/dlg/DialogManager.java @@ -40,7 +40,7 @@ public class DialogManager extends JComponent implements MouseListener, } public enum MTGDialogs { - none, AboutDialog, MessageDialog, StackDialog, AssignDamageDialog, ManaChoiceDialog, ChoiceDialog, GraveDialog, DialogContainer, CombatDialog, + none, AboutDialog, MessageDialog, StackDialog, AssignDamageDialog, ManaChoiceDialog, ChoiceDialog, EmblemsDialog, GraveDialog, DialogContainer, CombatDialog, ChooseDeckDialog, ChooseCommonDialog, RevealDialog } @@ -122,7 +122,7 @@ public class DialogManager extends JComponent implements MouseListener, setVisible(true); } - public void showChoiceDialog(CardsView cards, BigCard bigCard, UUID gameId) { + public void showGraveyardDialog(CardsView cards, BigCard bigCard, UUID gameId) { int w = 720; int h = 550; @@ -139,7 +139,37 @@ public class DialogManager extends JComponent implements MouseListener, params.gameId = gameId; //params.feedbackPanel = feedbackPanel; params.setCards(cards); - dialogContainer = new DialogContainer(MTGDialogs.ChoiceDialog, params); + dialogContainer = new DialogContainer(MTGDialogs.GraveDialog, params); + dialogContainer.setVisible(true); + add(dialogContainer); + + this.currentDialog = MTGDialogs.DialogContainer; + + setDlgBounds(new Rectangle(x, y, w, h)); + + dialogContainer.showDialog(true); + + setVisible(true); + } + + public void showEmblemsDialog(CardsView cards, BigCard bigCard, UUID gameId) { + + int w = 720; + int h = 550; + + int height = getHeight(); + int width = getWidth(); + + int x = ((width - w) / 2); + int y = ((height - h) / 2); + + DlgParams params = new DlgParams(); + params.rect = new Rectangle(x, y, w, h); + params.bigCard = bigCard; + params.gameId = gameId; + //params.feedbackPanel = feedbackPanel; + params.setCards(cards); + dialogContainer = new DialogContainer(MTGDialogs.EmblemsDialog, params); dialogContainer.setVisible(true); add(dialogContainer); diff --git a/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/ChoiceDialog.java b/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/ChoiceDialog.java index 63fd727e692..440c3c8a7e1 100644 --- a/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/ChoiceDialog.java +++ b/Mage.Client/src/main/java/mage/client/components/ext/dlg/impl/ChoiceDialog.java @@ -49,16 +49,17 @@ public class ChoiceDialog extends IDialogPanel { private boolean isCancelStopsPlaying = true; private DlgParams params; - - //HashMap map = new HashMap(); + + private String title; /** * This is the default constructor */ - public ChoiceDialog(DlgParams params) { + public ChoiceDialog(DlgParams params, String title) { super(params); this.params = params; this.gameId = params.gameId; + this.title = title; cards = params.getCards(); isOptional = params.isOptional(); @@ -88,8 +89,8 @@ public class ChoiceDialog extends IDialogPanel { * @return void */ private void initialize() { - jTitle = new ShadowLabel("Graveyard", 14); - jTitle.setBounds(new Rectangle(5, 3, 500, 16)); + jTitle = new ShadowLabel(title, 14); + jTitle.setBounds(new Rectangle(5, 4, 500, 16)); jTitle.setFont(new Font("Dialog", Font.BOLD, 14)); this.setLayout(null); 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 8777a93f864..c07f0720aab 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java @@ -51,6 +51,9 @@ public class PlayAreaPanel extends javax.swing.JPanel { private UUID playerId; private UUID gameId; + private static final int PANEL_HEIGHT = 242; + private static final int PANEL_HEIGHT_SMALL = 190; + /** Creates new form PlayAreaPanel */ public PlayAreaPanel() { initComponents(); @@ -155,14 +158,14 @@ public class PlayAreaPanel extends javax.swing.JPanel { public void sizePlayer(boolean smallMode) { this.playerPanel.sizePlayerPanel(smallMode); if (smallMode) { - this.playerPanel.setPreferredSize(new Dimension(92, 160)); + this.playerPanel.setPreferredSize(new Dimension(92, PANEL_HEIGHT_SMALL)); //this.jScrollPane1.setPreferredSize(new Dimension(160, 160)); - this.battlefieldPanel.setPreferredSize(new Dimension(160, 160)); + this.battlefieldPanel.setPreferredSize(new Dimension(160, PANEL_HEIGHT_SMALL)); } else { - this.playerPanel.setPreferredSize(new Dimension(92, 212)); + this.playerPanel.setPreferredSize(new Dimension(92, PANEL_HEIGHT)); //this.jScrollPane1.setPreferredSize(new Dimension(160, 212)); - this.battlefieldPanel.setPreferredSize(new Dimension(160, 212)); + this.battlefieldPanel.setPreferredSize(new Dimension(160, PANEL_HEIGHT)); } } 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 0871a311559..b6c173b1939 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java @@ -85,18 +85,22 @@ public class PlayerPanelExt extends javax.swing.JPanel { private BigCard bigCard; private static final int AVATAR_COUNT = 77; + + private static final int PANEL_WIDTH = 94; + private static final int PANEL_HEIGHT = 242; + private static final int PANEL_HEIGHT_SMALL = 190; private static final Border greenBorder = new LineBorder(Color.red, 3); private static final Border redBorder = new LineBorder(Color.red, 2); private static final Border emptyBorder = BorderFactory.createEmptyBorder(0,0,0,0); private static final Dimension topCardDimension = new Dimension(40, 56); - + private int avatarId = -1; /** Creates new form PlayerPanel */ public PlayerPanelExt() { - setPreferredSize(new Dimension(94, 212)); + setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); initComponents(); } @@ -187,7 +191,7 @@ public class PlayerPanelExt extends javax.swing.JPanel { private void initComponents() { panelBackground = new MageRoundPane(); - panelBackground.setPreferredSize(new Dimension(92, 212)); + panelBackground.setPreferredSize(new Dimension(PANEL_WIDTH - 2, PANEL_HEIGHT)); Rectangle r = new Rectangle(80, 80); lifeLabel = new JLabel(); handLabel = new JLabel(); @@ -276,6 +280,26 @@ public class PlayerPanelExt extends javax.swing.JPanel { } }); + zonesPanel = new JPanel(); + zonesPanel.setPreferredSize(new Dimension(100, 25)); + zonesPanel.setSize(100, 25); + zonesPanel.setLayout(null); + + image = ImageHelper.getImageFromResources("/info/command_zone.png"); + r = new Rectangle(21, 21); + resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + commandZone = new HoverButton(null, resized, resized, resized, r); + commandZone.setToolTipText("Command Zone (Emblems)"); + commandZone.setOpaque(false); + commandZone.setObserver(new Command() { + @Override + public void execute() { + btnExileZoneActionPerformed(null); + } + }); + commandZone.setBounds(0, 0, 21, 21); + zonesPanel.add(commandZone); + btnPlayer = new JButton(); btnPlayer.setText("Player"); btnPlayer.setVisible(false); @@ -332,164 +356,176 @@ public class PlayerPanelExt extends javax.swing.JPanel { manaLabels.put("X", manaCountLabelX); GroupLayout gl_panelBackground = new GroupLayout(panelBackground); gl_panelBackground.setHorizontalGroup( - gl_panelBackground.createParallelGroup(Alignment.LEADING) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(9) - .addComponent(life, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE) - .addGap(3) - .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + gl_panelBackground.createParallelGroup(Alignment.LEADING) .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(18) - .addComponent(hand, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE)) - .addComponent(lifeLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) - .addGap(4) - .addComponent(handLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(9) - .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGap(9) + .addComponent(life, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE) + .addGap(3) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(18) + .addComponent(hand, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE)) + .addComponent(lifeLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) + .addGap(4) + .addComponent(handLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(3) - .addComponent(poison, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE)) + .addGap(9) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(3) + .addComponent(poison, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(2) + .addComponent(manaW, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(2) + .addComponent(manaU, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(2) + .addComponent(manaB, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addComponent(grave, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE) + ) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(18) + .addComponent(library, GroupLayout.PREFERRED_SIZE, 19, GroupLayout.PREFERRED_SIZE)) + .addComponent(poisonLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(20) + .addComponent(manaR, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(1) + .addComponent(manaCountLabelW, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))) + .addGap(3) + .addComponent(manaCountLabelR, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(1) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addComponent(manaCountLabelB, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(19) + .addComponent(manaX, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE))) + .addGap(5) + .addComponent(manaCountLabelX, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(20) + .addComponent(manaG, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(40) + .addComponent(manaCountLabelG, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(40) + .addComponent(libraryLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(18) + .addComponent(cheat, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(5) + .addComponent(graveLabel, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(1) + .addComponent(manaCountLabelU, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)))) .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(2) - .addComponent(manaW, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGap(6) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addComponent(btnPlayer, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(avatar, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE)) + .addGap(14)) + .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(2) - .addComponent(manaU, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(2) - .addComponent(manaB, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) - .addComponent(grave, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(18) - .addComponent(library, GroupLayout.PREFERRED_SIZE, 19, GroupLayout.PREFERRED_SIZE)) - .addComponent(poisonLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(20) - .addComponent(manaR, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(1) - .addComponent(manaCountLabelW, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))) - .addGap(3) - .addComponent(manaCountLabelR, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(1) - .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) - .addComponent(manaCountLabelB, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(19) - .addComponent(manaX, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE))) - .addGap(5) - .addComponent(manaCountLabelX, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(20) - .addComponent(manaG, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(40) - .addComponent(manaCountLabelG, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(40) - .addComponent(libraryLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(18) - .addComponent(cheat, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(5) - .addComponent(graveLabel, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(1) - .addComponent(manaCountLabelU, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)))) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(6) - .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) - .addComponent(btnPlayer, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(avatar, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE)) - .addGap(14)) + .addGap(6) + .addComponent(zonesPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE) + .addGap(14)) ); gl_panelBackground.setVerticalGroup( - gl_panelBackground.createParallelGroup(Alignment.LEADING) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(6) - .addComponent(avatar, GroupLayout.PREFERRED_SIZE, 80, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(ComponentPlacement.RELATED) - .addComponent(btnPlayer) - .addPreferredGap(ComponentPlacement.RELATED) - .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + gl_panelBackground.createParallelGroup(Alignment.LEADING) .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(1) - .addComponent(life, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(1) - .addComponent(hand, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE)) - .addComponent(lifeLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) - .addComponent(handLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) - .addGap(1) - .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(4) - .addComponent(poison, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE) - .addGap(4) - .addComponent(manaW, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE) - .addGap(2) - .addComponent(manaU, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE) - .addGap(2) - .addComponent(manaB, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE) - .addGap(5) - .addComponent(grave, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGap(6) + .addComponent(avatar, GroupLayout.PREFERRED_SIZE, 80, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(btnPlayer) + .addPreferredGap(ComponentPlacement.RELATED) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(1) - .addComponent(library, GroupLayout.PREFERRED_SIZE, 19, GroupLayout.PREFERRED_SIZE)) - .addComponent(poisonLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) - .addGap(2) - .addComponent(manaR, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(14) - .addComponent(manaCountLabelW, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(14) - .addComponent(manaCountLabelR, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))) - .addGap(4) - .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) - .addComponent(manaCountLabelB, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(8) - .addComponent(manaX, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) - .addComponent(manaCountLabelX, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(39) - .addComponent(manaG, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(31) - .addComponent(manaCountLabelG, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) - .addComponent(libraryLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(76) - .addComponent(cheat, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(76) - .addComponent(graveLabel, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl_panelBackground.createSequentialGroup() - .addGap(31) - .addComponent(manaCountLabelU, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)))) + .addGap(1) + .addComponent(life, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(1) + .addComponent(hand, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE)) + .addComponent(lifeLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) + .addComponent(handLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) + .addGap(1) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(4) + .addComponent(poison, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE) + .addGap(4) + .addComponent(manaW, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE) + .addGap(2) + .addComponent(manaU, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE) + .addGap(2) + .addComponent(manaB, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE) + .addGap(5) + .addComponent(grave, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE) + ) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(1) + .addComponent(library, GroupLayout.PREFERRED_SIZE, 19, GroupLayout.PREFERRED_SIZE)) + .addComponent(poisonLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) + .addGap(2) + .addComponent(manaR, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(14) + .addComponent(manaCountLabelW, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(14) + .addComponent(manaCountLabelR, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))) + .addGap(4) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addComponent(manaCountLabelB, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(8) + .addComponent(manaX, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addComponent(manaCountLabelX, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(39) + .addComponent(manaG, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(31) + .addComponent(manaCountLabelG, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) + .addComponent(libraryLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(76) + .addComponent(cheat, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(76) + .addComponent(graveLabel, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(31) + .addComponent(manaCountLabelU, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE) + ) + ) + .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(zonesPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE) + ) ); panelBackground.setLayout(gl_panelBackground); GroupLayout groupLayout = new GroupLayout(this); groupLayout.setHorizontalGroup( - groupLayout.createParallelGroup(Alignment.LEADING) - .addGroup(groupLayout.createSequentialGroup() - .addComponent(panelBackground, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)) + groupLayout.createParallelGroup(Alignment.LEADING) + .addGroup(groupLayout.createSequentialGroup() + .addComponent(panelBackground, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)) ); groupLayout.setVerticalGroup( - groupLayout.createParallelGroup(Alignment.LEADING) - .addGroup(groupLayout.createSequentialGroup() - .addComponent(panelBackground, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)) + groupLayout.createParallelGroup(Alignment.LEADING) + .addGroup(groupLayout.createSequentialGroup() + .addComponent(panelBackground, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)) ); setLayout(groupLayout); @@ -498,15 +534,15 @@ public class PlayerPanelExt extends javax.swing.JPanel { public void sizePlayerPanel(boolean smallMode) { if (smallMode) { avatar.setVisible(false); - btnPlayer.setVisible(true); - panelBackground.setPreferredSize(new Dimension(92, 160)); - panelBackground.setBounds(0, 0, 92, 160); + btnPlayer.setVisible(true); + panelBackground.setPreferredSize(new Dimension(PANEL_WIDTH - 2, PANEL_HEIGHT_SMALL)); + panelBackground.setBounds(0, 0, PANEL_WIDTH - 2, PANEL_HEIGHT_SMALL); } else { avatar.setVisible(true); btnPlayer.setVisible(false); - panelBackground.setPreferredSize(new Dimension(92, 212)); - panelBackground.setBounds(0, 0, 92, 212); + panelBackground.setPreferredSize(new Dimension(PANEL_WIDTH - 2, PANEL_HEIGHT)); + panelBackground.setBounds(0, 0, PANEL_WIDTH - 2, PANEL_HEIGHT); } } @@ -515,7 +551,11 @@ public class PlayerPanelExt extends javax.swing.JPanel { graveyard = new ShowCardsDialog(); }*/ //graveyard.loadCards(player.getName() + " graveyard", player.getGraveyard(), bigCard, Config.dimensions, gameId, false); - DialogManager.getManager(gameId).showChoiceDialog(CardsViewUtil.convertSimple(player.getGraveyard()), bigCard, gameId); + DialogManager.getManager(gameId).showGraveyardDialog(CardsViewUtil.convertSimple(player.getGraveyard()), bigCard, gameId); + } + + private void btnExileZoneActionPerformed(java.awt.event.ActionEvent evt) { + DialogManager.getManager(gameId).showEmblemsDialog(CardsViewUtil.convertEmblems(player.getEmblemList()), bigCard, gameId); } private void btnCheatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCheatActionPerformed @@ -541,5 +581,10 @@ public class PlayerPanelExt extends javax.swing.JPanel { private JLabel poisonLabel; private JLabel graveLabel; + private JPanel zonesPanel; + private HoverButton exileZone; + private HoverButton commandZone; + private HoverButton enchantPlayerViewZone; + private Map manaLabels = new HashMap(); } diff --git a/Mage.Client/src/main/resources/info/command_zone.png b/Mage.Client/src/main/resources/info/command_zone.png new file mode 100644 index 0000000000000000000000000000000000000000..a992c555d5080a6a59fb2a172e0dbe130a4c1a1b GIT binary patch literal 6247 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 RV{!lh002ovPDHLkV1nTTp$`B6 literal 0 HcmV?d00001 diff --git a/Mage.Common/src/mage/view/CardView.java b/Mage.Common/src/mage/view/CardView.java index 1f568c0fbc1..011b7376a56 100644 --- a/Mage.Common/src/mage/view/CardView.java +++ b/Mage.Common/src/mage/view/CardView.java @@ -33,6 +33,7 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.MageObject; import mage.ObjectColor; +import mage.abilities.Mode; import mage.cards.Card; import mage.counters.CounterType; import mage.game.permanent.Permanent; @@ -46,7 +47,6 @@ import mage.target.Targets; import java.util.ArrayList; import java.util.List; import java.util.UUID; -import mage.abilities.Mode; /** * @author BetaSteward_at_googlemail.com @@ -318,7 +318,11 @@ public class CardView extends SimpleCardView { public String getExpansionSetCode() { return expansionSetCode; } - + + public void setExpansionSetCode(String expansionSetCode) { + this.expansionSetCode = expansionSetCode; + } + @Override public UUID getId() { return id; diff --git a/Mage.Common/src/mage/view/EmblemView.java b/Mage.Common/src/mage/view/EmblemView.java new file mode 100644 index 00000000000..0f29713a91b --- /dev/null +++ b/Mage.Common/src/mage/view/EmblemView.java @@ -0,0 +1,42 @@ +package mage.view; + +import mage.cards.Card; +import mage.game.command.Emblem; + +import java.io.Serializable; +import java.util.List; +import java.util.UUID; + +/** + * @author noxx + */ +public class EmblemView implements Serializable { + + protected UUID id; + protected String name; + protected String expansionSetCode; + protected List rules; + + public EmblemView(Emblem emblem, Card sourceCard) { + id = emblem.getId(); + name = "Emblem " + sourceCard.getName(); + expansionSetCode = sourceCard.getExpansionSetCode(); + rules = emblem.getAbilities().getRules(sourceCard.getName()); + } + + public String getExpansionSetCode() { + return expansionSetCode; + } + + public String getName() { + return name; + } + + public UUID getId() { + return id; + } + + public List getRules() { + return rules; + } +} diff --git a/Mage.Common/src/mage/view/PlayerView.java b/Mage.Common/src/mage/view/PlayerView.java index 6735cb1909e..e7d1dcc5003 100644 --- a/Mage.Common/src/mage/view/PlayerView.java +++ b/Mage.Common/src/mage/view/PlayerView.java @@ -32,13 +32,13 @@ import mage.cards.Card; import mage.counters.CounterType; import mage.game.Game; import mage.game.GameState; +import mage.game.command.CommandObject; +import mage.game.command.Emblem; import mage.game.permanent.Permanent; import mage.players.Player; import java.io.Serializable; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.UUID; +import java.util.*; /** * @@ -60,6 +60,7 @@ public class PlayerView implements Serializable { private Map battlefield = new LinkedHashMap(); private CardView topCard; private UserDataView userDataView; + private List emblemList = new ArrayList(); public PlayerView(Player player, GameState state, Game game) { this.playerId = player.getId(); @@ -87,6 +88,18 @@ public class PlayerView implements Serializable { } else { this.userDataView = new UserDataView(0); } + + for (CommandObject commandObject : game.getState().getCommand()) { + if (commandObject instanceof Emblem) { + Emblem emblem = (Emblem) commandObject; + if (emblem.getControllerId().equals(this.playerId)) { + Card sourceCard = game.getCard(((CommandObject)emblem).getSourceId()); + if (sourceCard != null) { + emblemList.add(new EmblemView(emblem, sourceCard)); + } + } + } + } } private boolean showInBattlefield(Permanent permanent, GameState state) { @@ -154,4 +167,8 @@ public class PlayerView implements Serializable { public UserDataView getUserData() { return this.userDataView; } + + public List getEmblemList() { + return emblemList; + } }