Added new RestrictedLegendary option to formats to enable blanket restriction on legendary cards

This commit is contained in:
austinio7116
2018-04-14 18:41:37 +01:00
committed by maustin
parent 1145a3a513
commit f69a8af83f
2 changed files with 21 additions and 7 deletions

View File

@@ -57,6 +57,7 @@ public class GameFormat implements Comparable<GameFormat> {
protected final List<String> bannedCardNames; protected final List<String> bannedCardNames;
protected final List<String> restrictedCardNames; protected final List<String> restrictedCardNames;
protected final List<String> additionalCardNames; // for cards that are legal but not reprinted in any of the allowed Sets protected final List<String> additionalCardNames; // for cards that are legal but not reprinted in any of the allowed Sets
protected boolean restrictedLegendary = false;
protected final transient List<String> allowedSetCodes_ro; protected final transient List<String> allowedSetCodes_ro;
protected final transient List<String> bannedCardNames_ro; protected final transient List<String> bannedCardNames_ro;
@@ -69,13 +70,13 @@ public class GameFormat implements Comparable<GameFormat> {
private final int index; private final int index;
public GameFormat(final String fName, final Iterable<String> sets, final List<String> bannedCards) { public GameFormat(final String fName, final Iterable<String> sets, final List<String> bannedCards) {
this(fName, sets, bannedCards, null, null, null, 0, FormatType.Custom, FormatSubType.Custom); this(fName, sets, bannedCards, null, false, null, null, 0, FormatType.Custom, FormatSubType.Custom);
} }
public static final GameFormat NoFormat = new GameFormat("(none)", null, null, null, null, null, Integer.MAX_VALUE, FormatType.Custom, FormatSubType.Custom); public static final GameFormat NoFormat = new GameFormat("(none)", null, null, null, false, null, null, Integer.MAX_VALUE, FormatType.Custom, FormatSubType.Custom);
public GameFormat(final String fName, final Iterable<String> sets, final List<String> bannedCards, public GameFormat(final String fName, final Iterable<String> sets, final List<String> bannedCards,
final List<String> restrictedCards, final List<String> additionalCards, final List<String> restrictedCards, Boolean restrictedLegendary, final List<String> additionalCards,
final List<CardRarity> rarities, int compareIdx, FormatType formatType, FormatSubType formatSubType) { final List<CardRarity> rarities, int compareIdx, FormatType formatType, FormatSubType formatSubType) {
this.index = compareIdx; this.index = compareIdx;
this.formatType = formatType; this.formatType = formatType;
@@ -99,6 +100,7 @@ public class GameFormat implements Comparable<GameFormat> {
bannedCardNames = bannedCards == null ? new ArrayList<String>() : Lists.newArrayList(bannedCards); bannedCardNames = bannedCards == null ? new ArrayList<String>() : Lists.newArrayList(bannedCards);
restrictedCardNames = restrictedCards == null ? new ArrayList<String>() : Lists.newArrayList(restrictedCards); restrictedCardNames = restrictedCards == null ? new ArrayList<String>() : Lists.newArrayList(restrictedCards);
this.restrictedLegendary = restrictedLegendary;
additionalCardNames = additionalCards == null ? new ArrayList<String>() : Lists.newArrayList(additionalCards); additionalCardNames = additionalCards == null ? new ArrayList<String>() : Lists.newArrayList(additionalCards);
allowedRarities = rarities == null ? Lists.newArrayList() : rarities; allowedRarities = rarities == null ? Lists.newArrayList() : rarities;
@@ -162,6 +164,10 @@ public class GameFormat implements Comparable<GameFormat> {
return restrictedCardNames_ro; return restrictedCardNames_ro;
} }
public Boolean isRestrictedLegendary() {
return restrictedLegendary;
}
public List<String> getAdditionalCards() { public List<String> getAdditionalCards() {
return additionalCardNames_ro; return additionalCardNames_ro;
} }
@@ -208,9 +214,10 @@ public class GameFormat implements Comparable<GameFormat> {
} }
} }
if(!restrictedCardNames_ro.isEmpty() ) { if(!restrictedCardNames_ro.isEmpty() || restrictedLegendary ) {
for (Entry<PaperCard, Integer> poolEntry : allCards) { for (Entry<PaperCard, Integer> poolEntry : allCards) {
if( poolEntry.getValue().intValue() > 1 && restrictedCardNames_ro.contains(poolEntry.getKey().getName())) if( poolEntry.getValue().intValue() > 1 && (restrictedCardNames_ro.contains(poolEntry.getKey().getName())
|| poolEntry.getKey().getRules().getType().isLegendary() && restrictedLegendary))
return false; return false;
} }
} }
@@ -266,6 +273,7 @@ public class GameFormat implements Comparable<GameFormat> {
List<String> sets = null; // default: all sets allowed List<String> sets = null; // default: all sets allowed
List<String> bannedCards = null; // default: nothing banned List<String> bannedCards = null; // default: nothing banned
List<String> restrictedCards = null; // default: nothing restricted List<String> restrictedCards = null; // default: nothing restricted
Boolean restrictedLegendary = false;
List<String> additionalCards = null; // default: nothing additional List<String> additionalCards = null; // default: nothing additional
List<CardRarity> rarities = null; List<CardRarity> rarities = null;
FileSection section = FileSection.parse(contents.get("format"), ":"); FileSection section = FileSection.parse(contents.get("format"), ":");
@@ -297,6 +305,11 @@ public class GameFormat implements Comparable<GameFormat> {
restrictedCards = Arrays.asList(strCars.split("; ")); restrictedCards = Arrays.asList(strCars.split("; "));
} }
Boolean strRestrictedLegendary = section.getBoolean("restrictedlegendary");
if ( strRestrictedLegendary != null ) {
restrictedLegendary = strRestrictedLegendary;
}
strCars = section.get("additional"); strCars = section.get("additional");
if ( strCars != null ) { if ( strCars != null ) {
additionalCards = Arrays.asList(strCars.split("; ")); additionalCards = Arrays.asList(strCars.split("; "));
@@ -314,7 +327,7 @@ public class GameFormat implements Comparable<GameFormat> {
} }
} }
GameFormat result = new GameFormat(title, sets, bannedCards, restrictedCards, additionalCards, rarities, idx, formatType,formatsubType); GameFormat result = new GameFormat(title, sets, bannedCards, restrictedCards, restrictedLegendary, additionalCards, rarities, idx, formatType,formatsubType);
naturallyOrdered.add(result); naturallyOrdered.add(result);
return result; return result;
} }

View File

@@ -63,7 +63,8 @@ public final class GameFormatQuest extends GameFormat {
*/ */
public GameFormatQuest(final GameFormat toCopy, boolean allowSetUnlocks) { public GameFormatQuest(final GameFormat toCopy, boolean allowSetUnlocks) {
super(toCopy.getName(), toCopy.getAllowedSetCodes(), toCopy.getBannedCardNames(), toCopy.getRestrictedCards(), super(toCopy.getName(), toCopy.getAllowedSetCodes(), toCopy.getBannedCardNames(), toCopy.getRestrictedCards(),
toCopy.getAdditionalCards(), toCopy.getAllowedRarities(), toCopy.getIndex(), FormatType.Custom, FormatSubType.Custom); toCopy.isRestrictedLegendary(),toCopy.getAdditionalCards(), toCopy.getAllowedRarities(),
toCopy.getIndex(), FormatType.Custom, FormatSubType.Custom);
allowUnlocks = allowSetUnlocks; allowUnlocks = allowSetUnlocks;
} }