MultipleBlockers.java :  » Game » magicwars » mw » client » dialogs » jframe » Java Open Source

Java Open Source » Game » magicwars 
magicwars » mw » client » dialogs » jframe » MultipleBlockers.java
package mw.client.dialogs.jframe;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.rmi.RemoteException;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;

import mw.client.gui.MWCardImpl;
import mw.client.managers.ConnectionManager;
import mw.client.managers.SettingsManager;
import mw.server.list.CardBeanList;
import mw.server.model.Damage;
import mw.server.model.bean.CardBean;

public class MultipleBlockers extends JFrame {

    private int assignDamage;
    private int assignedToPlayer = 0;

    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();
    private String buttonLabel = "Trample: deal X damage to player";
    private JButton assignToPlayer = new JButton(buttonLabel);
    
    private CardBean attacker;

    public MultipleBlockers(CardBeanList creatureList, CardBean attacker) {
        this();
        assignDamage = attacker.getAttack();
        this.attacker = attacker;
        updateDamageLabel();// update user message about assigning damage

        for (int i = 0; i < creatureList.size(); i++) {
            CardBean l = creatureList.get(i);
            MWCardImpl mtgCard = new MWCardImpl(l);
            mtgCard.setPreferredSize(new Dimension(SettingsManager.getManager().getCardSize().width,
                    SettingsManager.getManager().getCardSize().height));
            creaturePanel.add(mtgCard, BorderLayout.CENTER);
        }
        
        JDialog dialog = new JDialog(this, true);
        dialog.setTitle("Multiple Blockers");
        dialog.setContentPane(mainPanel);
        dialog.setSize(500, 300);
        Rectangle scrnRect = getGraphicsConfiguration().getBounds();
        dialog.setLocation((scrnRect.width - 500) / 2,
                (scrnRect.height - 255) / 2);
        dialog.setVisible(true);
    }

    public MultipleBlockers() {
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    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, 10, 343, 24));
        jPanel3.setLayout(borderLayout3);
        jPanel3.setBounds(new Rectangle(26, 45, 450, 160));
        jPanel3.setBorder(BorderFactory.createEmptyBorder());
        creaturePanel.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                if (e.getClickCount() == 2) {
                    creaturePanel_mousePressed(e);
                }
            }
        });
        creaturePanel
                .addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
                    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);
        jScrollPane1.setBorder(BorderFactory.createEmptyBorder());
        mainPanel.add(assignToPlayer, null);
        assignToPlayer.setVisible(false);
        assignToPlayer.setBounds(140, 210, 230, 25);
        this.getContentPane().add(mainPanel, BorderLayout.CENTER);
        
        assignToPlayer.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(MouseEvent e) {
              assignToPlayer_mousePressed(e);
            }
        });
    }

    void creaturePanel_mousePressed(MouseEvent e) {
        Object o = creaturePanel.getComponentAt(e.getPoint());
        if (o instanceof MWCardImpl) {
            CardBean card = ((MWCardImpl) o).getCard();
            Damage d = card.getAssignedDamage();
            d.addDamage(1);
            d.addSourceBean(attacker, 1);
        }
        
        /**
         * Reduce damage, show new user message, exit if necessary 
         */
        assignDamage--;
        updateDamageLabel();
        if (assignDamage == 0) {
            closeDialog();
        }

        if (attacker.getKeyword().contains("Trample")) {
          boolean canUseTrample = true;
          for (int i = 0; i < creaturePanel.getComponentCount(); i++) {
              o = creaturePanel.getComponent(i);
              if (o instanceof MWCardImpl) {
                  CardBean card = ((MWCardImpl) o).getCard();
                  if (card.getAssignedDamage().getDamage() < card.getDefense()) {
                    canUseTrample = false;
                  }
              }
          }
          
          if (canUseTrample) {
            assignToPlayer.setVisible(true);
            String label = buttonLabel.replace("X", String.valueOf(assignDamage));
            assignToPlayer.setText(label);
          }
        }
    }

    void assignToPlayer_mousePressed(MouseEvent e) {
      assignedToPlayer = assignDamage;
      assignDamage = 0;
      closeDialog();
    }
    
    void updateDamageLabel() {
        numberLabel.setText("Assign " + assignDamage
                + " damage - double click on card to assign 1 damage");
    }

    void creaturePanel_mouseMoved(MouseEvent e) {
        Object o = creaturePanel.getComponentAt(e.getPoint());
        if (o instanceof MWCardImpl) {
            ((MWCardImpl) o).updateDescription();
        }
    }
    
    protected void closeDialog() {
        CardBeanList list = new CardBeanList();
        for (int i = 0; i < creaturePanel.getComponentCount(); i++) {
            Object o = creaturePanel.getComponent(i);
            if (o instanceof MWCardImpl) {
                CardBean card = ((MWCardImpl) o).getCard();
                if (card.getAssignedDamage().getDamage() > 0) {
                    list.add(card);
                }
            }
        }
        
        if (assignedToPlayer > 0) {
          CardBean playerCard = new CardBean();
            playerCard.setPlayer(true);
            playerCard.setDamage(assignedToPlayer);
            playerCard.setTableID(attacker.getTableID());
            list.add(playerCard);
        }
        
        dispose();
        
        /**
         * Send the results to server
         */
        try {
            ConnectionManager.sendSetAssignedDamage(list);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
 
    }
    
    private static final long serialVersionUID = 1L;
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.