This commit is contained in:
Anthony Calosa
2021-04-06 15:49:30 +08:00
parent 9a2eaa7a1d
commit d9cf090060

View File

@@ -56,6 +56,8 @@ import forge.util.TextUtil;
public final class CardDb implements ICardDatabase, IDeckGenPool { public final class CardDb implements ICardDatabase, IDeckGenPool {
public final static String foilSuffix = "+"; public final static String foilSuffix = "+";
public final static char NameSetSeparator = '|'; public final static char NameSetSeparator = '|';
private final String exlcudedCardName = "Concentrate";
private final String exlcudedCardSet = "DS0";
// need this to obtain cardReference by name+set+artindex // need this to obtain cardReference by name+set+artindex
private final ListMultimap<String, PaperCard> allCardsByName = Multimaps.newListMultimap(new TreeMap<>(String.CASE_INSENSITIVE_ORDER), CollectionSuppliers.arrayLists()); private final ListMultimap<String, PaperCard> allCardsByName = Multimaps.newListMultimap(new TreeMap<>(String.CASE_INSENSITIVE_ORDER), CollectionSuppliers.arrayLists());
@@ -142,7 +144,7 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
// create faces list from rules // create faces list from rules
for (final CardRules rule : rules.values() ) { for (final CardRules rule : rules.values() ) {
if (filteredCards.contains(rule.getName())) if (filteredCards.contains(rule.getName()) && !exlcudedCardName.equalsIgnoreCase(rule.getName()))
continue; continue;
final ICardFace main = rule.getMainPart(); final ICardFace main = rule.getMainPart();
facesByName.put(main.getName(), main); facesByName.put(main.getName(), main);
@@ -254,14 +256,8 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
} }
public void addCard(PaperCard paperCard) { public void addCard(PaperCard paperCard) {
if (filtered.contains(paperCard.getName())) { if (excludeCard(paperCard.getName(), paperCard.getEdition()))
//TODO: Funny cards (filtered) may have real cards (except basic lands which is excluded) return;
//This is needed since Concentrate is a real card and DS0 set (Drake Stone) has Concentrate card
if (paperCard.getEdition().equalsIgnoreCase("DS0") && paperCard.getName().equalsIgnoreCase("Concentrate"))
return;
else if (!paperCard.getName().equalsIgnoreCase("Concentrate"))
return;
}
allCardsByName.put(paperCard.getName(), paperCard); allCardsByName.put(paperCard.getName(), paperCard);
@@ -276,7 +272,17 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
allCardsByName.put(paperCard.getRules().getMainPart().getName(), paperCard); allCardsByName.put(paperCard.getRules().getMainPart().getName(), paperCard);
} }
} }
private boolean excludeCard(String cardName, String cardEdition) {
if (filtered.isEmpty())
return false;
if (filtered.contains(cardName)) {
if (exlcudedCardSet.equalsIgnoreCase(cardEdition) && exlcudedCardName.equalsIgnoreCase(cardName))
return true;
else if (!exlcudedCardName.equalsIgnoreCase(cardName))
return true;
}
return false;
}
private void reIndex() { private void reIndex() {
uniqueCardsByName.clear(); uniqueCardsByName.clear();
for (Entry<String, Collection<PaperCard>> kv : getAllCardsByName().asMap().entrySet()) { for (Entry<String, Collection<PaperCard>> kv : getAllCardsByName().asMap().entrySet()) {