From 2a2f3a0cebce752c6b9903785385cdbfa5bc0034 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Sun, 6 Feb 2011 11:02:11 +0300 Subject: [PATCH] Added MBS (sets, Collection Viewer, Downloader). --- .../java/mage/client/cards/CardsStorage.java | 464 +++++++++--------- .../collection/viewer/MageBook.java | 3 +- .../plugins/card/dl/sources/GathererSets.java | 5 +- Mage.Sets/src/mage/sets/MirrodinBesieged.java | 59 +++ Mage.Sets/src/mage/sets/Sets.java | 1 + 5 files changed, 301 insertions(+), 231 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/MirrodinBesieged.java diff --git a/Mage.Client/src/main/java/mage/client/cards/CardsStorage.java b/Mage.Client/src/main/java/mage/client/cards/CardsStorage.java index dacfc66b29a..f64a7e2710c 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardsStorage.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardsStorage.java @@ -2,10 +2,7 @@ package mage.client.cards; import mage.Constants; import mage.cards.Card; -import mage.cards.CardImpl; -import mage.cards.CardsImpl; import mage.cards.ExpansionSet; -import mage.sets.ScarsOfMirrodin; import mage.sets.Sets; import mage.utils.CardUtil; @@ -19,13 +16,13 @@ import java.util.*; * @author nantuko */ public class CardsStorage { - private static List allCards = new ArrayList(); - private static Set nonBasicLandCards = new LinkedHashSet(); - private static Map ratings; - private static Integer min = Integer.MAX_VALUE, max = 0; - private static int cardsCount; - private static List setCodes = new ArrayList(); - private static List notImplementedCards; + private static List allCards = new ArrayList(); + private static Set nonBasicLandCards = new LinkedHashSet(); + private static Map ratings; + private static Integer min = Integer.MAX_VALUE, max = 0; + private static int cardsCount; + private static List setCodes = new ArrayList(); + private static List notImplementedCards; /** * Rating that is given for new cards. @@ -33,233 +30,248 @@ public class CardsStorage { */ private static final int DEFAULT_NOT_RATED_CARD_RATING = 6; - static { - for (ExpansionSet set : Sets.getInstance().values()) { - setCodes.add(set.getCode()); - Set cards = set.createCards(); - allCards.addAll(cards); - for (Card card : cards) { - if (CardUtil.isLand(card) && !CardUtil.isBasicLand(card)) { - nonBasicLandCards.add(card); - } - } - } - Collections.sort(allCards, new CardComparator()); - Collections.sort(setCodes, new SetComparator()); - cardsCount = allCards.size(); - } + static { + for (ExpansionSet set : Sets.getInstance().values()) { + setCodes.add(set.getCode()); + Set cards = set.createCards(); + allCards.addAll(cards); + for (Card card : cards) { + if (CardUtil.isLand(card) && !CardUtil.isBasicLand(card)) { + nonBasicLandCards.add(card); + } + } + } + Collections.sort(allCards, new CardComparator()); + Collections.sort(setCodes, new SetComparator()); + cardsCount = allCards.size(); + } - public static List getAllCards() { - return allCards; - } + public static List getAllCards() { + return allCards; + } - /** - * Get cards from card pool starting from start index and ending with end index. - * Can filter cards by set (if parameter is not null). - * - * @param start - * @param end - * @param set Cards set code. Can be null. - * @param onlyImplemented return only implemented cards - * @return - */ - public static List getAllCards(int start, int end, String set, boolean onlyImplemented) { - List cards = new ArrayList(); - List pool; - if (set == null) { - pool = allCards; - } else { - pool = new ArrayList(); - for (Card card : allCards) { - if (card.getExpansionSetCode().equals(set)) { - pool.add(card); - } - } - } - if (!onlyImplemented) { - for (Card card : getNotImplementedCards()) { - if (card.getExpansionSetCode().equals(set)) { - pool.add(card); - } - } - Collections.sort(pool, new CardComparator()); - } - for (int i = start; i < Math.min(end + 1, pool.size()); i++) { - cards.add(pool.get(i)); - } - return cards; - } + /** + * Get cards from card pool starting from start index and ending with end index. + * Can filter cards by set (if parameter is not null). + * + * @param start + * @param end + * @param set Cards set code. Can be null. + * @param onlyImplemented return only implemented cards + * @return + */ + public static List getAllCards(int start, int end, String set, boolean onlyImplemented) { + List cards = new ArrayList(); + List pool; + if (set == null) { + pool = allCards; + } else { + pool = new ArrayList(); + for (Card card : allCards) { + if (card.getExpansionSetCode().equals(set)) { + pool.add(card); + } + } + } + if (!onlyImplemented) { + for (Card card : getNotImplementedCards()) { + if (card.getExpansionSetCode().equals(set)) { + pool.add(card); + } + } + Collections.sort(pool, new CardComparator()); + } + for (int i = start; i < Math.min(end + 1, pool.size()); i++) { + cards.add(pool.get(i)); + } + return cards; + } - public static int getCardsCount() { - return cardsCount; - } + public static int getCardsCount() { + return cardsCount; + } - public static List getSetCodes() { - return setCodes; - } + public static List getSetCodes() { + return setCodes; + } - public static Set getNonBasicLandCards() { - return nonBasicLandCards; - } + public static Set getNonBasicLandCards() { + return nonBasicLandCards; + } - /** - * Return rating of a card: 1-10. - * - * @param card - * @return - */ - public static int rateCard(Card card) { - if (ratings == null) { - readRatings(); - } - if (ratings.containsKey(card.getName())) { - int r = ratings.get(card.getName()); - float f = 10.0f * (r - min) / (max - min); - // normalize to [1..10] - return (int) Math.round(f); - } - return DEFAULT_NOT_RATED_CARD_RATING; - } + /** + * Return rating of a card: 1-10. + * + * @param card + * @return + */ + public static int rateCard(Card card) { + if (ratings == null) { + readRatings(); + } + if (ratings.containsKey(card.getName())) { + int r = ratings.get(card.getName()); + float f = 10.0f * (r - min) / (max - min); + // normalize to [1..10] + return (int) Math.round(f); + } + return DEFAULT_NOT_RATED_CARD_RATING; + } - private synchronized static void readRatings() { - if (ratings == null) { - ratings = new HashMap(); - String filename = "/ratings.txt"; - try { - InputStream is = CardsStorage.class.getResourceAsStream(filename); - Scanner scanner = new Scanner(is); - while (scanner.hasNextLine()) { - String line = scanner.nextLine(); - String[] s = line.split(":"); - if (s.length == 2) { - Integer rating = Integer.parseInt(s[0].trim()); - String name = s[1].trim(); - if (rating > max) { - max = rating; - } - if (rating < min) { - min = rating; - } - ratings.put(name, rating); - } - } - } catch (Exception e) { - e.printStackTrace(); - ratings.clear(); // no rating available on exception - } - } - } + private synchronized static void readRatings() { + if (ratings == null) { + ratings = new HashMap(); + String filename = "/ratings.txt"; + try { + InputStream is = CardsStorage.class.getResourceAsStream(filename); + Scanner scanner = new Scanner(is); + while (scanner.hasNextLine()) { + String line = scanner.nextLine(); + String[] s = line.split(":"); + if (s.length == 2) { + Integer rating = Integer.parseInt(s[0].trim()); + String name = s[1].trim(); + if (rating > max) { + max = rating; + } + if (rating < min) { + min = rating; + } + ratings.put(name, rating); + } + } + } catch (Exception e) { + e.printStackTrace(); + ratings.clear(); // no rating available on exception + } + } + } - /** - * Get list of not implemented cards. - * Used in collection viewer to show what cards need to be done for the latest set. - * - * @return - */ - public static List getNotImplementedCards() { - List cards = new ArrayList(); - if (notImplementedCards == null) { - String filename = "/som.txt"; - if (allCards.size() == 0) { - return cards; - } - Card tmp = allCards.get(0); - Set names = new HashSet(); - for (Card card : allCards) { - names.add(card.getExpansionSetCode() + card.getName()); - } - try { - InputStream is = CardsStorage.class.getResourceAsStream(filename); - Scanner scanner = new Scanner(is); - String set = "SOM"; - while (scanner.hasNextLine()) { - String line = scanner.nextLine(); - String[] s = line.split("\\|"); - if (s.length == 6) { - String name = s[1].trim(); - if (!names.contains(set + name)) { - Integer cid = Integer.parseInt(s[5]); - Card card = tmp.copy(); - card.setName(name); - card.setExpansionSetCode(set); - card.setCardNumber(cid); - card.setRarity(Constants.Rarity.NA); // mark as not implemented - card.getCardType().clear(); - cards.add(card); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - names.clear(); - names = null; - } - return cards; - } + /** + * Get list of not implemented cards. + * Used in collection viewer to show what cards need to be done for the latest set. + * + * @return + */ + public static List getNotImplementedCards() { + List cards = new ArrayList(); + if (notImplementedCards == null) { + String filename = "/som.txt"; + if (allCards.size() == 0) { + return cards; + } - public static void main(String[] argv) { - for (Card card : getAllCards()) { - String name = card.getName(); - if (name.equals("Baneslayer Angel") || name.equals("Lightning Bolt") || name.equals("Zombie Outlander") - || name.equals("Naturalize") || name.equals("Kraken's Eye") || name.equals("Serra Angel")) { - System.out.println(name + " : " + rateCard(card)); - } - } - } + Set names = new HashSet(); + for (Card card : allCards) { + names.add(card.getExpansionSetCode() + card.getName()); + } - /** - * Card comparator. - * First compares set codes, then collector ids and just then card names. - *

- * Show latest set cards on top. - * - * @author nantuko - */ - private static class CardComparator implements Comparator { - private static final String LATEST_SET_CODE = "SOM"; + readUnimplemented("SOM", "/som.txt", names, cards); + readUnimplemented("MBS", "/mbs.txt", names, cards); - @Override - public int compare(Card o1, Card o2) { - String set1 = o1.getExpansionSetCode(); - String set2 = o2.getExpansionSetCode(); - if (set1.equals(set2)) { - Integer cid1 = o1.getCardNumber(); - Integer cid2 = o2.getCardNumber(); - if (cid1 == cid2) { - return o1.getName().compareTo(o2.getName()); - } else { - return cid1.compareTo(cid2); - } - } else { - // put latest set on top - if (set1.equals(LATEST_SET_CODE)) { - return -1; - } - if (set2.equals(LATEST_SET_CODE)) { - return 1; - } - return set1.compareTo(set2); - } - } - } + names.clear(); + names = null; + } + return cards; + } - /** - * Set comparator. Puts latest set on top. - */ - private static class SetComparator implements Comparator { - private static final String LATEST_SET_CODE = "SOM"; + private static void readUnimplemented(String set, String filename, Set names, List cards) { + try { + Card tmp = allCards.get(0); + InputStream is = CardsStorage.class.getResourceAsStream(filename); + Scanner scanner = new Scanner(is); + while (scanner.hasNextLine()) { + String line = scanner.nextLine(); + String[] s = line.split("\\|"); + if (s.length == 6) { + String name = s[1].trim(); + if (!names.contains(set + name)) { + Integer cid = Integer.parseInt(s[5]); + Card card = tmp.copy(); + card.setName(name); + card.setExpansionSetCode(set); + card.setCardNumber(cid); + card.setRarity(Constants.Rarity.NA); // mark as not implemented + card.getCardType().clear(); + cards.add(card); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } - @Override - public int compare(String set1, String set2) { - // put latest set on top - if (set1.equals(LATEST_SET_CODE)) { - return -1; - } - if (set2.equals(LATEST_SET_CODE)) { - return 1; - } - return set1.compareTo(set2); - } - } + public static void main(String[] argv) { + for (Card card : getAllCards()) { + String name = card.getName(); + if (name.equals("Baneslayer Angel") || name.equals("Lightning Bolt") || name.equals("Zombie Outlander") + || name.equals("Naturalize") || name.equals("Kraken's Eye") || name.equals("Serra Angel")) { + System.out.println(name + " : " + rateCard(card)); + } + } + } + + /** + * Card comparator. + * First compares set codes, then collector ids and just then card names. + *

+ * Show latest set cards on top. + * + * @author nantuko + */ + private static class CardComparator implements Comparator { + private static final String LATEST_SET_CODE = "SOM"; + + @Override + public int compare(Card o1, Card o2) { + String set1 = o1.getExpansionSetCode(); + String set2 = o2.getExpansionSetCode(); + if (set1.equals(set2)) { + Integer cid1 = o1.getCardNumber(); + Integer cid2 = o2.getCardNumber(); + if (cid1 == cid2) { + return o1.getName().compareTo(o2.getName()); + } else { + return cid1.compareTo(cid2); + } + } else { + // put latest set on top + if (set1.equals(LATEST_SET_CODE)) { + return -1; + } + if (set2.equals(LATEST_SET_CODE)) { + return 1; + } + return set1.compareTo(set2); + } + } + } + + /** + * Set comparator. Puts latest set on top. + */ + private static class SetComparator implements Comparator { + private static final String LATEST_SET_CODE = "SOM"; + private static final String LATEST_SET_CODE_2 = "MBS"; + + @Override + public int compare(String set1, String set2) { + // put latest set on top + if (set1.equals(LATEST_SET_CODE)) { + return -1; + } + if (set2.equals(LATEST_SET_CODE)) { + return 1; + } + + if (set1.equals(LATEST_SET_CODE_2)) { + return -1; + } + if (set2.equals(LATEST_SET_CODE_2)) { + return 1; + } + return set1.compareTo(set2); + } + } } diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java b/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java index 0e211202784..803971b8d62 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/collection/viewer/MageBook.java @@ -295,10 +295,9 @@ public class MageBook extends JComponent { private HoverButton pageRight; private int currentPage = 0; - private String currentSet = "SOM"; + private String currentSet = "MBS"; private static CardDimensions cardDimensions = new CardDimensions(1.2d); - private static Font font = new Font("Arial", Font.PLAIN, 14); private static final Logger log = Logger.getLogger(MageBook.class); private Dimension cardDimension; diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java index 84ac8a0d959..bee56113071 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java @@ -12,9 +12,8 @@ import static org.mage.plugins.card.dl.DownloadJob.toFile; public class GathererSets implements Iterable { private static final File outDir = new File("plugins/images/sets"); - private static final String[] symbols = {"DIS", "GPT", "RAV", "MRD", - "10E", "HOP"}; - private static final String[] withMythics = {"ALA", "CFX", "ARB", "ZEN", "WWK", "ROE", "SOM", "M10", "M11", "DDF"}; + private static final String[] symbols = {"DIS", "GPT", "RAV", "MRD", "10E", "HOP"}; + private static final String[] withMythics = {"ALA", "CFX", "ARB", "ZEN", "WWK", "ROE", "SOM", "M10", "M11", "DDF", "MBS"}; @Override public Iterator iterator() { diff --git a/Mage.Sets/src/mage/sets/MirrodinBesieged.java b/Mage.Sets/src/mage/sets/MirrodinBesieged.java new file mode 100644 index 00000000000..17b2279a75d --- /dev/null +++ b/Mage.Sets/src/mage/sets/MirrodinBesieged.java @@ -0,0 +1,59 @@ +/* +* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this list of +* conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, this list +* of conditions and the following disclaimer in the documentation and/or other materials +* provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR +* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* The views and conclusions contained in the software and documentation are those of the +* authors and should not be interpreted as representing official policies, either expressed +* or implied, of BetaSteward_at_googlemail.com. +*/ + +package mage.sets; + +import mage.Constants.SetType; +import mage.cards.ExpansionSet; + +import java.util.GregorianCalendar; + +/** + * + * @author nantuko84 + */ +public class MirrodinBesieged extends ExpansionSet { + + private static final MirrodinBesieged fINSTANCE = new MirrodinBesieged(); + + public static MirrodinBesieged getInstance() { + return fINSTANCE; + } + + private MirrodinBesieged() { + super("Mirrodin Besieged", "MBS", "seticon_mtgmbs", "mage.sets.mirrodinbesieged", new GregorianCalendar(2011, 02, 4).getTime(), SetType.EXPANSION); + this.blockName = "Mirrodin Besieged"; + this.hasBoosters = true; + this.numBoosterLands = 1; + this.numBoosterCommon = 10; + this.numBoosterUncommon = 3; + this.numBoosterRare = 1; + this.ratioBoosterMythic = 8; + } + +} diff --git a/Mage.Sets/src/mage/sets/Sets.java b/Mage.Sets/src/mage/sets/Sets.java index c905f9a6f0e..a995ab21993 100644 --- a/Mage.Sets/src/mage/sets/Sets.java +++ b/Mage.Sets/src/mage/sets/Sets.java @@ -69,6 +69,7 @@ public class Sets extends HashMap { this.addSet(Magic2010.getInstance()); this.addSet(Magic2011.getInstance()); this.addSet(Mirrodin.getInstance()); + this.addSet(MirrodinBesieged.getInstance()); this.addSet(Planechase.getInstance()); this.addSet(RavnicaCityOfGuilds.getInstance()); this.addSet(RiseOfTheEldrazi.getInstance());