Add advanced search for region

This commit is contained in:
drdev
2016-01-14 16:29:33 +00:00
parent ed839e5233
commit a77e9a4975
2 changed files with 45 additions and 1 deletions

View File

@@ -84,6 +84,16 @@ public class AdvancedSearch {
return ConquestPlane.getAllPlanesOfCard(input);
}
}),
CARD_REGION("Region", PaperCard.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<PaperCard, ConquestPlane.Region>(ConquestPlane.getAllRegions()) {
@Override
protected ConquestPlane.Region getItemValue(PaperCard input) {
throw new RuntimeException("getItemValues should be called instead");
}
@Override
protected Set<ConquestPlane.Region> getItemValues(PaperCard input) {
return ConquestPlane.getAllRegionsOfCard(input);
}
}),
CARD_QUEST_WORLD("Quest World", PaperCard.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<PaperCard, QuestWorld>(ImmutableList.copyOf(FModel.getWorlds())) {
@Override
protected QuestWorld getItemValue(PaperCard input) {

View File

@@ -20,6 +20,7 @@ package forge.planarconquest;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -355,6 +356,10 @@ public enum ConquestPlane {
bannedCards.addAll(bannedCards0);
}
for (Region region : regions) {
region.plane = this;
}
CardDb commonCards = FModel.getMagicDb().getCommonCards();
for (String setCode : setCodes0) {
CardEdition edition = FModel.getMagicDb().getEditions().get(setCode);
@@ -466,6 +471,7 @@ public enum ConquestPlane {
private final DeckGenPool cardPool = new DeckGenPool();
private final FCollection<PaperCard> commanders = new FCollection<PaperCard>();
private ConquestPlane plane;
private ISkinImage art;
private Region(String name0, String artCardName0, final int colorMask) {
@@ -509,8 +515,12 @@ public enum ConquestPlane {
return commanders;
}
public ConquestPlane getPlane() {
return plane;
}
public String toString() {
return name;
return plane.name + " - " + name;
}
}
@@ -650,4 +660,28 @@ public enum ConquestPlane {
}
return planes;
}
public static Set<Region> getAllRegionsOfCard(PaperCard card) {
Set<Region> regions = new HashSet<Region>();
for (ConquestPlane plane : values()) {
if (plane.cardPool.contains(card)) {
for (Region region : plane.getRegions()) {
if (region.cardPool.contains(card)) {
regions.add(region);
}
}
}
}
return regions;
}
public static List<Region> getAllRegions() {
List<Region> regions = new ArrayList<Region>();
for (ConquestPlane plane : values()) {
for (Region region : plane.getRegions()) {
regions.add(region);
}
}
return regions;
}
}