Adventure: add config setting 'allowedEditions' (#4431)

This commit is contained in:
Jorilx
2024-01-02 15:20:45 +01:00
committed by GitHub
parent aa589134d8
commit 3cb7fac8f2
5 changed files with 36 additions and 10 deletions

View File

@@ -373,8 +373,14 @@ public class AdventureEventData implements Serializable {
} }
} }
for (String restricted : Config.instance().getConfigData().restrictedEditions) { ConfigData configData = Config.instance().getConfigData();
legalBlocks.removeIf(q -> q.getName().equals(restricted)); if (configData.allowedEditions != null) {
List<String> allowed = Arrays.asList(configData.allowedEditions);
legalBlocks.removeIf(q -> !allowed.contains(q.getName()));
} else {
for (String restricted : configData.restrictedEditions) {
legalBlocks.removeIf(q -> q.getName().equals(restricted));
}
} }
return legalBlocks.isEmpty() ? null : Aggregates.random(legalBlocks); return legalBlocks.isEmpty() ? null : Aggregates.random(legalBlocks);
} }
@@ -388,8 +394,14 @@ public class AdventureEventData implements Serializable {
legalBlocks.add(b); legalBlocks.add(b);
} }
} }
for (String restricted : Config.instance().getConfigData().restrictedEditions) { ConfigData configData = Config.instance().getConfigData();
legalBlocks.removeIf(q -> q.getName().equals(restricted)); if (configData.allowedEditions != null) {
List<String> allowed = Arrays.asList(configData.allowedEditions);
legalBlocks.removeIf(q -> !allowed.contains(q.getName()));
} else {
for (String restricted : configData.restrictedEditions) {
legalBlocks.removeIf(q -> q.getName().equals(restricted));
}
} }
return legalBlocks.isEmpty()?null:Aggregates.random(legalBlocks); return legalBlocks.isEmpty()?null:Aggregates.random(legalBlocks);
} }

View File

@@ -22,4 +22,5 @@ public class ConfigData {
public RewardData legalCards; public RewardData legalCards;
public String[] restrictedCards; public String[] restrictedCards;
public String[] restrictedEditions; public String[] restrictedEditions;
public String[] allowedEditions;
} }

View File

@@ -86,7 +86,8 @@ public class RewardData implements Serializable {
private static Iterable<PaperCard> allEnemyCards; private static Iterable<PaperCard> allEnemyCards;
static private void initializeAllCards(){ static private void initializeAllCards(){
RewardData legals = Config.instance().getConfigData().legalCards; ConfigData configData = Config.instance().getConfigData();
RewardData legals = configData.legalCards;
if(legals==null) if(legals==null)
allCards = CardUtil.getFullCardPool(false); // we need unique cards only here, so that a unique card can be chosen before a set variant is determined allCards = CardUtil.getFullCardPool(false); // we need unique cards only here, so that a unique card can be chosen before a set variant is determined
@@ -100,11 +101,14 @@ public class RewardData implements Serializable {
return false; return false;
if(input.getRules().getAiHints().getRemNonCommanderDecks()) if(input.getRules().getAiHints().getRemNonCommanderDecks())
return false; return false;
if(Arrays.asList(Config.instance().getConfigData().restrictedEditions).contains(input.getEdition())) if(configData.allowedEditions != null) {
if (!Arrays.asList(configData.allowedEditions).contains(input.getEdition()))
return false;
} else if(Arrays.asList(configData.restrictedEditions).contains(input.getEdition()))
return false; return false;
if(input.getRules().isCustom()) if(input.getRules().isCustom())
return false; return false;
return !Arrays.asList(Config.instance().getConfigData().restrictedCards).contains(input.getName()); return !Arrays.asList(configData.restrictedCards).contains(input.getName());
}); });
//Filter AI cards for enemies. //Filter AI cards for enemies.
allEnemyCards=Iterables.filter(allCards, input -> { allEnemyCards=Iterables.filter(allCards, input -> {

View File

@@ -11,6 +11,7 @@ import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel; import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.StaticData; import forge.StaticData;
import forge.adventure.data.ConfigData;
import forge.adventure.data.RewardData; import forge.adventure.data.RewardData;
import forge.adventure.util.*; import forge.adventure.util.*;
import forge.card.CardEdition; import forge.card.CardEdition;
@@ -151,7 +152,10 @@ public class SpellSmithScene extends UIScene {
.filter(input2 -> input2.getEdition().equals(input.getCode())).collect(Collectors.toList()); .filter(input2 -> input2.getEdition().equals(input.getCode())).collect(Collectors.toList());
if (it.size() == 0) if (it.size() == 0)
return false; return false;
return (!Arrays.asList(Config.instance().getConfigData().restrictedEditions).contains(input.getCode())); ConfigData configData = Config.instance().getConfigData();
if (configData.allowedEditions != null)
return Arrays.asList(configData.allowedEditions).contains(input.getCode());
return (!Arrays.asList(configData.restrictedEditions).contains(input.getCode()));
}).sorted(new Comparator<CardEdition>() { }).sorted(new Comparator<CardEdition>() {
@Override @Override
public int compare(CardEdition e1, CardEdition e2) { public int compare(CardEdition e1, CardEdition e2) {

View File

@@ -6,6 +6,7 @@ import com.google.common.base.Predicate;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import forge.StaticData; import forge.StaticData;
import forge.adventure.data.ConfigData;
import forge.adventure.data.GeneratedDeckData; import forge.adventure.data.GeneratedDeckData;
import forge.adventure.data.GeneratedDeckTemplateData; import forge.adventure.data.GeneratedDeckTemplateData;
import forge.adventure.data.RewardData; import forge.adventure.data.RewardData;
@@ -755,8 +756,12 @@ public class CardUtil {
} }
public static Deck generateBoosterPackAsDeck(String code){ public static Deck generateBoosterPackAsDeck(String code){
ConfigData configData = Config.instance().getConfigData();
if (Arrays.asList(Config.instance().getConfigData().restrictedEditions).contains(code)){ if (configData.allowedEditions != null) {
if (!Arrays.asList(configData.allowedEditions).contains(code)){
System.err.println("Cannot generate booster pack, '" + code + "' is not an allowed edition");
}
} else if (Arrays.asList(configData.restrictedEditions).contains(code)){
System.err.println("Cannot generate booster pack, '" + code + "' is a restricted edition"); System.err.println("Cannot generate booster pack, '" + code + "' is a restricted edition");
} }