diff --git a/forge-gui-mobile/src/forge/adventure/data/ConfigData.java b/forge-gui-mobile/src/forge/adventure/data/ConfigData.java index e64ad0e63fa..e8bbf34636d 100644 --- a/forge-gui-mobile/src/forge/adventure/data/ConfigData.java +++ b/forge-gui-mobile/src/forge/adventure/data/ConfigData.java @@ -1,6 +1,8 @@ package forge.adventure.data; +import java.util.List; + /** * Data class that will be used to read Json configuration files * BiomeData @@ -17,4 +19,5 @@ public class ConfigData { public String[] starterDecks; public DifficultyData[] difficulties; public RewardData legalCards; + public List restrictedCards; } diff --git a/forge-gui-mobile/src/forge/adventure/data/RewardData.java b/forge-gui-mobile/src/forge/adventure/data/RewardData.java index 1318215bce5..d586446124c 100644 --- a/forge-gui-mobile/src/forge/adventure/data/RewardData.java +++ b/forge-gui-mobile/src/forge/adventure/data/RewardData.java @@ -41,11 +41,8 @@ public class RewardData { public String cardText; public boolean matchAllSubTypes; + public RewardData() { } - public RewardData() - { - - } public RewardData(RewardData rewardData) { type =rewardData.type; probability =rewardData.probability; @@ -68,23 +65,24 @@ public class RewardData { private static Iterable allCards; private static Iterable allEnemyCards; - public Array generate(boolean isForEnemy) - { + + public Array generate(boolean isForEnemy) { return generate(isForEnemy, null); } - public Array generate(boolean isForEnemy,Iterable cards) - { - if(allCards==null) - { - RewardData legals=Config.instance().getConfigData().legalCards; - if(legals==null) - { - allCards = FModel.getMagicDb().getCommonCards().getUniqueCardsNoAltNoOnline(); - } - else - { - allCards = Iterables.filter(FModel.getMagicDb().getCommonCards().getUniqueCardsNoAltNoOnline(), new CardUtil.CardPredicate(legals, true)); - } + public Array generate(boolean isForEnemy, Iterable cards) { + if(allCards==null) { + RewardData legals = Config.instance().getConfigData().legalCards; + if(legals==null) allCards = FModel.getMagicDb().getCommonCards().getUniqueCardsNoAltNoOnline(); + else allCards = Iterables.filter(FModel.getMagicDb().getCommonCards().getUniqueCardsNoAltNoOnline(), new CardUtil.CardPredicate(legals, true)); + //Filter out specific cards. + allCards = Iterables.filter(allCards, new Predicate() { + @Override + public boolean apply(PaperCard input){ + if(input == null) return false; + return !Config.instance().getConfigData().restrictedCards.contains(input.getName()); + } + }); + //Filter AI cards for enemies. allEnemyCards=Iterables.filter(allCards, new Predicate() { @Override public boolean apply(PaperCard input) { @@ -94,11 +92,10 @@ public class RewardData { }); } Array ret=new Array<>(); - if(probability==0|| WorldSave.getCurrentSave().getWorld().getRandom().nextFloat()<=probability) { - if(type==null||type.isEmpty()) + if(probability == 0 || WorldSave.getCurrentSave().getWorld().getRandom().nextFloat() <= probability) { + if(type==null || type.isEmpty()) type="randomCard"; - int addedCount=(int)((float)(addMaxCount)* WorldSave.getCurrentSave().getWorld().getRandom().nextFloat()); - + int addedCount = WorldSave.getCurrentSave().getWorld().getRandom().nextInt(addMaxCount); if( colors != null && colors.length > 0 ) { //Filter special "colorID" case. String C = Current.player().getColorIdentityLong(); for(int i = 0; i < colors.length; i++){ @@ -128,26 +125,23 @@ public class RewardData { } break; case "item": - if(itemName!=null&&!itemName.isEmpty()) - { - for(int i=0;i