From 7893ab086f4d050d899bac35b7cabc51d809b9e0 Mon Sep 17 00:00:00 2001 From: Gavin Bises Date: Thu, 29 Jan 2015 13:32:17 -0500 Subject: [PATCH 1/3] Fix broken cmc parsing from cards.xml I don't know why this even compiled --- cockatrice/src/carddatabase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index f798b1e1..31344a8f 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -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") From 6fa34c6c040681100b6e6715acad0310502bcca4 Mon Sep 17 00:00:00 2001 From: Gavin Bises Date: Thu, 29 Jan 2015 13:33:06 -0500 Subject: [PATCH 2/3] Add cmc to card db filter model --- cockatrice/src/cardfilter.cpp | 2 ++ cockatrice/src/cardfilter.h | 1 + cockatrice/src/filtertree.cpp | 31 ++++++++++++++----------------- cockatrice/src/filtertree.h | 1 + 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/cockatrice/src/cardfilter.cpp b/cockatrice/src/cardfilter.cpp index fb59adcf..06a41ca9 100644 --- a/cockatrice/src/cardfilter.cpp +++ b/cockatrice/src/cardfilter.cpp @@ -31,6 +31,8 @@ const char *CardFilter::attrName(Attr a) return "set"; case AttrManaCost: return "mana cost"; + case AttrCmc: + return "cmc"; default: return ""; } diff --git a/cockatrice/src/cardfilter.h b/cockatrice/src/cardfilter.h index e5f88123..4b7debb2 100644 --- a/cockatrice/src/cardfilter.h +++ b/cockatrice/src/cardfilter.h @@ -22,6 +22,7 @@ public: AttrText, AttrSet, AttrManaCost, + AttrCmc, AttrEnd }; diff --git a/cockatrice/src/filtertree.cpp b/cockatrice/src/filtertree.cpp index 5fc516f3..c33e94be 100644 --- a/cockatrice/src/filtertree.cpp +++ b/cockatrice/src/filtertree.cpp @@ -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 diff --git a/cockatrice/src/filtertree.h b/cockatrice/src/filtertree.h index 68f8fafb..6ee58a7e 100644 --- a/cockatrice/src/filtertree.h +++ b/cockatrice/src/filtertree.h @@ -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; }; From acb9bc20c4e45cc89af60de45616ae6e8343324f Mon Sep 17 00:00:00 2001 From: Gavin Bises Date: Thu, 29 Jan 2015 17:09:14 -0500 Subject: [PATCH 3/3] Fix #640 - don't add muid-0 cards to splitCards map --- oracle/src/oracleimporter.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index ba47b61c..f792829b 100644 --- a/oracle/src/oracleimporter.cpp +++ b/oracle/src/oracleimporter.cpp @@ -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 {