void operator()(const InnerDecklistNode *node, const DecklistCardNode *card) const { //Get the card name CardInfo * dbCard = db->getCard(card->getName()); if (!dbCard || dbCard->getIsToken()) { //If it's a token, we don't care about the card. return; } //Check if it's a sideboard card. if (node->getName() == DECK_ZONE_SIDE) { //Get the number of cards and add the card name sideBoardCards+=QString::number(card->getNumber()); //Add a space between card num and name sideBoardCards+="%20"; //Add card name sideBoardCards+=card->getName(); //Add a return at the end of the card sideBoardCards+="%0A"; } else //If it's a mainboard card, do the same thing, but for the mainboard card string { mainBoardCards+=QString::number(card->getNumber()); mainBoardCards+="%20"; mainBoardCards+=card->getName(); mainBoardCards+="%0A"; } }
bool CardDatabase::saveToFile(const QString &fileName, bool tokens) { QFile file(fileName); if (!file.open(QIODevice::WriteOnly)) return false; QXmlStreamWriter xml(&file); xml.setAutoFormatting(true); xml.writeStartDocument(); xml.writeStartElement("cockatrice_carddatabase"); xml.writeAttribute("version", QString::number(versionNeeded)); if (!tokens) { xml.writeStartElement("sets"); QHashIterator<QString, CardSet *> setIterator(sets); while (setIterator.hasNext()) xml << setIterator.next().value(); xml.writeEndElement(); // sets } xml.writeStartElement("cards"); QHashIterator<QString, CardInfo *> cardIterator(cards); while (cardIterator.hasNext()) { CardInfo *card = cardIterator.next().value(); if (tokens == card->getIsToken()) { xml << card; } } xml.writeEndElement(); // cards xml.writeEndElement(); // cockatrice_carddatabase xml.writeEndDocument(); return true; }