7#ifndef INTERFACE_JSON_DECK_PARSER_H
8#define INTERFACE_JSON_DECK_PARSER_H
31 QString deckName = obj.value(
"name").toString();
32 QString deckDescription = obj.value(
"description").toString();
38 QTextStream outStream(&outputText);
40 for (
auto entry : obj.value(
"cards").toArray()) {
41 auto quantity = entry.toObject().value(
"quantity").toInt();
43 auto card = entry.toObject().value(
"card").toObject();
44 auto oracleCard = card.value(
"oracleCard").toObject();
45 QString cardName = oracleCard.value(
"name").toString();
46 QString setName = card.value(
"edition").toObject().value(
"editioncode").toString().toUpper();
47 QString collectorNumber = card.value(
"collectorNumber").toString();
49 outStream << quantity <<
' ' << cardName <<
" (" << setName <<
") " << collectorNumber <<
'\n';
66 QString deckName = obj.value(
"name").toString();
67 QString deckDescription = obj.value(
"description").toString();
73 QTextStream outStream(&outputText);
75 for (
auto entry : obj.value(
"mainboard").toObject()) {
76 auto quantity = entry.toObject().value(
"quantity").toInt();
78 auto card = entry.toObject().value(
"card").toObject();
79 QString cardName = card.value(
"name").toString();
80 QString setName = card.value(
"set").toString().toUpper();
81 QString collectorNumber = card.value(
"cn").toString();
83 outStream << quantity <<
' ' << cardName <<
" (" << setName <<
") " << collectorNumber <<
'\n';
88 for (
auto entry : obj.value(
"sideboard").toObject()) {
89 auto quantity = entry.toObject().value(
"quantity").toInt();
91 auto card = entry.toObject().value(
"card").toObject();
92 QString cardName = card.value(
"name").toString();
93 QString setName = card.value(
"set").toString().toUpper();
94 QString collectorNumber = card.value(
"cn").toString();
96 outStream << quantity <<
' ' << cardName <<
" (" << setName <<
") " << collectorNumber <<
'\n';
102 QJsonObject commandersObj = obj.value(
"commanders").toObject();
103 if (!commandersObj.isEmpty()) {
104 for (
auto it = commandersObj.begin(); it != commandersObj.end(); ++it) {
105 QJsonObject cardData = it.value().toObject().value(
"card").toObject();
106 QString commanderName = cardData.value(
"name").toString();
107 QString setName = cardData.value(
"set").toString().toUpper();
108 QString collectorNumber = cardData.value(
"cn").toString();
109 QString providerId = cardData.value(
"scryfall_id").toString();
Definition interface_json_deck_parser.h:25
DeckList parse(const QJsonObject &obj) override
Definition interface_json_deck_parser.h:27
Represents a complete deck, including metadata, zones, cards, and sideboard plans.
Definition deck_list.h:63
void setBannerCard(const CardRef &_bannerCard={})
Definition deck_list.h:114
void forEachCard(const std::function< void(InnerDecklistNode *, DecklistCardNode *)> &func) const
Apply a function to every card in the deck tree.
Definition deck_list.cpp:525
bool loadFromStream_Plain(QTextStream &stream, bool preserveMetadata)
Definition deck_list.cpp:204
void setComments(const QString &_comments=QString())
Definition deck_list.h:98
DecklistCardNode * addCard(const QString &cardName, const QString &zoneName, int position=-1, const QString &cardSetName=QString(), const QString &cardSetCollectorNumber=QString(), const QString &cardProviderId=QString(), const bool formatLegal=true)
Definition deck_list.cpp:484
void setName(const QString &_name=QString())
Definition deck_list.h:94
Definition interface_json_deck_parser.h:17
virtual ~IJsonDeckParser()=default
virtual DeckList parse(const QJsonObject &obj)=0
Definition interface_json_deck_parser.h:60
DeckList parse(const QJsonObject &obj) override
Definition interface_json_deck_parser.h:62
#define DECK_ZONE_MAIN
Constant for the "main" deck zone name.
Definition inner_deck_list_node.h:22
Sets the providerId of the card based on its set name and collector number.
Definition card_node_function.h:33