fixed Liliana Of The Veil npe when targeting tokens + added choose pile dialog

This commit is contained in:
BetaSteward 2012-02-07 15:15:47 -05:00
parent f14559d71d
commit 6205ebaeb9
18 changed files with 511 additions and 199 deletions

View file

@ -34,24 +34,22 @@
package mage.client.dialog;
import mage.cards.CardDimensions;
import mage.cards.MageCard;
import mage.client.MageFrame;
import mage.client.cards.BigCard;
import mage.client.plugins.impl.Plugins;
import mage.client.util.Config;
import mage.client.util.SettingsManager;
import mage.client.util.gui.GuiDisplayUtil;
import mage.view.AbilityView;
import mage.view.CardView;
import mage.view.CardsView;
import javax.swing.*;
import java.awt.*;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.UUID;
import javax.swing.JLayeredPane;
import javax.swing.SwingUtilities;
import mage.cards.CardDimensions;
import mage.client.MageFrame;
import mage.client.cards.BigCard;
import mage.client.cards.CardArea;
import mage.client.util.CardsViewUtil;
import mage.client.util.SettingsManager;
import mage.client.util.gui.GuiDisplayUtil;
import mage.view.CardsView;
import mage.view.SimpleCardsView;
/**
@ -76,12 +74,7 @@ public class ShowCardsDialog extends MageDialog implements MouseListener {
public void loadCards(String name, CardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId, boolean modal) {
this.reloaded = true;
this.title = name;
cardArea.removeAll();
if (showCards != null && showCards.size() < 10)
loadCardsFew(showCards, bigCard, gameId);
else
loadCardsMany(showCards, bigCard, gameId);
cardArea.revalidate();
cardArea.loadCards(showCards, bigCard, dimension, gameId);
if (getParent() != MageFrame.getDesktop() /*|| this.isClosed*/) {
MageFrame.getDesktop().add(this, JLayeredPane.POPUP_LAYER);
}
@ -106,55 +99,6 @@ public class ShowCardsDialog extends MageDialog implements MouseListener {
});
}
private void loadCardsFew(CardsView showCards, BigCard bigCard, UUID gameId) {
Rectangle rectangle = new Rectangle(Config.dimensions.frameWidth, Config.dimensions.frameHeight);
Dimension dimension = new Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight);
for (CardView card : showCards.values()) {
addCard(card, bigCard, gameId, rectangle, dimension);
rectangle.translate(Config.dimensions.frameWidth, 0);
}
cardArea.setPreferredSize(new Dimension(Config.dimensions.frameWidth * showCards.size(), Config.dimensions.frameHeight));
}
private void addCard(CardView card, BigCard bigCard, UUID gameId, Rectangle rectangle, Dimension dimension) {
if (card instanceof AbilityView) {
CardView tmp = ((AbilityView) card).getSourceCard();
tmp.overrideRules(card.getRules());
tmp.setIsAbility(true);
tmp.overrideTargets(card.getTargets());
tmp.setAbility(card); // cross-reference, required for ability picker
card = tmp;
}
MageCard cardImg = Plugins.getInstance().getMageCard(card, bigCard, dimension, gameId, true);
cardImg.setBounds(rectangle);
cardArea.add(cardImg);
cardArea.moveToFront(cardImg);
cardImg.update(card);
cardImg.addMouseListener(this);
cardImg.setCardBounds(rectangle.x, rectangle.y, Config.dimensions.frameWidth, Config.dimensions.frameHeight);
}
private void loadCardsMany(CardsView showCards, BigCard bigCard, UUID gameId) {
int columns = 1;
if (showCards != null && showCards.size() > 0) {
Rectangle rectangle = new Rectangle(Config.dimensions.frameWidth, Config.dimensions.frameHeight);
Dimension dimension = new Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight);
int count = 0;
for (CardView card : showCards.values()) {
addCard(card, bigCard, gameId, rectangle, dimension);
if (count >= 20) {
rectangle.translate(Config.dimensions.frameWidth, -400);
columns++;
count = 0;
} else {
rectangle.translate(0, 20);
count++;
}
}
}
cardArea.setPreferredSize(new Dimension(Config.dimensions.frameWidth * columns, Config.dimensions.frameHeight + 400));
}
public boolean isReloaded() {
return this.reloaded;
}
@ -163,34 +107,19 @@ public class ShowCardsDialog extends MageDialog implements MouseListener {
this.reloaded = false;
}
/**
* This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
cardArea = new javax.swing.JLayeredPane();
cardArea = new CardArea();
setClosable(true);
setResizable(true);
getContentPane().setLayout(new java.awt.BorderLayout());
jScrollPane1.setViewportView(cardArea);
getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
getContentPane().add(cardArea, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLayeredPane cardArea;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration//GEN-END:variables
}
private CardArea cardArea;
@Override
public void mouseClicked(MouseEvent e) {