forked from External/mage
merge file from master
This commit is contained in:
commit
eb0f196a7e
4372 changed files with 55156 additions and 17296 deletions
|
|
@ -4,12 +4,6 @@
|
|||
<NonVisualComponents>
|
||||
<Component class="javax.swing.ButtonGroup" name="bgView">
|
||||
</Component>
|
||||
<Component class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem1">
|
||||
<Properties>
|
||||
<Property name="selected" type="boolean" value="true"/>
|
||||
<Property name="text" type="java.lang.String" value="jCheckBoxMenuItem1"/>
|
||||
</Properties>
|
||||
</Component>
|
||||
</NonVisualComponents>
|
||||
<AuxValues>
|
||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
|
||||
|
|
@ -27,9 +21,9 @@
|
|||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="tbColor" alignment="0" max="32767" attributes="0"/>
|
||||
<Component id="tbTypes" alignment="0" pref="1061" max="32767" attributes="0"/>
|
||||
<Component id="cardSelectorBottomPanel" alignment="0" pref="1061" max="32767" attributes="0"/>
|
||||
<Component id="tbTypes" alignment="0" pref="1057" max="32767" attributes="0"/>
|
||||
<Component id="cardSelectorScrollPane" alignment="0" max="32767" attributes="0"/>
|
||||
<Component id="cardSelectorBottomPanel" alignment="0" pref="1057" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
|
|
@ -857,7 +851,7 @@
|
|||
</Component>
|
||||
<Component class="javax.swing.JCheckBox" name="chkUnique">
|
||||
<Properties>
|
||||
<Property name="selected" type="boolean" value="true"/>
|
||||
<Property name="selected" type="boolean" value="false"/>
|
||||
<Property name="text" type="java.lang.String" value="Unique"/>
|
||||
<Property name="toolTipText" type="java.lang.String" value="Show only the first found card of every card name."/>
|
||||
<Property name="focusable" type="boolean" value="false"/>
|
||||
|
|
|
|||
|
|
@ -57,8 +57,6 @@ import static mage.client.dialog.PreferencesDialog.KEY_DECK_EDITOR_SEARCH_TYPES;
|
|||
import static mage.client.dialog.PreferencesDialog.KEY_DECK_EDITOR_SEARCH_UNIQUE;
|
||||
import mage.client.util.GUISizeHelper;
|
||||
import mage.client.util.gui.FastSearchUtil;
|
||||
import mage.client.dialog.CheckBoxList;
|
||||
|
||||
import mage.client.util.sets.ConstructedFormats;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Rarity;
|
||||
|
|
@ -86,16 +84,12 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
private final SortSetting sortSetting;
|
||||
private static final Map<String, Integer> pdAllowed = new HashMap<>();
|
||||
|
||||
private final String TEST_MULTI_SET="Multiple Sets selected";
|
||||
|
||||
private final ActionListener searchAction = evt -> jButtonSearchActionPerformed(evt);
|
||||
|
||||
/**
|
||||
* Creates new form CardSelector
|
||||
*/
|
||||
public CardSelector() {
|
||||
|
||||
|
||||
sortSetting = SortSettingBase.getInstance();
|
||||
initComponents();
|
||||
cardGrid = new CardGrid();
|
||||
|
|
@ -103,25 +97,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
initListViewComponents();
|
||||
setGUISize();
|
||||
currentView = mainModel; // by default we use List View
|
||||
|
||||
listCodeSelected = new CheckBoxList();
|
||||
// remove the all option
|
||||
boolean is_removeFinish=false;
|
||||
|
||||
String[] setCodes = ConstructedFormats.getTypes();
|
||||
java.util.List<String> result = new ArrayList<>();
|
||||
|
||||
for(int i=0; (i<setCodes.length)&&(!is_removeFinish);i++)
|
||||
{
|
||||
String item = setCodes[i];
|
||||
if(!item.equals(ConstructedFormats.ALL))
|
||||
{
|
||||
result.add(item);
|
||||
}
|
||||
}
|
||||
listCodeSelected.setListData(result.toArray());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void makeTransparent() {
|
||||
this.addComponentListener(this);
|
||||
|
|
@ -176,7 +152,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
chkNames.setSelected("true".equals(MageFrame.getPreferences().get(KEY_DECK_EDITOR_SEARCH_NAMES, "true")));
|
||||
chkTypes.setSelected("true".equals(MageFrame.getPreferences().get(KEY_DECK_EDITOR_SEARCH_TYPES, "true")));
|
||||
chkRules.setSelected("true".equals(MageFrame.getPreferences().get(KEY_DECK_EDITOR_SEARCH_RULES, "true")));
|
||||
chkUnique.setSelected("true".equals(MageFrame.getPreferences().get(KEY_DECK_EDITOR_SEARCH_UNIQUE, "true")));
|
||||
chkUnique.setSelected("true".equals(MageFrame.getPreferences().get(KEY_DECK_EDITOR_SEARCH_UNIQUE, "false")));
|
||||
|
||||
mainTable.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
|
|
@ -326,10 +302,11 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
return filter;
|
||||
}
|
||||
|
||||
private CardCriteria buildCriteria() {
|
||||
private CardCriteria buildCriteria() {
|
||||
CardCriteria criteria = new CardCriteria();
|
||||
criteria.black(this.tbBlack.isSelected());
|
||||
criteria.blue(this.tbBlue.isSelected());
|
||||
|
|
@ -381,53 +358,12 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
}
|
||||
|
||||
if (this.cbExpansionSet.isVisible()) {
|
||||
if(listCodeSelected.getCheckedIndices().length <= 1)
|
||||
{
|
||||
String expansionSelection = this.cbExpansionSet.getSelectedItem().toString();
|
||||
if (!expansionSelection.equals("- All Sets")) {
|
||||
java.util.List<String> setCodes = ConstructedFormats.getSetsByFormat(expansionSelection);
|
||||
criteria.setCodes(setCodes.toArray(new String[0]));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
java.util.List<String> setCodes = new ArrayList<>() ;
|
||||
//java.util.List<String> listReceived=new ArrayList<>() ;
|
||||
|
||||
int[] choiseValue=listCodeSelected.getCheckedIndices();
|
||||
ListModel x= listCodeSelected.getModel();
|
||||
|
||||
for(int itemIndex: choiseValue){
|
||||
|
||||
java.util.List<String> listReceived=ConstructedFormats.getSetsByFormat(x.getElementAt(itemIndex).toString());
|
||||
listReceived.stream().filter((item) -> (setCodes.contains(item)==false)).forEachOrdered((item) -> {
|
||||
setCodes.add(item);
|
||||
});
|
||||
}
|
||||
String expansionSelection = this.cbExpansionSet.getSelectedItem().toString();
|
||||
if (!expansionSelection.equals("- All Sets")) {
|
||||
java.util.List<String> setCodes = ConstructedFormats.getSetsByFormat(expansionSelection);
|
||||
criteria.setCodes(setCodes.toArray(new String[0]));
|
||||
}
|
||||
}
|
||||
/*if(cbSetTag!=null)
|
||||
{
|
||||
if(listCodeSelected != null)
|
||||
{
|
||||
boolean isAtLeastOneSelected=false;
|
||||
java.util.List<String> setCodes = new ArrayList<>() ;
|
||||
|
||||
int[] choiseValue=listCodeSelected.getCheckedIndices();
|
||||
ListModel x= listCodeSelected.getModel();
|
||||
|
||||
for(int itemIndex: choiseValue){
|
||||
isAtLeastOneSelected=true;
|
||||
setCodes.add(x.getElementAt(itemIndex).toString());
|
||||
//LogLog.warn(x.getElementAt(itemIndex).toString());
|
||||
}
|
||||
if(isAtLeastOneSelected)
|
||||
{
|
||||
criteria.setCodes(setCodes.toArray(new String[0]));
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
return criteria;
|
||||
}
|
||||
|
|
@ -483,7 +419,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
}
|
||||
|
||||
private void filterCards() {
|
||||
boolean fist_time =false;
|
||||
FilterCard filter = buildFilter();
|
||||
try {
|
||||
java.util.List<Card> filteredCards = new ArrayList<>();
|
||||
|
|
@ -510,7 +445,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
continue;
|
||||
}
|
||||
}
|
||||
filteredCards.add(card);
|
||||
filteredCards.add(card);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -572,7 +507,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
private void initComponents() {
|
||||
|
||||
bgView = new javax.swing.ButtonGroup();
|
||||
jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem();
|
||||
tbColor = new javax.swing.JToolBar();
|
||||
tbRed = new javax.swing.JToggleButton();
|
||||
tbGreen = new javax.swing.JToggleButton();
|
||||
|
|
@ -625,9 +559,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
cardCountLabel = new javax.swing.JLabel();
|
||||
cardCount = new javax.swing.JLabel();
|
||||
|
||||
jCheckBoxMenuItem1.setSelected(true);
|
||||
jCheckBoxMenuItem1.setText("jCheckBoxMenuItem1");
|
||||
|
||||
tbColor.setFloatable(false);
|
||||
tbColor.setRollover(true);
|
||||
tbColor.setToolTipText("Hold the ALT-key while clicking to deselect all other colors or hold the CTRL-key to select only all other colors.");
|
||||
|
|
@ -1143,7 +1074,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
}
|
||||
});
|
||||
|
||||
chkUnique.setSelected(true);
|
||||
chkUnique.setSelected(false);
|
||||
chkUnique.setText("Unique");
|
||||
chkUnique.setToolTipText("Show only the first found card of every card name.");
|
||||
chkUnique.setFocusable(false);
|
||||
|
|
@ -1245,9 +1176,9 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
layout.setHorizontalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(tbColor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(tbTypes, javax.swing.GroupLayout.DEFAULT_SIZE, 1061, Short.MAX_VALUE)
|
||||
.addComponent(cardSelectorBottomPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 1061, Short.MAX_VALUE)
|
||||
.addComponent(tbTypes, javax.swing.GroupLayout.DEFAULT_SIZE, 1057, Short.MAX_VALUE)
|
||||
.addComponent(cardSelectorScrollPane)
|
||||
.addComponent(cardSelectorBottomPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 1057, Short.MAX_VALUE)
|
||||
);
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
|
|
@ -1263,24 +1194,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
private void cbExpansionSetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbExpansionSetActionPerformed
|
||||
|
||||
|
||||
if(!cbExpansionSet.getSelectedItem().toString().contains(TEST_MULTI_SET))
|
||||
{
|
||||
int index=cbExpansionSet.getSelectedIndex();
|
||||
if(cbExpansionSet.getItemAt(0).contains(TEST_MULTI_SET))
|
||||
{
|
||||
cbExpansionSet.removeItemAt(0);
|
||||
index--;
|
||||
}
|
||||
listCodeSelected.uncheckAll();
|
||||
if(index > 0)
|
||||
{
|
||||
//ofset because all sets is removed from the list
|
||||
listCodeSelected.setChecked(index-1, true);
|
||||
}
|
||||
}
|
||||
|
||||
filterCards();
|
||||
}//GEN-LAST:event_cbExpansionSetActionPerformed
|
||||
|
||||
|
|
@ -1462,7 +1375,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
}//GEN-LAST:event_chkRulesActionPerformed
|
||||
|
||||
private void btnExpansionSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExpansionSearchActionPerformed
|
||||
|
||||
FastSearchUtil.showFastSearchForStringComboBox(listCodeSelected, FastSearchUtil.DEFAULT_EXPANSION_SEARCH_MESSAGE);
|
||||
//
|
||||
int[] choiseValue=listCodeSelected.getCheckedIndices();
|
||||
|
|
@ -1569,10 +1481,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
private TableModel mainModel;
|
||||
private JTable mainTable;
|
||||
private ICardGrid currentView;
|
||||
|
||||
static boolean isFirstTimeHere=true;
|
||||
private CheckBoxList listCodeSelected;
|
||||
private javax.swing.JComboBox<String> cbSetTag;
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.ButtonGroup bgView;
|
||||
private javax.swing.JButton btnBooster;
|
||||
|
|
@ -1596,7 +1505,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
private javax.swing.JButton jButtonRemoveFromMain;
|
||||
private javax.swing.JButton jButtonRemoveFromSideboard;
|
||||
private javax.swing.JButton jButtonSearch;
|
||||
private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1;
|
||||
private javax.swing.JToolBar.Separator jSeparator1;
|
||||
private javax.swing.JToolBar.Separator jSeparator2;
|
||||
private javax.swing.JToolBar.Separator jSeparator3;
|
||||
|
|
|
|||
|
|
@ -1125,7 +1125,7 @@ class DeckFilter extends FileFilter {
|
|||
int i = s.lastIndexOf('.');
|
||||
|
||||
if (i > 0 && i < s.length() - 1) {
|
||||
ext = s.substring(i + 1).toLowerCase();
|
||||
ext = s.substring(i + 1).toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
return (ext == null) ? false : ext.equals("dck");
|
||||
}
|
||||
|
|
@ -1149,10 +1149,10 @@ class ImportFilter extends FileFilter {
|
|||
int i = s.lastIndexOf('.');
|
||||
|
||||
if (i > 0 && i < s.length() - 1) {
|
||||
ext = s.substring(i + 1).toLowerCase();
|
||||
ext = s.substring(i + 1).toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
if (ext != null) {
|
||||
if (ext.toLowerCase().equals("dec") || ext.toLowerCase().equals("mwdeck") || ext.toLowerCase().equals("txt") || ext.toLowerCase().equals("dek")) {
|
||||
if (ext.toLowerCase(Locale.ENGLISH).equals("dec") || ext.toLowerCase(Locale.ENGLISH).equals("mwdeck") || ext.toLowerCase(Locale.ENGLISH).equals("txt") || ext.toLowerCase(Locale.ENGLISH).equals("dek")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package mage.client.deckeditor;
|
||||
|
||||
import mage.util.StreamUtils;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.io.BufferedWriter;
|
||||
|
|
@ -39,15 +41,16 @@ public class DeckImportFromClipboardDialog extends JDialog {
|
|||
}
|
||||
|
||||
private void onOK() {
|
||||
BufferedWriter bw = null;
|
||||
try {
|
||||
File temp = File.createTempFile("cbimportdeck", ".txt");
|
||||
BufferedWriter bw = new BufferedWriter(new FileWriter(temp));
|
||||
bw = new BufferedWriter(new FileWriter(temp));
|
||||
bw.write(txtDeckList.getText());
|
||||
bw.close();
|
||||
|
||||
tmpPath = temp.getPath();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
StreamUtils.closeQuietly(bw);
|
||||
}
|
||||
|
||||
dispose();
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@ public final class CollectionViewerPanel extends JPanel {
|
|||
JCheckBox cardsOrTokens = new JCheckBox("Display Cards");
|
||||
cardsOrTokens.setSelected(true);
|
||||
cardsOrTokens.setForeground(Color.white);
|
||||
cardsOrTokens.setToolTipText("Select to show Cards or Tokens(and emblems) for the chosen set");
|
||||
cardsOrTokens.setToolTipText("Select to show Cards for the chosen set. When unselected, will show Tokens, Emblems and Planes for the set instead");
|
||||
cardsOrTokens.addActionListener(e -> mageBook.cardsOrTokens(cardsOrTokens.isSelected()));
|
||||
buttonsPanel.add(cardsOrTokens);
|
||||
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ import java.lang.reflect.InvocationTargetException;
|
|||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.swing.*;
|
||||
|
|
@ -56,11 +57,13 @@ import mage.components.ImagePanel;
|
|||
import mage.components.ImagePanelStyle;
|
||||
import mage.constants.Rarity;
|
||||
import mage.game.command.Emblem;
|
||||
import mage.game.command.Plane;
|
||||
import mage.game.permanent.PermanentToken;
|
||||
import mage.game.permanent.token.Token;
|
||||
import mage.view.CardView;
|
||||
import mage.view.EmblemView;
|
||||
import mage.view.PermanentView;
|
||||
import mage.view.PlaneView;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.mage.card.arcane.ManaSymbols;
|
||||
import org.mage.plugins.card.images.CardDownloadData;
|
||||
|
|
@ -201,8 +204,6 @@ public class MageBook extends JComponent {
|
|||
Image setImage = ManaSymbols.getSetSymbolImage(set);
|
||||
if (setImage != null) {
|
||||
tab.setOverlayImage(setImage);
|
||||
} else {
|
||||
System.out.println("Couldn't find symbol image: " + set + "-C.jpg");
|
||||
}
|
||||
tab.setSet(set);
|
||||
tab.setBounds(0, y, 39, 120);
|
||||
|
|
@ -250,7 +251,8 @@ public class MageBook extends JComponent {
|
|||
} else {
|
||||
updateCardStats(currentSet, false);
|
||||
int numTokens = showTokens();
|
||||
showEmblems(numTokens);
|
||||
int numTokensEmblems = numTokens + showEmblems(numTokens);
|
||||
int numTokensEmblemsPlanes = numTokens + showPlanes(numTokensEmblems);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -311,16 +313,17 @@ public class MageBook extends JComponent {
|
|||
}
|
||||
|
||||
jLayeredPane.repaint();
|
||||
return tokens.size();
|
||||
}
|
||||
|
||||
return tokens.size();
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void showEmblems(int numTokens) {
|
||||
public int showEmblems(int numTokens) {
|
||||
List<Emblem> emblems = getEmblems(currentPage, currentSet, numTokens);
|
||||
// System.out.println ("Size of origins in " + currentSet + " = " + emblems.size());
|
||||
int numEmblems = 0;
|
||||
if (emblems != null && emblems.size() > 0) {
|
||||
int size = emblems.size();
|
||||
numEmblems = size;
|
||||
Rectangle rectangle = new Rectangle();
|
||||
rectangle.translate(OFFSET_X, OFFSET_Y);
|
||||
// calculate the x offset of the second (right) page
|
||||
|
|
@ -348,6 +351,7 @@ public class MageBook extends JComponent {
|
|||
lastI++;
|
||||
}
|
||||
|
||||
rectangle.setLocation(second_page_x, OFFSET_Y);
|
||||
if (size + numTokens > conf.CARDS_PER_PAGE / 2) {
|
||||
for (int i = lastI; i < size && i + numTokens < conf.CARDS_PER_PAGE; i++) {
|
||||
Emblem emblem = emblems.get(i);
|
||||
|
|
@ -358,6 +362,54 @@ public class MageBook extends JComponent {
|
|||
|
||||
jLayeredPane.repaint();
|
||||
}
|
||||
return numEmblems;
|
||||
}
|
||||
|
||||
public int showPlanes(int numTokensEmblems) {
|
||||
List<Plane> planes = getPlanes(currentPage, currentSet, numTokensEmblems);
|
||||
int numPlanes = 0;
|
||||
|
||||
if (planes != null && planes.size() > 0) {
|
||||
int size = planes.size();
|
||||
numPlanes = size;
|
||||
Rectangle rectangle = new Rectangle();
|
||||
rectangle.translate(OFFSET_X, OFFSET_Y);
|
||||
|
||||
int second_page_x = (conf.WIDTH - 2 * LEFT_RIGHT_PAGES_WIDTH)
|
||||
- (cardDimensions.frameWidth + CardPosition.GAP_X) * conf.CARD_COLUMNS + CardPosition.GAP_X - OFFSET_X;
|
||||
|
||||
numTokensEmblems = numTokensEmblems % conf.CARDS_PER_PAGE;
|
||||
if (numTokensEmblems < conf.CARDS_PER_PAGE / 2) {
|
||||
for (int z = 0; z < numTokensEmblems && z < conf.CARDS_PER_PAGE / 2; z++) {
|
||||
rectangle = CardPosition.translatePosition(z, rectangle, conf);
|
||||
}
|
||||
} else {
|
||||
rectangle.setLocation(second_page_x, OFFSET_Y);
|
||||
for (int z = 0; z < numTokensEmblems - conf.CARDS_PER_PAGE / 2; z++) {
|
||||
rectangle = CardPosition.translatePosition(z, rectangle, conf);
|
||||
}
|
||||
}
|
||||
|
||||
int lastI = 0;
|
||||
for (int i = 0; i < size && i + numTokensEmblems < conf.CARDS_PER_PAGE / 2; i++) {
|
||||
Plane plane = planes.get(i);
|
||||
addPlane(plane, bigCard, null, rectangle);
|
||||
rectangle = CardPosition.translatePosition(i + numTokensEmblems, rectangle, conf);
|
||||
lastI++;
|
||||
}
|
||||
|
||||
rectangle.setLocation(second_page_x, OFFSET_Y);
|
||||
if (size + numTokensEmblems > conf.CARDS_PER_PAGE / 2) {
|
||||
for (int i = lastI; i < size && i + numTokensEmblems < conf.CARDS_PER_PAGE; i++) {
|
||||
Plane plane = planes.get(i);
|
||||
addPlane(plane, bigCard, null, rectangle);
|
||||
rectangle = CardPosition.translatePosition(i + numTokensEmblems - conf.CARDS_PER_PAGE / 2, rectangle, conf);
|
||||
}
|
||||
}
|
||||
|
||||
jLayeredPane.repaint();
|
||||
}
|
||||
return numPlanes;
|
||||
}
|
||||
|
||||
private void addCard(CardView card, BigCard bigCard, UUID gameId, Rectangle rectangle) {
|
||||
|
|
@ -400,6 +452,7 @@ public class MageBook extends JComponent {
|
|||
cardDimension = new Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight);
|
||||
}
|
||||
PermanentToken newToken = new PermanentToken(token, null, token.getOriginalExpansionSetCode(), null);
|
||||
newToken.removeSummoningSickness();
|
||||
PermanentView theToken = new PermanentView(newToken, null, null, null);
|
||||
theToken.setInViewerOnly(true);
|
||||
final MageCard cardImg = Plugins.instance.getMagePermanent(theToken, bigCard, cardDimension, gameId, true);
|
||||
|
|
@ -414,6 +467,11 @@ public class MageBook extends JComponent {
|
|||
addCard(cardView, bigCard, gameId, rectangle);
|
||||
}
|
||||
|
||||
private void addPlane(Plane plane, BigCard bigCard, UUID gameId, Rectangle rectangle) {
|
||||
CardView cardView = new CardView(new PlaneView(plane));
|
||||
addCard(cardView, bigCard, gameId, rectangle);
|
||||
}
|
||||
|
||||
private List<CardInfo> getCards(int page, String set) {
|
||||
CardCriteria criteria = new CardCriteria();
|
||||
criteria.setCodes(set);
|
||||
|
|
@ -500,10 +558,10 @@ public class MageBook extends JComponent {
|
|||
className = className.replaceAll("[^a-zA-Z0-9]", "");
|
||||
className = "mage.game.permanent.token." + className + "Token";
|
||||
if (token.getTokenClassName() != null && token.getTokenClassName().length() > 0) {
|
||||
if (token.getTokenClassName().toLowerCase().matches(".*token.*")) {
|
||||
if (token.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*token.*")) {
|
||||
className = token.getTokenClassName();
|
||||
className = "mage.game.permanent.token." + className;
|
||||
} else if (token.getTokenClassName().toLowerCase().matches(".*emblem.*")) {
|
||||
} else if (token.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*emblem.*")) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
@ -523,16 +581,25 @@ public class MageBook extends JComponent {
|
|||
}
|
||||
int start = page * conf.CARDS_PER_PAGE;
|
||||
int end = page * conf.CARDS_PER_PAGE + conf.CARDS_PER_PAGE;
|
||||
if (end > tokens.size()) {
|
||||
end = tokens.size();
|
||||
int ttokens = getTotalNumTokens(set);
|
||||
int temblems = getTotalNumEmblems(set);
|
||||
int tplanes = getTotalNumPlanes(set);
|
||||
int numTokensEmblemsPlanes = ttokens + temblems + tplanes;
|
||||
if (end > numTokensEmblemsPlanes) {
|
||||
end = numTokensEmblemsPlanes;
|
||||
}
|
||||
if (tokens.size() > end) {
|
||||
if (numTokensEmblemsPlanes > end) {
|
||||
pageRight.setVisible(true);
|
||||
}
|
||||
return tokens.subList(start, end);
|
||||
|
||||
end = Math.min(end, ttokens);
|
||||
if (start < ttokens) {
|
||||
return tokens.subList(start, end);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private List<Emblem> getEmblems(int page, String set, int numTokens) {
|
||||
private List<Emblem> getEmblems(int page, String set, int numTokensEmblems) {
|
||||
ArrayList<CardDownloadData> allEmblems = getTokenCardUrls();
|
||||
ArrayList<Emblem> emblems = new ArrayList<>();
|
||||
|
||||
|
|
@ -541,7 +608,7 @@ public class MageBook extends JComponent {
|
|||
try {
|
||||
String className = emblem.getName();
|
||||
if (emblem.getTokenClassName() != null && emblem.getTokenClassName().length() > 0) {
|
||||
if (emblem.getTokenClassName().toLowerCase().matches(".*emblem.*")) {
|
||||
if (emblem.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*emblem.*")) {
|
||||
className = emblem.getTokenClassName();
|
||||
className = "mage.game.command.emblems." + className;
|
||||
}
|
||||
|
|
@ -573,21 +640,138 @@ public class MageBook extends JComponent {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
int totalTokens = getTotalNumTokens(set);
|
||||
int start = 0;
|
||||
if (!(page * conf.CARDS_PER_PAGE <= totalTokens && (page + 1) * conf.CARDS_PER_PAGE >= totalTokens)) {
|
||||
start = page * conf.CARDS_PER_PAGE - totalTokens;
|
||||
}
|
||||
|
||||
int end = emblems.size();
|
||||
|
||||
if ((page + 1) * conf.CARDS_PER_PAGE < numTokens + emblems.size()) {
|
||||
end = (page + 1) * conf.CARDS_PER_PAGE - numTokens;
|
||||
pageRight.setVisible(true);
|
||||
if ((page + 1) * conf.CARDS_PER_PAGE < totalTokens + emblems.size()) {
|
||||
end = (page + 1) * conf.CARDS_PER_PAGE - totalTokens;
|
||||
}
|
||||
|
||||
if (emblems.size() > conf.CARDS_PER_PAGE) {
|
||||
pageLeft.setVisible(true);
|
||||
pageRight.setVisible(true);
|
||||
}
|
||||
start = Math.min(start, end);
|
||||
return emblems.subList(start, end);
|
||||
}
|
||||
|
||||
private List<Plane> getPlanes(int page, String set, int numTokensEmblems) {
|
||||
ArrayList<CardDownloadData> allPlanes = getTokenCardUrls();
|
||||
ArrayList<Plane> planes = new ArrayList<>();
|
||||
|
||||
for (CardDownloadData plane : allPlanes) {
|
||||
if (plane.getSet().equals(set)) {
|
||||
try {
|
||||
String className = plane.getName();
|
||||
if (plane.getTokenClassName() != null && plane.getTokenClassName().length() > 0) {
|
||||
if (plane.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*plane.*")) {
|
||||
className = plane.getTokenClassName();
|
||||
className = "mage.game.command.planes." + className;
|
||||
}
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
Class<?> c = Class.forName(className);
|
||||
Constructor<?> cons = c.getConstructor();
|
||||
Object newPlane = cons.newInstance();
|
||||
if (newPlane != null && newPlane instanceof mage.game.command.Plane) {
|
||||
((Plane) newPlane).setExpansionSetCodeForImage(set);
|
||||
|
||||
planes.add((Plane) newPlane);
|
||||
}
|
||||
} catch (ClassNotFoundException ex) {
|
||||
// Swallow exception
|
||||
} catch (NoSuchMethodException ex) {
|
||||
// Swallow exception
|
||||
} catch (SecurityException ex) {
|
||||
// Swallow exception
|
||||
} catch (InstantiationException ex) {
|
||||
// Swallow exception
|
||||
} catch (IllegalAccessException ex) {
|
||||
// Swallow exception
|
||||
} catch (IllegalArgumentException ex) {
|
||||
// Swallow exception
|
||||
} catch (InvocationTargetException ex) {
|
||||
// Swallow exception
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int totalTokens = getTotalNumTokens(set);
|
||||
int totalTokensEmblems = totalTokens + getTotalNumEmblems(set);
|
||||
int start = 0;
|
||||
if (!(page * conf.CARDS_PER_PAGE <= totalTokensEmblems && (page + 1) * conf.CARDS_PER_PAGE >= totalTokensEmblems)) {
|
||||
start = page * conf.CARDS_PER_PAGE - totalTokensEmblems;
|
||||
pageRight.setVisible(true);
|
||||
}
|
||||
|
||||
int end = planes.size();
|
||||
if ((page + 1) * conf.CARDS_PER_PAGE < totalTokensEmblems + planes.size()) {
|
||||
end = (page + 1) * conf.CARDS_PER_PAGE - totalTokensEmblems;
|
||||
pageRight.setVisible(true);
|
||||
} else {
|
||||
pageRight.setVisible(false);
|
||||
}
|
||||
|
||||
if (numTokensEmblems + planes.size() > conf.CARDS_PER_PAGE && page > 0) {
|
||||
pageLeft.setVisible(true);
|
||||
}
|
||||
start = Math.min(start, end);
|
||||
return planes.subList(start, end);
|
||||
}
|
||||
|
||||
private int getTotalNumTokens(String set) {
|
||||
ArrayList<CardDownloadData> allTokens = getTokenCardUrls();
|
||||
int numTokens = 0;
|
||||
|
||||
for (CardDownloadData token : allTokens) {
|
||||
if (token.getSet().equals(set)) {
|
||||
String className = token.getName();
|
||||
if (token.getTokenClassName() != null && token.getTokenClassName().length() > 0) {
|
||||
if (token.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*token.*")) {
|
||||
numTokens++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return numTokens;
|
||||
}
|
||||
|
||||
private int getTotalNumEmblems(String set) {
|
||||
ArrayList<CardDownloadData> allEmblems = getTokenCardUrls();
|
||||
int numEmblems = 0;
|
||||
|
||||
for (CardDownloadData emblem : allEmblems) {
|
||||
if (emblem.getSet().equals(set)) {
|
||||
String className = emblem.getName();
|
||||
if (emblem.getTokenClassName() != null && emblem.getTokenClassName().length() > 0) {
|
||||
if (emblem.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*emblem.*")) {
|
||||
numEmblems++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return numEmblems;
|
||||
}
|
||||
|
||||
private int getTotalNumPlanes(String set) {
|
||||
ArrayList<CardDownloadData> allPlanes = getTokenCardUrls();
|
||||
int numPlanes = 0;
|
||||
|
||||
for (CardDownloadData plane : allPlanes) {
|
||||
if (plane.getSet().equals(set)) {
|
||||
String className = plane.getName();
|
||||
if (plane.getTokenClassName() != null && plane.getTokenClassName().length() > 0) {
|
||||
if (plane.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*plane.*")) {
|
||||
numPlanes++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return numPlanes;
|
||||
}
|
||||
|
||||
private ImagePanel getImagePanel(String filename, ImagePanelStyle type) {
|
||||
try {
|
||||
InputStream is = this.getClass().getResourceAsStream(filename);
|
||||
|
|
@ -666,7 +850,7 @@ public class MageBook extends JComponent {
|
|||
setPreferredSize(new Dimension(conf.WIDTH, conf.HEIGHT));
|
||||
setMinimumSize(new Dimension(conf.WIDTH, conf.HEIGHT));
|
||||
addSetTabs();
|
||||
showCards();
|
||||
showCardsOrTokens();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ import mage.view.CardsView;
|
|||
import org.apache.log4j.Logger;
|
||||
import org.jdesktop.swingx.JXPanel;
|
||||
import org.mage.card.arcane.ManaSymbols;
|
||||
import org.mage.card.arcane.UI;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue