mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
Merge branch 'chaos-draft' into 'master'
Chaos draft See merge request core-developers/forge!999
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package forge.item.generation;
|
||||
|
||||
import forge.card.CardEdition;
|
||||
import forge.item.BoosterPack;
|
||||
import forge.item.PaperCard;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ChaosBoosterSupplier implements IUnOpenedProduct {
|
||||
private List<CardEdition> sets;
|
||||
|
||||
public ChaosBoosterSupplier(List<CardEdition> sets) {
|
||||
this.sets = sets;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PaperCard> get() {
|
||||
if (sets.size() == 0) {
|
||||
System.out.println("No chaos boosters left to supply.");
|
||||
return null;
|
||||
}
|
||||
final CardEdition set = sets.remove(0);
|
||||
final BoosterPack pack = new BoosterPack(set.getCode(), set.getBoosterTemplate());
|
||||
return pack.getCards();
|
||||
}
|
||||
}
|
||||
@@ -17,12 +17,17 @@
|
||||
*/
|
||||
package forge.limited;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Supplier;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
import forge.StaticData;
|
||||
import forge.card.CardEdition;
|
||||
import forge.deck.CardPool;
|
||||
import forge.deck.Deck;
|
||||
import forge.item.PaperCard;
|
||||
import forge.item.SealedProduct;
|
||||
import forge.item.generation.ChaosBoosterSupplier;
|
||||
import forge.item.generation.IUnOpenedProduct;
|
||||
import forge.item.generation.UnOpenedProduct;
|
||||
import forge.model.CardBlock;
|
||||
@@ -35,6 +40,7 @@ import forge.util.TextUtil;
|
||||
import forge.util.gui.SGuiChoose;
|
||||
import forge.util.gui.SOptionPane;
|
||||
import forge.util.storage.IStorage;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
import java.io.File;
|
||||
@@ -168,6 +174,40 @@ public class BoosterDraft implements IBoosterDraft {
|
||||
}
|
||||
break;
|
||||
|
||||
case Chaos:
|
||||
final CardEdition.Collection allEditions = StaticData.instance().getEditions();
|
||||
final Iterable<CardEdition> chaosDraftEditions = Iterables.filter(allEditions.getOrderedEditions(), new Predicate<CardEdition>() {
|
||||
@Override
|
||||
public boolean apply(final CardEdition cardEdition) {
|
||||
boolean isExpansion = cardEdition.getType().equals(CardEdition.Type.EXPANSION);
|
||||
boolean isCoreSet = cardEdition.getType().equals(CardEdition.Type.CORE);
|
||||
boolean isReprintSet = cardEdition.getType().equals(CardEdition.Type.REPRINT);
|
||||
if (isExpansion || isCoreSet || isReprintSet) {
|
||||
// Only allow sets with 15 cards in booster packs
|
||||
if (cardEdition.hasBoosterTemplate()) {
|
||||
final List<Pair<String, Integer>> slots = cardEdition.getBoosterTemplate().getSlots();
|
||||
int boosterSize = 0;
|
||||
for (Pair<String, Integer> slot : slots) {
|
||||
boosterSize += slot.getRight();
|
||||
}
|
||||
return boosterSize == 15;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
// Randomize order of sets
|
||||
List<CardEdition> shuffled = Lists.newArrayList(chaosDraftEditions);
|
||||
Collections.shuffle(shuffled);
|
||||
|
||||
final Supplier<List<PaperCard>> ChaosDraftSupplier = new ChaosBoosterSupplier(shuffled);
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
this.product.add(ChaosDraftSupplier);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new NoSuchElementException("Draft for mode " + this.draftFormat + " has not been set up!");
|
||||
}
|
||||
|
||||
@@ -4,7 +4,8 @@ public enum LimitedPoolType {
|
||||
Full("Full Cardpool"),
|
||||
Block("Block / Set"),
|
||||
FantasyBlock("Fantasy Block"),
|
||||
Custom("Custom Cube");
|
||||
Custom("Custom Cube"),
|
||||
Chaos("Chaos Draft");
|
||||
|
||||
private final String displayName;
|
||||
private LimitedPoolType(String name) {
|
||||
|
||||
Reference in New Issue
Block a user