Added Commander quest mode and world

-CardPool
 Added getFilteredPool() to easily get a Predicate applied copy of a CardPool.

 -GameRules
 Minor formatting change.

 -worlds.txt
 Added Random Commander to the list.

 -DeckConstructionRules
 New enum for defining the subformat a quest is using.

 -QuestAssets
 getLife() now has a switch for modifying the life for sub-formats.

 -QuestData
 New data save version. Includes a DeckConstructionRules enum.

 -QuestDataIO
 updateSaveFile will update old saves to have a default DeckConstructionRules complying with the new QuestData save version.

 -QuestController
 Updated to include support for DeckConstructionRules and specialized duel managers

 -QuestEvent
 Now have boolean to define if this is a "random" match for the duel list. Currently only QuestEventCommanderDuelManager makes use of this feature for Commander quests.

 -QuestEventCommanderDuel
 New QuestEventDuel used in the QuestEventCommanderDuelManager which contains a DeckProxy for use in generating random commander decks.

 -QuestEventCommanderDuelManager
 New duel manager to generate duels by difficulty for a Commander quest. Currently uses random generation to generate the decks of each opponent.

 -QuestSpellShop
 Sell Extras button now has a switch for taking into account special deck construction rules such as Commander only allowing singletons.

 -QuestUtil
 Starting a game now checks for various sub-format specific changes including a switch case for which variety of registered player to use.

 -QuestUtilCards
 Starting cardpool size is now modified by a switch case for sub-formats such as Commander.

 -QuestWinLoseController
 QuestEvents marked as random matches will now award a "Random Opponent Bonus" equal to the credit base. Currently only QuestEventCommanderDuelManager creates QuestEvents marked as such.

 -QuestWorld
 Added support for the Commander quest format and world.

 -CEditorQuest
 Many changes to add support for Commander in a style that, hopefully, also paths the way for future format support.

 -CSubmenuQuestData
 Support for Commander quests.

 -VSubmenuQuestData
 Support for Commander quests.
This commit is contained in:
Jeremy Pelkala
2018-11-02 18:57:17 -04:00
parent 03cd56d2a9
commit cccaf1760d
19 changed files with 561 additions and 36 deletions

View File

@@ -17,6 +17,7 @@
*/
package forge.deck;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import forge.StaticData;
import forge.card.CardDb;
@@ -216,4 +217,17 @@ public class CardPool extends ItemPool<PaperCard> {
}
return sb.toString();
}
/**
* Applies a predicate to this CardPool's cards.
* @param predicate the Predicate to apply to this CardPool
* @return a new CardPool made from this CardPool with only the cards that agree with the provided Predicate
*/
public CardPool getFilteredPool(Predicate<PaperCard> predicate){
CardPool filteredPool = new CardPool();
for(PaperCard pc : this.items.keySet()){
if(predicate.apply(pc)) filteredPool.add(pc);
}
return filteredPool;
}
}