From 8df7e9f1647338adf09b290a5073a6a233567bb8 Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Sun, 27 Jul 2014 20:55:47 -0400 Subject: [PATCH 1/2] Fix #231: tokens.xml no longer overwritten by cards.xml. --- cockatrice/src/carddatabase.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index 51120ee0..bd7c55ce 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -742,7 +742,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 From 9ba5d7968edb519f112942b309f5c91eee02edd1 Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Tue, 29 Jul 2014 23:46:04 -0400 Subject: [PATCH 2/2] Stop clobbering tokens.xml tokens; don't let Oracle read tokens into cards.xml. --- cockatrice/src/carddatabase.cpp | 13 ++++++++----- cockatrice/src/carddatabase.h | 4 ++-- oracle/src/oracleimporter.cpp | 10 ++++++---- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index bd7c55ce..16738a50 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -620,7 +620,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) @@ -665,7 +665,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, muids)); + + if (isToken == tokens) { + addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, muids)); + } } } } @@ -684,7 +687,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); @@ -707,7 +710,7 @@ LoadStatus CardDatabase::loadFromFile(const QString &fileName) if (xml.name() == "sets") loadSetsFromXml(xml); else if (xml.name() == "cards") - loadCardsFromXml(xml); + loadCardsFromXml(xml, tokens); } } } @@ -778,7 +781,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 3d1da9a2..b318f27d 100644 --- a/cockatrice/src/carddatabase.h +++ b/cockatrice/src/carddatabase.h @@ -203,7 +203,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); @@ -224,7 +224,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++; + } } }