mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Added some random BoosterPacks to shop
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package forge.card;
|
package forge.card;
|
||||||
|
|
||||||
|
import forge.game.GameFormat;
|
||||||
import net.slightlymagic.braids.util.lambda.Lambda1;
|
import net.slightlymagic.braids.util.lambda.Lambda1;
|
||||||
|
import net.slightlymagic.maxmtg.Predicate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>CardSet class.</p>
|
* <p>CardSet class.</p>
|
||||||
@@ -97,4 +99,22 @@ public final class CardSet implements Comparable<CardSet> { // immutable
|
|||||||
public int getLand() { return nLand; }
|
public int getLand() { return nLand; }
|
||||||
public int getFoilChance() { return foilRate; }
|
public int getFoilChance() { return foilRate; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static abstract class Predicates {
|
||||||
|
public final static Predicate<CardSet> canMakeBooster = new CanMakeBooster();
|
||||||
|
public final static Predicate<CardSet> isLegalInFormat(GameFormat format) { return new LegalInFormat(format); }
|
||||||
|
|
||||||
|
private static class CanMakeBooster extends Predicate<CardSet> {
|
||||||
|
public boolean isTrue(CardSet subject) {
|
||||||
|
return subject.canGenerateBooster();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private static class LegalInFormat extends Predicate<CardSet> {
|
||||||
|
private final GameFormat format;
|
||||||
|
public LegalInFormat(final GameFormat fmt) { format = fmt; }
|
||||||
|
public boolean isTrue(CardSet subject) {
|
||||||
|
return format.isSetLegal(subject.getCode());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ public final class GameFormat {
|
|||||||
public Predicate<CardPrinted> getFilterRules() { return filterRules; }
|
public Predicate<CardPrinted> getFilterRules() { return filterRules; }
|
||||||
public Predicate<CardPrinted> getFilterPrinted() { return filterPrinted; }
|
public Predicate<CardPrinted> getFilterPrinted() { return filterPrinted; }
|
||||||
|
|
||||||
|
public boolean isSetLegal(String setCode) { return allowedSetCodes.isEmpty() || allowedSetCodes.contains(setCode); }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package forge.item;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.slightlymagic.braids.util.lambda.Lambda1;
|
||||||
|
|
||||||
import forge.SetUtils;
|
import forge.SetUtils;
|
||||||
import forge.card.BoosterGenerator;
|
import forge.card.BoosterGenerator;
|
||||||
import forge.card.CardSet;
|
import forge.card.CardSet;
|
||||||
@@ -12,6 +14,9 @@ import forge.card.CardSet;
|
|||||||
*/
|
*/
|
||||||
public class BoosterPack implements InventoryItemFromSet {
|
public class BoosterPack implements InventoryItemFromSet {
|
||||||
|
|
||||||
|
public final static Lambda1<BoosterPack, CardSet> fnFromSet = new Lambda1<BoosterPack, CardSet>() {
|
||||||
|
@Override public BoosterPack apply(CardSet arg1) { return new BoosterPack(arg1); } };
|
||||||
|
|
||||||
private final CardSet cardSet;
|
private final CardSet cardSet;
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,11 @@ import java.util.Map.Entry;
|
|||||||
import net.slightlymagic.braids.util.lambda.Lambda1;
|
import net.slightlymagic.braids.util.lambda.Lambda1;
|
||||||
import net.slightlymagic.maxmtg.Predicate;
|
import net.slightlymagic.maxmtg.Predicate;
|
||||||
|
|
||||||
|
import forge.SetUtils;
|
||||||
import forge.card.BoosterGenerator;
|
import forge.card.BoosterGenerator;
|
||||||
import forge.card.CardRarity;
|
import forge.card.CardRarity;
|
||||||
import forge.card.BoosterUtils;
|
import forge.card.BoosterUtils;
|
||||||
|
import forge.card.CardSet;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.item.BoosterPack;
|
import forge.item.BoosterPack;
|
||||||
import forge.item.CardDb;
|
import forge.item.CardDb;
|
||||||
@@ -163,7 +165,11 @@ public final class QuestUtilCards {
|
|||||||
|
|
||||||
addBasicLands(q.shopList, 10, 5);
|
addBasicLands(q.shopList, 10, 5);
|
||||||
|
|
||||||
q.shopList.add(new BoosterPack("M10"));
|
Predicate<CardSet> filterT2 = CardSet.Predicates.isLegalInFormat(SetUtils.getStandard());
|
||||||
|
q.shopList.addAllCards(filterT2.random(SetUtils.getAllSets(), 2, BoosterPack.fnFromSet));
|
||||||
|
Predicate<CardSet> filterExt = CardSet.Predicates.isLegalInFormat(SetUtils.getExtended());
|
||||||
|
Predicate<CardSet> filterExtButT2 = Predicate.and(filterExt, Predicate.not(filterT2));
|
||||||
|
q.shopList.addAllCards(filterExtButT2.random(SetUtils.getAllSets(), 3, BoosterPack.fnFromSet));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemPool<InventoryItem> getCardpool() {
|
public ItemPool<InventoryItem> getCardpool() {
|
||||||
|
|||||||
@@ -193,6 +193,15 @@ public abstract class Predicate<T> {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public final <V> List<V> random(final Iterable<T> source, final int count, final Lambda1<V, T> transformer) {
|
||||||
|
List<V> result = new ArrayList<V>();
|
||||||
|
for (int i = 0; i < count; ++i) {
|
||||||
|
T toAdd = random(source);
|
||||||
|
if (toAdd == null) { break; }
|
||||||
|
result.add(transformer.apply(toAdd));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
// Static builder methods - they choose concrete implementation by themselves
|
// Static builder methods - they choose concrete implementation by themselves
|
||||||
public static <U, T> Predicate<U> brigde(final Predicate<T> predicate, final Lambda1<T, U> fnBridge) {
|
public static <U, T> Predicate<U> brigde(final Predicate<T> predicate, final Lambda1<T, U> fnBridge) {
|
||||||
|
|||||||
Reference in New Issue
Block a user