From 12f8f1a533589bc4b9ec1f1b2f79d532bc3680a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Sat, 1 Mar 2025 12:55:31 +0100 Subject: [PATCH] Move new method to DeckListModel so we don't have to include CardDatabaseManager in common. --- .../visual_deck_editor_widget.cpp | 6 +- cockatrice/src/deck/deck_list_model.cpp | 68 +++++++++++++++++++ cockatrice/src/deck/deck_list_model.h | 2 + common/decklist.cpp | 62 ----------------- common/decklist.h | 2 - 5 files changed, 73 insertions(+), 67 deletions(-) diff --git a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp index fb686db9b..205b2182e 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_editor/visual_deck_editor_widget.cpp @@ -204,9 +204,9 @@ void VisualDeckEditorWidget::populateCards() if (!deckListModel) return; - DeckList *decklist = deckListModel->getDeckList(); - mainDeckCards = decklist->getCardsAsCardInfoPtrsForZone(DECK_ZONE_MAIN); - sideboardCards = decklist->getCardsAsCardInfoPtrsForZone(DECK_ZONE_SIDE); + + mainDeckCards = deckListModel->getCardsAsCardInfoPtrsForZone(DECK_ZONE_MAIN); + sideboardCards = deckListModel->getCardsAsCardInfoPtrsForZone(DECK_ZONE_SIDE); } void VisualDeckEditorWidget::sortCardList(const QStringList properties, Qt::SortOrder order = Qt::AscendingOrder) diff --git a/cockatrice/src/deck/deck_list_model.cpp b/cockatrice/src/deck/deck_list_model.cpp index e35870055..443043881 100644 --- a/cockatrice/src/deck/deck_list_model.cpp +++ b/cockatrice/src/deck/deck_list_model.cpp @@ -484,6 +484,74 @@ void DeckListModel::setDeckList(DeckLoader *_deck) rebuildTree(); } +QList *DeckListModel::getCardsAsCardInfoPtrs() const +{ + QList *cards = new QList(); + DeckList *decklist = getDeckList(); + if (!decklist) { + return cards; + } + InnerDecklistNode *listRoot = decklist->getRoot(); + if (!listRoot) + return cards; + + for (int i = 0; i < listRoot->size(); i++) { + InnerDecklistNode *currentZone = dynamic_cast(listRoot->at(i)); + if (!currentZone) + continue; + for (int j = 0; j < currentZone->size(); j++) { + DecklistCardNode *currentCard = dynamic_cast(currentZone->at(j)); + if (!currentCard) + continue; + for (int k = 0; k < currentCard->getNumber(); ++k) { + CardInfoPtr info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId( + currentCard->getName(), currentCard->getCardProviderId()); + if (info) { + cards->append(info); + } else { + qDebug() << "Card not found in database!"; + } + } + } + } + return cards; +} + +QList *DeckListModel::getCardsAsCardInfoPtrsForZone(QString zoneName) const +{ + QList *cards = new QList(); + DeckList *decklist = getDeckList(); + if (!decklist) { + return cards; + } + InnerDecklistNode *listRoot = decklist->getRoot(); + if (!listRoot) + return cards; + + for (int i = 0; i < listRoot->size(); i++) { + InnerDecklistNode *currentZone = dynamic_cast(listRoot->at(i)); + if (!currentZone) + continue; + if (currentZone->getName() == zoneName) { + for (int j = 0; j < currentZone->size(); j++) { + DecklistCardNode *currentCard = dynamic_cast(currentZone->at(j)); + if (!currentCard) + continue; + for (int k = 0; k < currentCard->getNumber(); ++k) { + CardInfoPtr info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId( + currentCard->getName(), currentCard->getCardProviderId()); + if (info) { + cards->append(info); + } else { + qDebug() << "Card not found in database!"; + } + } + } + } + } + return cards; +} + void DeckListModel::printDeckListNode(QTextCursor *cursor, InnerDecklistNode *node) { const int totalColumns = 2; diff --git a/cockatrice/src/deck/deck_list_model.h b/cockatrice/src/deck/deck_list_model.h index c7194a5da..ba2759e21 100644 --- a/cockatrice/src/deck/deck_list_model.h +++ b/cockatrice/src/deck/deck_list_model.h @@ -110,6 +110,8 @@ public: return deckList; } void setDeckList(DeckLoader *_deck); + QList *getCardsAsCardInfoPtrs() const; + QList *getCardsAsCardInfoPtrsForZone(QString zoneName) const; private: DeckLoader *deckList; diff --git a/common/decklist.cpp b/common/decklist.cpp index 2d2543a2a..cf1240d8a 100644 --- a/common/decklist.cpp +++ b/common/decklist.cpp @@ -1,7 +1,5 @@ #include "decklist.h" -#include "../cockatrice/src/game/cards/card_database_manager.h" - #include #include #include @@ -852,66 +850,6 @@ QMap DeckList::getCardListWithProviderId() const return result; } -QList *DeckList::getCardsAsCardInfoPtrs() const -{ - QList *cards = new QList(); - InnerDecklistNode *listRoot = getRoot(); - if (!listRoot) - return cards; - - for (int i = 0; i < listRoot->size(); i++) { - InnerDecklistNode *currentZone = dynamic_cast(listRoot->at(i)); - if (!currentZone) - continue; - for (int j = 0; j < currentZone->size(); j++) { - DecklistCardNode *currentCard = dynamic_cast(currentZone->at(j)); - if (!currentCard) - continue; - for (int k = 0; k < currentCard->getNumber(); ++k) { - CardInfoPtr info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId( - currentCard->getName(), currentCard->getCardProviderId()); - if (info) { - cards->append(info); - } else { - qDebug() << "Card not found in database!"; - } - } - } - } - return cards; -} - -QList *DeckList::getCardsAsCardInfoPtrsForZone(QString zoneName) const -{ - QList *cards = new QList(); - InnerDecklistNode *listRoot = getRoot(); - if (!listRoot) - return cards; - - for (int i = 0; i < listRoot->size(); i++) { - InnerDecklistNode *currentZone = dynamic_cast(listRoot->at(i)); - if (!currentZone) - continue; - if (currentZone->getName() == zoneName) { - for (int j = 0; j < currentZone->size(); j++) { - DecklistCardNode *currentCard = dynamic_cast(currentZone->at(j)); - if (!currentCard) - continue; - for (int k = 0; k < currentCard->getNumber(); ++k) { - CardInfoPtr info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId( - currentCard->getName(), currentCard->getCardProviderId()); - if (info) { - cards->append(info); - } else { - qDebug() << "Card not found in database!"; - } - } - } - } - } - return cards; -} - int DeckList::getSideboardSize() const { int size = 0; diff --git a/common/decklist.h b/common/decklist.h index 0d934c64b..42d001d41 100644 --- a/common/decklist.h +++ b/common/decklist.h @@ -366,8 +366,6 @@ public: } QStringList getCardList() const; QMap getCardListWithProviderId() const; - QList *getCardsAsCardInfoPtrs() const; - QList *getCardsAsCardInfoPtrsForZone(QString zoneName) const; int getSideboardSize() const;