60 DeckLoader *
parse(
const QJsonObject &obj)
override
62 DeckLoader *loader =
new DeckLoader(
nullptr);
64 QString deckName = obj.value(
"name").toString();
65 QString deckDescription = obj.value(
"description").toString();
67 loader->getDeckList()->setName(deckName);
68 loader->getDeckList()->setComments(deckDescription);
71 QTextStream outStream(&outputText);
73 for (
auto entry : obj.value(
"mainboard").toObject()) {
74 auto quantity = entry.toObject().value(
"quantity").toInt();
76 auto card = entry.toObject().value(
"card").toObject();
77 QString cardName = card.value(
"name").toString();
78 QString setName = card.value(
"set").toString().toUpper();
79 QString collectorNumber = card.value(
"cn").toString();
81 outStream << quantity <<
' ' << cardName <<
" (" << setName <<
") " << collectorNumber <<
'\n';
86 for (
auto entry : obj.value(
"sideboard").toObject()) {
87 auto quantity = entry.toObject().value(
"quantity").toInt();
89 auto card = entry.toObject().value(
"card").toObject();
90 QString cardName = card.value(
"name").toString();
91 QString setName = card.value(
"set").toString().toUpper();
92 QString collectorNumber = card.value(
"cn").toString();
94 outStream << quantity <<
' ' << cardName <<
" (" << setName <<
") " << collectorNumber <<
'\n';
97 loader->getDeckList()->loadFromStream_Plain(outStream,
false);
98 DeckLoader::resolveSetNameAndNumberToProviderID(loader->getDeckList());
100 QJsonObject commandersObj = obj.value(
"commanders").toObject();
101 if (!commandersObj.isEmpty()) {
102 for (
auto it = commandersObj.begin(); it != commandersObj.end(); ++it) {
103 QJsonObject cardData = it.value().toObject().value(
"card").toObject();
104 QString commanderName = cardData.value(
"name").toString();
105 QString setName = cardData.value(
"set").toString().toUpper();
106 QString collectorNumber = cardData.value(
"cn").toString();
107 QString providerId = cardData.value(
"scryfall_id").toString();
109 loader->getDeckList()->setBannerCard({commanderName, providerId});
110 loader->getDeckList()->addCard(commanderName,
DECK_ZONE_MAIN, -1, setName, collectorNumber, providerId);