mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +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;
|
package forge.limited;
|
||||||
|
|
||||||
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.base.Supplier;
|
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.card.CardEdition;
|
||||||
import forge.deck.CardPool;
|
import forge.deck.CardPool;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.item.SealedProduct;
|
import forge.item.SealedProduct;
|
||||||
|
import forge.item.generation.ChaosBoosterSupplier;
|
||||||
import forge.item.generation.IUnOpenedProduct;
|
import forge.item.generation.IUnOpenedProduct;
|
||||||
import forge.item.generation.UnOpenedProduct;
|
import forge.item.generation.UnOpenedProduct;
|
||||||
import forge.model.CardBlock;
|
import forge.model.CardBlock;
|
||||||
@@ -35,6 +40,7 @@ import forge.util.TextUtil;
|
|||||||
import forge.util.gui.SGuiChoose;
|
import forge.util.gui.SGuiChoose;
|
||||||
import forge.util.gui.SOptionPane;
|
import forge.util.gui.SOptionPane;
|
||||||
import forge.util.storage.IStorage;
|
import forge.util.storage.IStorage;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -168,6 +174,40 @@ public class BoosterDraft implements IBoosterDraft {
|
|||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
throw new NoSuchElementException("Draft for mode " + this.draftFormat + " has not been set up!");
|
throw new NoSuchElementException("Draft for mode " + this.draftFormat + " has not been set up!");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ public enum LimitedPoolType {
|
|||||||
Full("Full Cardpool"),
|
Full("Full Cardpool"),
|
||||||
Block("Block / Set"),
|
Block("Block / Set"),
|
||||||
FantasyBlock("Fantasy Block"),
|
FantasyBlock("Fantasy Block"),
|
||||||
Custom("Custom Cube");
|
Custom("Custom Cube"),
|
||||||
|
Chaos("Chaos Draft");
|
||||||
|
|
||||||
private final String displayName;
|
private final String displayName;
|
||||||
private LimitedPoolType(String name) {
|
private LimitedPoolType(String name) {
|
||||||
|
|||||||
Reference in New Issue
Block a user