diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.cpp b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.cpp index 4a3fea579..dc069a4ce 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.cpp +++ b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.cpp @@ -548,12 +548,9 @@ QList DeckList::getCardNodes(const QStringList &restrictToZo { QList result; - for (auto *node : *root) { - auto *zoneNode = dynamic_cast(node); - if (zoneNode == nullptr) { - continue; - } - if (!restrictToZones.isEmpty() && !restrictToZones.contains(node->getName())) { + auto zoneNodes = getZoneNodes(); + for (auto *zoneNode : zoneNodes) { + if (!restrictToZones.isEmpty() && !restrictToZones.contains(zoneNode->getName())) { continue; } for (auto *cardNode : *zoneNode) { @@ -567,6 +564,19 @@ QList DeckList::getCardNodes(const QStringList &restrictToZo return result; } +QList DeckList::getZoneNodes() const +{ + QList zones; + for (auto *node : *root) { + InnerDecklistNode *currentZone = dynamic_cast(node); + if (!currentZone) + continue; + zones.append(currentZone); + } + + return zones; +} + int DeckList::getSideboardSize() const { int size = 0; diff --git a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.h b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.h index 63c304f47..f4d789b3d 100644 --- a/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.h +++ b/libcockatrice_deck_list/libcockatrice/deck_list/deck_list.h @@ -266,6 +266,7 @@ public: QStringList getCardList() const; QList getCardRefList() const; QList getCardNodes(const QStringList &restrictToZones = QStringList()) const; + QList getZoneNodes() const; int getSideboardSize() const; InnerDecklistNode *getRoot() const {