diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index a84cea18..393ed898 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -235,7 +235,7 @@ CardInfo::CardInfo(const QString &_name, const QList &_relatedCards, const QList &_reverseRelatedCards, bool _upsideDownArt, - int _loyalty, + const QString &_loyalty, bool _cipt, int _tableRow, const SetList &_sets, @@ -271,7 +271,7 @@ CardInfoPtr CardInfo::newInstance(const QString &_name, const QList &_relatedCards, const QList &_reverseRelatedCards, bool _upsideDownArt, - int _loyalty, + const QString &_loyalty, bool _cipt, int _tableRow, const SetList &_sets, @@ -488,7 +488,7 @@ static QXmlStreamWriter &operator<<(QXmlStreamWriter &xml, const CardInfoPtr &in xml.writeTextElement("tablerow", QString::number(info->getTableRow())); xml.writeTextElement("text", info->getText()); if (info->getMainCardType() == "Planeswalker") { - xml.writeTextElement("loyalty", QString::number(info->getLoyalty())); + xml.writeTextElement("loyalty", info->getLoyalty()); } if (info->getCipt()) { xml.writeTextElement("cipt", "1"); @@ -665,7 +665,7 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml) } if (xml.name() == "card") { - QString name, manacost, cmc, type, pt, text; + QString name, manacost, cmc, type, pt, text, loyalty; QStringList colors; QList relatedCards, reverseRelatedCards; QStringMap customPicURLs; @@ -673,7 +673,6 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml) QStringMap collectorNumbers, rarities; SetList sets; int tableRow = 0; - int loyalty = 0; bool cipt = false; bool isToken = false; bool upsideDown = false; @@ -758,7 +757,7 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml) } else if (xml.name() == "upsidedown") { upsideDown = (xml.readElementText() == "1"); } else if (xml.name() == "loyalty") { - loyalty = xml.readElementText().toInt(); + loyalty = xml.readElementText(); } else if (xml.name() == "token") { isToken = static_cast(xml.readElementText().toInt()); } else if (xml.name() != "") { diff --git a/cockatrice/src/carddatabase.h b/cockatrice/src/carddatabase.h index a660c396..50a71f34 100644 --- a/cockatrice/src/carddatabase.h +++ b/cockatrice/src/carddatabase.h @@ -145,7 +145,7 @@ private: QString setsNames; bool upsideDownArt; - int loyalty; + QString loyalty; QStringMap customPicURLs; MuidMap muIds; QStringMap collectorNumbers; @@ -166,7 +166,7 @@ public: const QList &_relatedCards = QList(), const QList &_reverseRelatedCards = QList(), bool _upsideDownArt = false, - int _loyalty = 0, + const QString &_loyalty = QString(), bool _cipt = false, int _tableRow = 0, const SetList &_sets = SetList(), @@ -187,7 +187,7 @@ public: const QList &_relatedCards = QList(), const QList &_reverseRelatedCards = QList(), bool _upsideDownArt = false, - int _loyalty = 0, + const QString &_loyalty = QString(), bool _cipt = false, int _tableRow = 0, const SetList &_sets = SetList(), @@ -245,7 +245,7 @@ public: { return pixmapCacheKey; } - const int &getLoyalty() const + const QString &getLoyalty() const { return loyalty; } diff --git a/cockatrice/src/cardfilter.cpp b/cockatrice/src/cardfilter.cpp index 8bee1b65..0ccb1086 100644 --- a/cockatrice/src/cardfilter.cpp +++ b/cockatrice/src/cardfilter.cpp @@ -39,6 +39,8 @@ const char *CardFilter::attrName(Attr a) return "Power"; case AttrTough: return "Toughness"; + case AttrLoyalty: + return "Loyalty"; default: return ""; } diff --git a/cockatrice/src/cardfilter.h b/cockatrice/src/cardfilter.h index bc4c2489..b9b18b92 100644 --- a/cockatrice/src/cardfilter.h +++ b/cockatrice/src/cardfilter.h @@ -21,6 +21,7 @@ public: { AttrCmc = 0, AttrColor, + AttrLoyalty, AttrManaCost, AttrName, AttrPow, diff --git a/cockatrice/src/cardinfotext.cpp b/cockatrice/src/cardinfotext.cpp index b785ed0a..8ee3d727 100644 --- a/cockatrice/src/cardinfotext.cpp +++ b/cockatrice/src/cardinfotext.cpp @@ -63,7 +63,7 @@ void CardInfoText::setCard(CardInfoPtr card) colorLabel2->setText(card->getColors().join("")); cardtypeLabel2->setText(card->getCardType()); powtoughLabel2->setText(card->getPowTough()); - loyaltyLabel2->setText(card->getLoyalty() > 0 ? QString::number(card->getLoyalty()) : QString()); + loyaltyLabel2->setText(card->getLoyalty()); textLabel->setText(card->getText()); } else { nameLabel2->setText(""); diff --git a/cockatrice/src/filtertree.cpp b/cockatrice/src/filtertree.cpp index fa1ef7b9..ffae7100 100644 --- a/cockatrice/src/filtertree.cpp +++ b/cockatrice/src/filtertree.cpp @@ -234,6 +234,22 @@ bool FilterItem::acceptCmc(const CardInfoPtr info) const return relationCheck(info->getCmc().toInt()); } +bool FilterItem::acceptLoyalty(const CardInfoPtr info) const +{ + if (info->getLoyalty().isEmpty()) { + return false; + } else { + bool success; + // if loyalty can't be converted to "int" it must be "X" + int loyalty = info->getLoyalty().toInt(&success); + if (success) { + return relationCheck(loyalty); + } else { + return term.trimmed().toUpper() == info->getLoyalty(); + } + } +} + bool FilterItem::acceptPower(const CardInfoPtr info) const { int slash = info->getPowTough().indexOf("/"); @@ -287,7 +303,7 @@ bool FilterItem::acceptRarity(const CardInfoPtr info) const } } - foreach (QString rareLevel, info->getRarities()) { + for (const QString &rareLevel : info->getRarities()) { if (rareLevel.compare(converted_term, Qt::CaseInsensitive) == 0) { return true; } @@ -351,6 +367,8 @@ bool FilterItem::acceptCardAttr(const CardInfoPtr info, CardFilter::Attr attr) c return acceptPower(info); case CardFilter::AttrTough: return acceptToughness(info); + case CardFilter::AttrLoyalty: + return acceptLoyalty(info); default: return true; /* ignore this attribute */ } @@ -464,4 +482,4 @@ void FilterTree::clear() while (childCount() > 0) { deleteAt(0); } -} \ No newline at end of file +} diff --git a/cockatrice/src/filtertree.h b/cockatrice/src/filtertree.h index 7e6f5e8d..d6c18571 100644 --- a/cockatrice/src/filtertree.h +++ b/cockatrice/src/filtertree.h @@ -212,6 +212,7 @@ public: bool acceptCmc(const CardInfoPtr info) const; bool acceptPower(const CardInfoPtr info) const; bool acceptToughness(const CardInfoPtr info) const; + bool acceptLoyalty(const CardInfoPtr info) const; bool acceptRarity(const CardInfoPtr info) const; bool acceptCardAttr(const CardInfoPtr info, CardFilter::Attr attr) const; bool relationCheck(int cardInfo) const; diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index 6cb19fa8..8425eba8 100644 --- a/oracle/src/oracleimporter.cpp +++ b/oracle/src/oracleimporter.cpp @@ -60,7 +60,7 @@ CardInfoPtr OracleImporter::addCard(const QString &setName, QString &cmc, const QString &cardType, const QString &cardPT, - int cardLoyalty, + const QString &cardLoyalty, const QString &cardText, const QStringList &colors, const QList &relatedCards, @@ -152,7 +152,7 @@ int OracleImporter::importTextSpoiler(CardSetPtr set, const QVariant &data) int cardId; QString setNumber; QString rarity; - int cardLoyalty; + QString cardLoyalty; bool upsideDown = false; QMap splitCards; @@ -184,7 +184,7 @@ int OracleImporter::importTextSpoiler(CardSetPtr set, const QVariant &data) cardId = map.contains("multiverseid") ? map.value("multiverseid").toInt() : 0; setNumber = map.contains("number") ? map.value("number").toString() : QString(""); rarity = map.contains("rarity") ? map.value("rarity").toString() : QString(""); - cardLoyalty = map.contains("loyalty") ? map.value("loyalty").toInt() : 0; + cardLoyalty = map.contains("loyalty") ? map.value("loyalty").toString() : QString(""); relatedCards = QList(); if (map.contains("names")) foreach (const QString &name, map.value("names").toStringList()) { @@ -237,9 +237,8 @@ int OracleImporter::importTextSpoiler(CardSetPtr set, const QVariant &data) cardText = ""; setNumber = ""; rarity = ""; + cardLoyalty = ""; colors.clear(); - // this is currently an integer; can't accept 2 values - cardLoyalty = 0; // loop cards and merge their contents QString prefix = QString(" // "); diff --git a/oracle/src/oracleimporter.h b/oracle/src/oracleimporter.h index 4c044b86..8611bc0e 100644 --- a/oracle/src/oracleimporter.h +++ b/oracle/src/oracleimporter.h @@ -66,7 +66,7 @@ private: QString &cmc, const QString &cardType, const QString &cardPT, - int cardLoyalty, + const QString &cardLoyalty, const QString &cardText, const QStringList &colors, const QList &relatedCards,