diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index b67f733d..cdacf008 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -710,7 +710,7 @@ void CardDatabase::loadSetsFromXml(QXmlStreamReader &xml) } } -void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml) +void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml, bool tokens) { while (!xml.atEnd()) { if (xml.readNext() == QXmlStreamReader::EndElement) @@ -762,7 +762,10 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml) else if (xml.name() == "token") isToken = xml.readElementText().toInt(); } - addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, customPicURLs, customPicURLsHq, muids)); + + if (isToken == tokens) { + addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, customPicURLs, customPicURLsHq, muids)); + } } } } @@ -781,7 +784,7 @@ CardInfo *CardDatabase::getCardFromMap(CardNameMap &cardMap, const QString &card return 0; } -LoadStatus CardDatabase::loadFromFile(const QString &fileName) +LoadStatus CardDatabase::loadFromFile(const QString &fileName, bool tokens) { QFile file(fileName); file.open(QIODevice::ReadOnly); @@ -804,7 +807,7 @@ LoadStatus CardDatabase::loadFromFile(const QString &fileName) if (xml.name() == "sets") loadSetsFromXml(xml); else if (xml.name() == "cards") - loadCardsFromXml(xml); + loadCardsFromXml(xml, tokens); } } } @@ -839,7 +842,9 @@ bool CardDatabase::saveToFile(const QString &fileName, bool tokens) QHashIterator cardIterator(cards); while (cardIterator.hasNext()) { CardInfo *card = cardIterator.next().value(); - xml << card; + if (tokens == card->getIsToken()) { + xml << card; + } } xml.writeEndElement(); // cards @@ -873,7 +878,7 @@ LoadStatus CardDatabase::loadCardDatabase(const QString &path, bool tokens) { LoadStatus tempLoadStatus = NotLoaded; if (!path.isEmpty()) - tempLoadStatus = loadFromFile(path); + tempLoadStatus = loadFromFile(path, tokens); if (tempLoadStatus == Ok) { SetList allSets; diff --git a/cockatrice/src/carddatabase.h b/cockatrice/src/carddatabase.h index 7cf94443..cbb25f3e 100644 --- a/cockatrice/src/carddatabase.h +++ b/cockatrice/src/carddatabase.h @@ -208,7 +208,7 @@ protected: LoadStatus loadStatus; private: static const int versionNeeded; - void loadCardsFromXml(QXmlStreamReader &xml); + void loadCardsFromXml(QXmlStreamReader &xml, bool tokens); void loadSetsFromXml(QXmlStreamReader &xml); CardInfo *getCardFromMap(CardNameMap &cardMap, const QString &cardName, bool createIfNotFound); @@ -229,7 +229,7 @@ public: CardSet *getSet(const QString &setName); QList getCardList() const { return cards.values(); } SetList getSetList() const; - LoadStatus loadFromFile(const QString &fileName); + LoadStatus loadFromFile(const QString &fileName, bool tokens = false); bool saveToFile(const QString &fileName, bool tokens = false); QStringList getAllColors() const; QStringList getAllMainCardTypes() const; diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index 6a099eb4..48172c48 100644 --- a/oracle/src/oracleimporter.cpp +++ b/oracle/src/oracleimporter.cpp @@ -210,11 +210,13 @@ int OracleImporter::importTextSpoiler(CardSet *set, const QVariant &data) } } - CardInfo *card = addCard(set->getShortName(), cardName, cardIsToken, cardId, cardCost, cardType, cardPT, cardLoyalty, cardText.split("\n")); + if (!cardIsToken) { + CardInfo *card = addCard(set->getShortName(), cardName, cardIsToken, cardId, cardCost, cardType, cardPT, cardLoyalty, cardText.split("\n")); - if (!set->contains(card)) { - card->addToSet(set); - cards++; + if (!set->contains(card)) { + card->addToSet(set); + cards++; + } } }