mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
Adventure: add config setting 'allowedEditions' (#4431)
This commit is contained in:
@@ -373,9 +373,15 @@ public class AdventureEventData implements Serializable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String restricted : Config.instance().getConfigData().restrictedEditions) {
|
ConfigData configData = Config.instance().getConfigData();
|
||||||
|
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));
|
legalBlocks.removeIf(q -> q.getName().equals(restricted));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return legalBlocks.isEmpty() ? null : Aggregates.random(legalBlocks);
|
return legalBlocks.isEmpty() ? null : Aggregates.random(legalBlocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -388,9 +394,15 @@ public class AdventureEventData implements Serializable {
|
|||||||
legalBlocks.add(b);
|
legalBlocks.add(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (String restricted : Config.instance().getConfigData().restrictedEditions) {
|
ConfigData configData = Config.instance().getConfigData();
|
||||||
|
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));
|
legalBlocks.removeIf(q -> q.getName().equals(restricted));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return legalBlocks.isEmpty()?null:Aggregates.random(legalBlocks);
|
return legalBlocks.isEmpty()?null:Aggregates.random(legalBlocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 -> {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user