/* * Copyright 2011 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.deck; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.GregorianCalendar; import java.util.Iterator; import java.util.List; import mage.cards.ExpansionSet; import mage.cards.Sets; import mage.cards.decks.Constructed; import mage.constants.SetType; /** * * @author BetaSteward_at_googlemail.com */ public class Standard extends Constructed { public Standard() { super("Constructed - Standard"); GregorianCalendar current = new GregorianCalendar(); List<ExpansionSet> sets = new ArrayList(Sets.getInstance().values()); Collections.sort(sets, new Comparator<ExpansionSet>() { @Override public int compare(final ExpansionSet lhs, ExpansionSet rhs) { return lhs.getReleaseDate().after(rhs.getReleaseDate()) ? -1 : 1; } }); int blocksAdded = 0; int blocksToAdd = 3; for (Iterator<ExpansionSet> iter = sets.iterator(); iter.hasNext() && blocksAdded < blocksToAdd;) { ExpansionSet set = iter.next(); if (set.getSetType() == SetType.CORE || set.getSetType() == SetType.EXPANSION || set.getSetType() == SetType.SUPPLEMENTAL_STANDARD_LEGAL) { // Still adding core sets because of Magic Origins setCodes.add(set.getCode()); if (set.getReleaseDate().before(current.getTime()) // This stops spoiled sets from counting as "new" blocks && set.getParentSet() == null && set.getSetType() == SetType.EXPANSION) { if (blocksAdded == 0 && !isFallBlock(set)) { // if the most current block is no fall block, 4 blocks are added blocksToAdd++; } blocksAdded++; } } } banned.add("Emrakul, the Promised End"); banned.add("Reflector Mage"); banned.add("Smuggler's Copter"); banned.add("Felidar Guardian"); } private static boolean isFallBlock(ExpansionSet set) { Calendar cal = Calendar.getInstance(); cal.setTime(set.getReleaseDate()); // Sets from fall block are normally released in September and January return cal.get(Calendar.MONTH) > 8 || cal.get(Calendar.MONTH) < 2; } }