mirror of
https://github.com/magefree/mage.git
synced 2025-12-25 04:52:07 -08:00
Merge branch 'master' into additional-mulligan-support-5600
This commit is contained in:
commit
47c9aab877
39 changed files with 546 additions and 320 deletions
|
|
@ -1,53 +1,46 @@
|
|||
|
||||
package mage.client.deck.generator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public enum DeckGeneratorCMC {
|
||||
|
||||
Low(
|
||||
new ArrayList<CMC>() {{
|
||||
add(new CMC(0, 2, 0.60f));
|
||||
add(new CMC(3, 4, 0.30f));
|
||||
add(new CMC(5, 6, 0.10f));
|
||||
}},
|
||||
new ArrayList<CMC>() {{
|
||||
add(new CMC(0, 2, 0.65f));
|
||||
add(new CMC(3, 4, 0.30f));
|
||||
add(new CMC(5, 5, 0.05f));
|
||||
}}),
|
||||
Default(
|
||||
new ArrayList<CMC>() {{
|
||||
add(new CMC(0, 2, 0.20f));
|
||||
add(new CMC(3, 5, 0.50f));
|
||||
add(new CMC(6, 7, 0.25f));
|
||||
add(new CMC(8, 100, 0.05f));
|
||||
}},
|
||||
new ArrayList<CMC>() {{
|
||||
add(new CMC(0, 2, 0.30f));
|
||||
add(new CMC(3, 4, 0.45f));
|
||||
add(new CMC(5, 6, 0.20f));
|
||||
add(new CMC(7, 100, 0.05f));
|
||||
}}),
|
||||
High(
|
||||
new ArrayList<CMC>() {{
|
||||
add(new CMC(0, 2, 0.05f));
|
||||
add(new CMC(3, 5, 0.35f));
|
||||
add(new CMC(6, 7, 0.40f));
|
||||
add(new CMC(8, 100, 0.15f));
|
||||
}},
|
||||
new ArrayList<CMC>() {{
|
||||
add(new CMC(0, 2, 0.10f));
|
||||
add(new CMC(3, 4, 0.30f));
|
||||
add(new CMC(5, 6, 0.45f));
|
||||
add(new CMC(7, 100, 0.15f));
|
||||
}});
|
||||
Low(ImmutableList.<CMC>builder()
|
||||
.add(new CMC(0, 2, 0.60f))
|
||||
.add(new CMC(3, 4, 0.30f))
|
||||
.add(new CMC(5, 6, 0.10f)).build(),
|
||||
ImmutableList.<CMC>builder()
|
||||
.add(new CMC(0, 2, 0.65f))
|
||||
.add(new CMC(3, 4, 0.30f))
|
||||
.add(new CMC(5, 5, 0.05f)).build()),
|
||||
Default(ImmutableList.<CMC>builder()
|
||||
.add(new CMC(0, 2, 0.20f))
|
||||
.add(new CMC(3, 5, 0.50f))
|
||||
.add(new CMC(6, 7, 0.25f))
|
||||
.add(new CMC(8, 100, 0.05f)).build(),
|
||||
ImmutableList.<CMC>builder()
|
||||
.add(new CMC(0, 2, 0.30f))
|
||||
.add(new CMC(3, 4, 0.45f))
|
||||
.add(new CMC(5, 6, 0.20f))
|
||||
.add(new CMC(7, 100, 0.05f)).build()),
|
||||
|
||||
private final ArrayList<CMC> poolCMCs60;
|
||||
private final ArrayList<CMC> poolCMCs40;
|
||||
High(ImmutableList.<CMC>builder().
|
||||
add(new CMC(0, 2, 0.05f))
|
||||
.add(new CMC(3, 5, 0.35f))
|
||||
.add(new CMC(6, 7, 0.40f))
|
||||
.add(new CMC(8, 100, 0.15f)).build(),
|
||||
ImmutableList.<CMC>builder().
|
||||
add(new CMC(0, 2, 0.10f))
|
||||
.add(new CMC(3, 4, 0.30f))
|
||||
.add(new CMC(5, 6, 0.45f))
|
||||
.add(new CMC(7, 100, 0.15f)).build());
|
||||
|
||||
DeckGeneratorCMC(ArrayList<CMC> CMCs60, ArrayList<CMC> CMCs40) {
|
||||
private final List<CMC> poolCMCs60;
|
||||
private final List<CMC> poolCMCs40;
|
||||
|
||||
DeckGeneratorCMC(List<CMC> CMCs60, List<CMC> CMCs40) {
|
||||
this.poolCMCs60 = CMCs60;
|
||||
this.poolCMCs40 = CMCs40;
|
||||
}
|
||||
|
|
@ -60,8 +53,7 @@ public enum DeckGeneratorCMC {
|
|||
return this.poolCMCs60;
|
||||
}
|
||||
|
||||
static class CMC
|
||||
{
|
||||
static class CMC {
|
||||
public final int min;
|
||||
public final int max;
|
||||
public final float percentage;
|
||||
|
|
@ -69,12 +61,12 @@ public enum DeckGeneratorCMC {
|
|||
|
||||
/**
|
||||
* Constructs a CMC range given a minimum and maximum, and the percentage of cards that are in this range.
|
||||
* @param min the minimum CMC a card in this range can be.
|
||||
* @param max the maximum CMC a card in this range can be.
|
||||
*
|
||||
* @param min the minimum CMC a card in this range can be.
|
||||
* @param max the maximum CMC a card in this range can be.
|
||||
* @param percentage the percentage of cards in the range (min, max)
|
||||
*/
|
||||
CMC(int min, int max, float percentage)
|
||||
{
|
||||
CMC(int min, int max, float percentage) {
|
||||
this.min = min;
|
||||
this.max = max;
|
||||
this.percentage = percentage;
|
||||
|
|
@ -82,19 +74,19 @@ public enum DeckGeneratorCMC {
|
|||
|
||||
/**
|
||||
* Sets the amount of cards needed in this CMC range.
|
||||
*
|
||||
* @param amount the number of cards needed.
|
||||
*/
|
||||
public void setAmount(int amount)
|
||||
{
|
||||
public void setAmount(int amount) {
|
||||
this.amount = amount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the number of cards needed in this CMC range.
|
||||
*
|
||||
* @return the number of cards needed in this CMC range.
|
||||
*/
|
||||
public int getAmount()
|
||||
{
|
||||
public int getAmount() {
|
||||
return this.amount;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import javax.swing.*;
|
|||
import javax.swing.border.CompoundBorder;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.swing.border.EtchedBorder;
|
||||
import mage.cards.Sets;
|
||||
import mage.cards.decks.Deck;
|
||||
import mage.client.MageFrame;
|
||||
import mage.client.dialog.PreferencesDialog;
|
||||
|
|
@ -19,6 +18,8 @@ import mage.client.util.gui.ColorsChooser;
|
|||
import mage.client.util.gui.FastSearchUtil;
|
||||
import mage.client.util.sets.ConstructedFormats;
|
||||
|
||||
import static mage.cards.decks.DeckFormats.DCK;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Simown
|
||||
|
|
@ -328,7 +329,7 @@ public class DeckGeneratorDialog {
|
|||
tmp.getParentFile().mkdirs();
|
||||
tmp.createNewFile();
|
||||
deck.setName(deckName);
|
||||
Sets.saveDeck(tmp.getAbsolutePath(), deck.getDeckCardLists());
|
||||
DCK.getExporter().writeDeck(tmp.getAbsolutePath(), deck.getDeckCardLists());
|
||||
cleanUp();
|
||||
return tmp.getAbsolutePath();
|
||||
} catch (Exception e) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package mage.client.deckeditor;
|
||||
|
||||
import mage.cards.Card;
|
||||
import mage.cards.Sets;
|
||||
import mage.cards.decks.Deck;
|
||||
import mage.cards.decks.DeckCardLists;
|
||||
import mage.cards.decks.DnDDeckTargetListener;
|
||||
|
|
@ -35,12 +34,13 @@ import java.awt.*;
|
|||
import java.awt.dnd.DropTarget;
|
||||
import java.awt.event.*;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
import static mage.cards.decks.DeckFormats.DCK;
|
||||
|
||||
/**
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
|
|
@ -965,8 +965,8 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
DeckCardLists cardLists = deck.getDeckCardLists();
|
||||
cardLists.setCardLayout(deckArea.getCardLayout());
|
||||
cardLists.setSideboardLayout(deckArea.getSideboardLayout());
|
||||
Sets.saveDeck(fileName, cardLists);
|
||||
} catch (FileNotFoundException ex) {
|
||||
DCK.getExporter().writeDeck(fileName, cardLists);
|
||||
} catch (IOException ex) {
|
||||
JOptionPane.showMessageDialog(MageFrame.getDesktop(), ex.getMessage() + "\nTry ensuring that the selected directory is writable.", "Error saving deck", JOptionPane.ERROR_MESSAGE);
|
||||
} finally {
|
||||
MageFrame.getDesktop().setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
||||
|
|
|
|||
|
|
@ -1,22 +1,15 @@
|
|||
|
||||
/*
|
||||
* ErrorDialog.java
|
||||
*
|
||||
* Created on Dec 23, 2009, 11:01:32 AM
|
||||
*/
|
||||
package mage.client.dialog;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.plaf.basic.BasicInternalFrameUI;
|
||||
import mage.client.MageFrame;
|
||||
import mage.client.util.GUISizeHelper;
|
||||
import mage.constants.PlayerAction;
|
||||
import mage.view.UserRequestMessage;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.plaf.basic.BasicInternalFrameUI;
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public class UserRequestDialog extends MageDialog {
|
||||
|
|
@ -34,7 +27,7 @@ public class UserRequestDialog extends MageDialog {
|
|||
private void setGUISize() {
|
||||
Font font = GUISizeHelper.gameRequestsFont;
|
||||
lblText.setFont(font);
|
||||
lblText.setMaximumSize(new Dimension(300 + font.getSize() * 15, 20 + font.getSize() * 5));
|
||||
lblText.setMaximumSize(new Dimension(300 + font.getSize() * 15, 200 + font.getSize() * 5));
|
||||
lblText.setMinimumSize(new Dimension(300 + font.getSize() * 15, 20 + font.getSize() * 5));
|
||||
lblText.setPreferredSize(new Dimension(300 + font.getSize() * 15, 20 + font.getSize() * 5));
|
||||
btn1.setFont(font);
|
||||
|
|
@ -58,7 +51,7 @@ public class UserRequestDialog extends MageDialog {
|
|||
|
||||
public void showDialog(UserRequestMessage userRequestMessage) {
|
||||
this.userRequestMessage = userRequestMessage;
|
||||
this.setTitle(userRequestMessage.getTitel());
|
||||
this.setTitle(userRequestMessage.getTitle());
|
||||
String text = "<html><p style=\"text-align:center; margin-left:10px; margin-right:10px\">" + userRequestMessage.getMessage() + "</p></html>";
|
||||
this.lblText.setText(text);
|
||||
if (userRequestMessage.getButton1Text() != null) {
|
||||
|
|
@ -128,30 +121,30 @@ public class UserRequestDialog extends MageDialog {
|
|||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||
getContentPane().setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addComponent(lblText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(btn3, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(btn2, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(btn1, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)))
|
||||
.addContainerGap())
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addComponent(lblText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(btn3, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(btn2, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(btn1, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)))
|
||||
.addContainerGap())
|
||||
);
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(lblText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(btn1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(btn2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(btn3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
.addGap(12, 12, 12))
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(lblText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(btn1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(btn2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(btn3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
.addGap(12, 12, 12))
|
||||
);
|
||||
|
||||
pack();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package org.mage.plugins.card.dl.sources;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import org.tritonus.share.ArraySet;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
|
@ -12,22 +13,19 @@ import java.util.Set;
|
|||
*/
|
||||
public class ScryfallImageSupportCards {
|
||||
|
||||
private static final Map<String, String> xmageSetsToScryfall = new HashMap<String, String>() {
|
||||
{
|
||||
// xmage -> scryfall
|
||||
put("DD3GVL", "gvl");
|
||||
put("DD3JVC", "jvc");
|
||||
put("DD3DVD", "dvd");
|
||||
put("DD3EVG", "evg");
|
||||
put("MPS-AKH", "mp2");
|
||||
put("MBP", "pmei");
|
||||
put("WMCQ", "pwcq");
|
||||
put("EURO", "pelp");
|
||||
put("GPX", "pgpx");
|
||||
put("MED", "me1");
|
||||
put("MEDM", "med");
|
||||
}
|
||||
};
|
||||
private static final Map<String, String> xmageSetsToScryfall = ImmutableMap.<String, String>builder().put("DD3GVL", "gvl").
|
||||
put("DD3JVC", "jvc").
|
||||
put("DD3DVD", "dvd").
|
||||
put("DD3EVG", "evg").
|
||||
put("MPS-AKH", "mp2").
|
||||
put("MBP", "pmei").
|
||||
put("WMCQ", "pwcq").
|
||||
put("EURO", "pelp").
|
||||
put("GPX", "pgpx").
|
||||
put("MED", "me1").
|
||||
put("MEDM", "med").build();
|
||||
|
||||
|
||||
|
||||
private static final Set<String> supportedSets = new ArraySet<String>() {
|
||||
{
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ public enum TokensMtgImageSource implements CardImageSource {
|
|||
}
|
||||
|
||||
// Image URL contains token number
|
||||
// e.g. http://tokens.mtg.onl/tokens/ORI_010-Thopter.jpg -- token number 010
|
||||
// e.g. https://tokens.mtg.onl/tokens/ORI_010-Thopter.jpg -- token number 010
|
||||
// We don't know these numbers, but we can take them from a file
|
||||
// with tokens information that can be downloaded from the site.
|
||||
if (tokensData.isEmpty()) {
|
||||
|
|
@ -115,7 +115,7 @@ public enum TokensMtgImageSource implements CardImageSource {
|
|||
tokenData = list.get(card.getType() - 1);
|
||||
}
|
||||
|
||||
String url = "http://tokens.mtg.onl/tokens/" + tokenData.getExpansionSetCode().trim() + '_'
|
||||
String url = "https://tokens.mtg.onl/tokens/" + tokenData.getExpansionSetCode().trim() + '_'
|
||||
+ tokenData.getNumber().trim() + '-' + tokenData.getName().trim() + ".jpg";
|
||||
url = url.replace(' ', '-');
|
||||
return new CardImageUrls(url);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue