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 00000000000..a992c555d50 Binary files /dev/null and b/Mage.Client/src/main/resources/info/command_zone.png differ 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; + } }