Merge pull request #638 from Cockatrice/search-by-cmc

Search by cmc
This commit is contained in:
Gavin Bisesi 2015-01-29 17:35:52 -05:00
commit fe7b976b79
6 changed files with 24 additions and 20 deletions

View file

@ -751,7 +751,7 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml, bool tokens)
else if (xml.name() == "manacost")
manacost = xml.readElementText();
else if (xml.name() == "cmc")
cmc = xml.readElementText().toInt();
cmc = xml.readElementText();
else if (xml.name() == "type")
type = xml.readElementText();
else if (xml.name() == "pt")

View file

@ -31,6 +31,8 @@ const char *CardFilter::attrName(Attr a)
return "set";
case AttrManaCost:
return "mana cost";
case AttrCmc:
return "cmc";
default:
return "";
}

View file

@ -22,6 +22,7 @@ public:
AttrText,
AttrSet,
AttrManaCost,
AttrCmc,
AttrEnd
};

View file

@ -199,34 +199,31 @@ bool FilterItem::acceptManaCost(const CardInfo *info) const
return (info->getManaCost() == term);
}
bool FilterItem::acceptCmc(const CardInfo *info) const
{
return (info->getCmc() == term);
}
bool FilterItem::acceptCardAttr(const CardInfo *info, CardFilter::Attr attr) const
{
bool status;
switch (attr) {
case CardFilter::AttrName:
status = acceptName(info);
break;
return acceptName(info);
case CardFilter::AttrType:
status = acceptType(info);
break;
return acceptType(info);
case CardFilter::AttrColor:
status = acceptColor(info);
break;
return acceptColor(info);
case CardFilter::AttrText:
status = acceptText(info);
break;
return acceptText(info);
case CardFilter::AttrSet:
status = acceptSet(info);
break;
return acceptSet(info);
case CardFilter::AttrManaCost:
status = acceptManaCost(info);
break;
return acceptManaCost(info);
case CardFilter::AttrCmc:
return acceptCmc(info);
default:
status = true; /* ignore this attribute */
return true; /* ignore this attribute */
}
return status;
}
/* need to define these here to make QT happy, otherwise

View file

@ -117,6 +117,7 @@ public:
bool acceptText(const CardInfo *info) const;
bool acceptSet(const CardInfo *info) const;
bool acceptManaCost(const CardInfo *info) const;
bool acceptCmc(const CardInfo *info) const;
bool acceptCardAttr(const CardInfo *info, CardFilter::Attr attr) const;
};

View file

@ -187,6 +187,7 @@ int OracleImporter::importTextSpoiler(CardSet *set, const QVariant &data)
// add first card's data
cardName = card1->contains("name") ? card1->value("name").toString() : QString("");
cardCost = card1->contains("manaCost") ? card1->value("manaCost").toString() : QString("");
cmc = card1->contains("cmc") ? card1->value("cmc").toString() : QString("");
cardType = card1->contains("type") ? card1->value("type").toString() : QString("");
cardPT = card1->contains("power") || card1->contains("toughness") ? card1->value("power").toString() + QString('/') + card1->value("toughness").toString() : QString("");
cardText = card1->contains("text") ? card1->value("text").toString() : QString("");
@ -199,8 +200,10 @@ int OracleImporter::importTextSpoiler(CardSet *set, const QVariant &data)
cardPT += card2->contains("power") || card2->contains("toughness") ? QString(" // ") + card2->value("power").toString() + QString('/') + card2->value("toughness").toString() : QString("");
cardText += card2->contains("text") ? QString("\n\n---\n\n") + card2->value("text").toString() : QString("");
} else {
// first card od a pair; enqueue for later merging
splitCards.insert(cardId, map);
// first card of a pair; enqueue for later merging
// Conditional on cardId because promo prints have no muid - see #640
if (cardId)
splitCards.insert(cardId, map);
continue;
}
} else {