public ExpansionInfo(ExpansionSet expansionSet) { this.name = expansionSet.getName(); this.code = expansionSet.getCode(); this.blockName = expansionSet.getBlockName(); this.releaseDate = expansionSet.getReleaseDate(); this.type = expansionSet.getSetType(); this.boosters = expansionSet.hasBoosters(); this.basicLands = expansionSet.hasBasicLands(); }
public List<Card> create15CardBooster() { // Forces 15 card booster packs. // if the packs are too small, it adds commons to fill it out. // if the packs are too big, it removes the first cards. // since it adds lands then commons before uncommons // and rares this should be the least disruptive. List<Card> theBooster = this.createBooster(); if (15 > theBooster.size()) { List<CardInfo> commons = getCardsByRarity(Rarity.COMMON); while (15 > theBooster.size() && !commons.isEmpty()) { addToBooster(theBooster, commons); if (commons.isEmpty()) { commons = getCardsByRarity(Rarity.COMMON); } } } while (theBooster.size() > 15) { theBooster.remove(0); } return theBooster; }
if (codesToIgnoreCheck.get(set.getCode()) != null) { continue; CheckResult res = setsToDownload.get(set.getCode()); logger.warn(String.format("Symbols: set is not configured: %s (%s)", set.getCode(), set.getName())); continue; // can't do other checks if ((set.getCardsByRarity(Rarity.COMMON).size() > 0) && !res.haveCommon) { logger.error(String.format("Symbols: set have common cards, but don't download icon: %s (%s)", set.getCode(), set.getName())); if ((set.getCardsByRarity(Rarity.UNCOMMON).size() > 0) && !res.haveUncommon) { logger.error(String.format("Symbols: set have uncommon cards, but don't download icon: %s (%s)", set.getCode(), set.getName())); if ((set.getCardsByRarity(Rarity.RARE).size() > 0) && !res.haveRare) { logger.error(String.format("Symbols: set have rare cards, but don't download icon: %s (%s)", set.getCode(), set.getName())); if ((set.getCardsByRarity(Rarity.MYTHIC).size() > 0) && !res.haveMyth) { logger.error(String.format("Symbols: set have mythic cards, but don't download icon: %s (%s)", set.getCode(), set.getName())); for (ExpansionSet.SetCardInfo card : set.getSetCardInfo()) { if (String.valueOf(card.getCardNumberAsInt()).length() != card.getCardNumber().length()) { logger.info(String.format("Symbols: set have alternative card but do not config to it: %s (%s)", set.getCode(), set.getName())); break; if (set.getMaxCardNumberInBooster() != Integer.MAX_VALUE) { for (ExpansionSet.SetCardInfo card : set.getSetCardInfo()) { if (card.getCardNumberAsInt() > set.getMaxCardNumberInBooster()) { if (card.getRarity() == Rarity.LAND) {
public List<Card> createBooster() { for (int i = 0; i < 100; i++) {//don't want to somehow loop forever List<Card> booster; if (hasPartnerMechanic) { // battlebond's partners cards booster = createPartnerBooster(); } else { // all other sets booster = tryBooster(); } if (boosterIsValid(booster)) { return booster; } } // return random booster if can't do valid logger.error(String.format("Can't generate valid booster for set [%s - %s]", this.getCode(), this.getName())); return tryBooster(); }
private static boolean isFallSet(ExpansionSet set) { Calendar cal = Calendar.getInstance(); cal.setTime(set.getReleaseDate()); // Fall sets are normally released during or after September return set.getSetType() == SetType.EXPANSION && (cal.get(Calendar.MONTH) > 7); }
public ModernNoBannedList() { super("Constructed - Modern - No Banned List"); Date cutoff = new GregorianCalendar(2003, 6, 28).getTime(); // Eight edition release date for (ExpansionSet set : Sets.getInstance().values()) { if ((set.getReleaseDate().after(cutoff) || set.getReleaseDate().equals(cutoff)) && (set.getSetType() == SetType.CORE || set.getSetType() == SetType.EXPANSION)) { setCodes.add(set.getCode()); } } } }
public AusHighlander() { this("Australian Highlander"); for (ExpansionSet set : Sets.getInstance().values()) { if (set.isEternalLegal()) { setCodes.add(set.getCode()); } } }
private String getSetNameWithYear(ExpansionSet exp) { Calendar cal = Calendar.getInstance(); cal.setTime(exp.getReleaseDate()); String year = String.valueOf(cal.get(Calendar.YEAR)); return exp.getName() + " (" + exp.getCode() + ", " + year + ")"; /* if (!exp.getName().contains(year)) { return exp.getName() + " (" + year + ")"; } else { return exp.getName(); } */ }
setCaption.setText(set.getCode() + " - " + set.getName()); } else { setCaption.setText("ERROR"); int endNumber = 0; List<ExpansionSet.SetCardInfo> cards = set.getSetCardInfo();
public DraftView(Draft draft) { if (draft.getDraftCube() != null) { for (int i = 0; i < draft.getNumberBoosters(); i++) { DraftCube cube = draft.getDraftCube(); sets.add(cube.getName()); setCodes.add(cube.getCode()); } } else { for (ExpansionSet set: draft.getSets()) { sets.add(set.getName()); setCodes.add(set.getCode()); } } this.boosterNum = draft.getBoosterNum(); this.cardNum = draft.getCardNum(); for(DraftPlayer draftPlayer :draft.getPlayers()) { players.add(draftPlayer.getPlayer().getName()); } }
List<CardInfo> specialLands = getSpecialLand(); List<CardInfo> basicLands = getCardsByRarity(Rarity.LAND); for (int i = 0; i < numBoosterLands; i++) { if (ratioBoosterSpecialLand > 0 && RandomUtil.nextInt(ratioBoosterSpecialLand) < ratioBoosterSpecialLandNumerator && specialLands != null) { addToBooster(booster, specialLands); } else { addToBooster(booster, basicLands); int numSpecialCommons = getNumberOfSpecialCommons(); int numCommonsToGenerate = numBoosterCommon - numSpecialCommons; List<CardInfo> commons = getCardsByRarity(Rarity.COMMON); for (int i = 0; i < numCommonsToGenerate; i++) { addToBooster(booster, commons); addSpecialCommon(booster, numSpecialCommons); List<CardInfo> uncommons = getCardsByRarity(Rarity.UNCOMMON); for (int i = 0; i < numBoosterUncommon; i++) { addToBooster(booster, uncommons); List<CardInfo> rares = getCardsByRarity(Rarity.RARE); List<CardInfo> mythics = getCardsByRarity(Rarity.MYTHIC); for (int i = 0; i < numBoosterRare; i++) { if (ratioBoosterMythic > 0 && RandomUtil.nextInt(ratioBoosterMythic) == 0) { addToBooster(booster, mythics); } else { addToBooster(booster, rares);
public FreeformCommander() { this("Freeform Commander"); for (ExpansionSet set : Sets.getInstance().values()) { setCodes.add(set.getCode()); } // no banned cards this.banned.clear(); }
private void CheckSearchResult(String searchCode, ExpansionSet foundedExp, boolean canDownloadTask, boolean haveCommon, boolean haveUncommon, boolean haveRare, boolean haveMyth) { // duplicated in settings CheckResult res = setsToDownload.get(searchCode); if (res != null) { logger.error(String.format("Symbols: found duplicate code: %s", searchCode)); } else { res = new CheckResult(searchCode, foundedExp, haveCommon, haveUncommon, haveRare, haveMyth); setsToDownload.put(searchCode, res); } // not found if (foundedExp == null) { logger.error(String.format("Symbols: can't find set by code: %s", searchCode)); return; } // checks for founded sets only // too early to download if (!canDownloadTask) { Calendar c = Calendar.getInstance(); c.setTime(foundedExp.getReleaseDate()); c.add(Calendar.DATE, -1 * DAYS_BEFORE_RELEASE_TO_DOWNLOAD); logger.warn(String.format("Symbols: early to download: %s (%s), available after %s", searchCode, foundedExp.getName(), c.getTime())); } }
public void addSet(ExpansionSet set) { if (containsKey(set.getCode())) { throw new IllegalArgumentException("Set code " + set.getCode() + " already exists."); } this.put(set.getCode(), set); if (set.isCustomSet()) { customSets.add(set.getCode()); } }
List<CardInfo> uncommons = getCardsByRarity(Rarity.UNCOMMON); for (int i = 0; i < numBoosterUncommon; i++) { while (true) { addToBooster(booster, uncommons); int check = addMissingPartner(booster, partnerAllowed, numBoosterUncommon - 1, i); if (check == 1) { break; int numSpecialCommons = getNumberOfSpecialCommons(); int numCommonsToGenerate = numBoosterCommon - numSpecialCommons; List<CardInfo> commons = getCardsByRarity(Rarity.COMMON); for (int i = 0; i < numCommonsToGenerate; i++) { addToBooster(booster, commons); List<CardInfo> rares = getCardsByRarity(Rarity.RARE); List<CardInfo> mythics = getCardsByRarity(Rarity.MYTHIC); for (int i = 0; i < numBoosterRare; i++) { if (ratioBoosterMythic > 0 && RandomUtil.nextInt(ratioBoosterMythic) == 0) { while (true) { addToBooster(booster, mythics); int check = addMissingPartner(booster, partnerAllowed, -1, 1); if (check == 1) { break; addToBooster(booster, rares); int check = addMissingPartner(booster, partnerAllowed, -1, 1); if (check == 1) { break;
String setNames = setsAliases.get(cardSet); if (setNames == null) { setNames = Sets.getInstance().get(cardSet).getName();
@Override protected void passLeft() { synchronized (players) { UUID startId = table.get(0); UUID currentId = startId; UUID nextId = table.getNext(); DraftPlayer next = players.get(nextId); while (true) { List<Card> nextBooster = sets.get(cardNum % sets.size()).createBooster(); next.setBooster(nextBooster); if (Objects.equals(nextId, startId)) { break; } nextId = table.getNext(); next = players.get(nextId); } } }
@Override public List<CardInfo> getCardsByRarity(Rarity rarity) { // Common cards retrievement of Core Set 2019 boosters - prevent the retrievement of the common lands (e.g. Meandering River) if (rarity == Rarity.COMMON) { List<CardInfo> savedCardsInfos = savedCards.get(rarity); if (savedCardsInfos == null) { CardCriteria criteria = new CardCriteria(); criteria.rarities(Rarity.COMMON); criteria.setCodes(this.code).notTypes(CardType.LAND); savedCardsInfos = CardRepository.instance.findCards(criteria); if (maxCardNumberInBooster != Integer.MAX_VALUE) { savedCardsInfos.removeIf(next -> next.getCardNumberAsInt() > maxCardNumberInBooster && rarity != Rarity.LAND); } savedCards.put(rarity, savedCardsInfos); } // Return a copy of the saved cards information, as not to let modify the original. return new ArrayList<>(savedCardsInfos); } else { return super.getCardsByRarity(rarity); } }
@Override public int compare(final ExpansionSet lhs, ExpansionSet rhs) { return lhs.getReleaseDate().after(rhs.getReleaseDate()) ? -1 : 1; } });
@Override protected void openBooster() { if (boosterNum < numberBoosters) { for (DraftPlayer player: players.values()) { player.setBooster(getNextBooster().create15CardBooster()); } } boosterNum++; cardNum = 1; fireUpdatePlayersEvent(); }