package forge; import forge.error.ErrorViewer; import forge.gui.game.CardPanel; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.MouseEvent; /** * <p>Constructor for Gui_MultipleBlockers4.</p> * * @author Forge * @version $Id: $ */ /** very hacky * */ class Gui_MultipleBlockers4 extends JFrame { /** Constant <code>serialVersionUID=7622818310877381045L</code> */ private static final long serialVersionUID = 7622818310877381045L; private int assignDamage; private Card att; private CardList blockers; private CardContainer guiDisplay; private BorderLayout borderLayout1 = new BorderLayout(); private JPanel mainPanel = new JPanel(); private JScrollPane jScrollPane1 = new JScrollPane(); private JLabel numberLabel = new JLabel(); private JPanel jPanel3 = new JPanel(); private BorderLayout borderLayout3 = new BorderLayout(); private JPanel creaturePanel = new JPanel(); /** * <p>Constructor for Gui_MultipleBlockers4.</p> * * @param attacker a {@link forge.Card} object. * @param creatureList a {@link forge.CardList} object. * @param damage a int. * @param display a {@link forge.CardContainer} object. */ Gui_MultipleBlockers4(Card attacker, CardList creatureList, int damage, CardContainer display) { this(); assignDamage = damage; updateDamageLabel();//update user message about assigning damage guiDisplay = display; att = attacker; blockers = creatureList; for (int i = 0; i < creatureList.size(); i++) creaturePanel.add(new CardPanel(creatureList.get(i))); if (att.hasKeyword("Trample")) { Card player = new Card(); player.setName("Player"); player.addIntrinsicKeyword("Shroud"); player.addIntrinsicKeyword("Indestructible"); creaturePanel.add(new CardPanel(player)); } JDialog dialog = new JDialog(this, true); dialog.setTitle("Multiple Blockers"); dialog.setContentPane(mainPanel); dialog.setSize(470, 260); dialog.setVisible(true); } /** * <p>Constructor for Gui_MultipleBlockers4.</p> */ public Gui_MultipleBlockers4() { try { jbInit(); } catch (Exception ex) { ErrorViewer.showError(ex); } // setSize(470, 280); // show(); } /** * <p>jbInit.</p> * * @throws java.lang.Exception if any. */ private void jbInit() throws Exception { this.getContentPane().setLayout(borderLayout1); this.setTitle("Multiple Blockers"); mainPanel.setLayout(null); numberLabel.setHorizontalAlignment(SwingConstants.CENTER); numberLabel.setHorizontalTextPosition(SwingConstants.CENTER); numberLabel.setText("Assign"); numberLabel.setBounds(new Rectangle(52, 30, 343, 24)); jPanel3.setLayout(borderLayout3); jPanel3.setBounds(new Rectangle(26, 75, 399, 114)); creaturePanel.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mousePressed(MouseEvent e) { creaturePanel_mousePressed(e); } }); creaturePanel.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { @Override public void mouseMoved(MouseEvent e) { creaturePanel_mouseMoved(e); } }); mainPanel.add(jPanel3, null); jPanel3.add(jScrollPane1, BorderLayout.CENTER); mainPanel.add(numberLabel, null); jScrollPane1.getViewport().add(creaturePanel, null); this.getContentPane().add(mainPanel, BorderLayout.CENTER); } /** * <p>okButton_actionPerformed.</p> * * @param e a {@link java.awt.event.ActionEvent} object. */ void okButton_actionPerformed(ActionEvent e) { dispose(); } /** * <p>creaturePanel_mousePressed.</p> * * @param e a {@link java.awt.event.MouseEvent} object. */ void creaturePanel_mousePressed(MouseEvent e) { Object o = creaturePanel.getComponentAt(e.getPoint()); if (o instanceof CardPanel) { boolean assignedDamage = true; CardContainer cardPanel = (CardContainer) o; Card c = cardPanel.getCard(); //c.setAssignedDamage(c.getAssignedDamage() + 1); CardList cl = new CardList(); cl.add(att); boolean assignedLethalDamageToAllBlockers = true; for (Card crd : blockers) { if (crd.getLethalDamage() > 0 && (!att.hasKeyword("Deathtouch") || crd.getTotalAssignedDamage() < 1)) assignedLethalDamageToAllBlockers = false; } if (c.getName().equals("Player") && att.hasKeyword("Trample") && assignedLethalDamageToAllBlockers) { AllZone.getCombat().addDefendingDamage(1, att); c.addAssignedDamage(1, att); } else if (!c.getName().equals("Player")) { c.addAssignedDamage(1, att); } else assignedDamage = false; if (assignedDamage) { assignDamage--; updateDamageLabel(); if (assignDamage == 0) dispose(); } if (guiDisplay != null) { guiDisplay.setCard(c); } } //reduce damage, show new user message, exit if necessary }//creaturePanel_mousePressed() /** * <p>updateDamageLabel.</p> */ void updateDamageLabel() { numberLabel.setText("Assign " + assignDamage + " damage - click on card to assign damage"); } /** * <p>creaturePanel_mouseMoved.</p> * * @param e a {@link java.awt.event.MouseEvent} object. */ void creaturePanel_mouseMoved(MouseEvent e) { Object o = creaturePanel.getComponentAt(e.getPoint()); if (o instanceof CardPanel) { CardContainer cardPanel = (CardContainer) o; Card c = cardPanel.getCard(); if (guiDisplay != null) { guiDisplay.setCard(c); } } } }