diff --git a/libcockatrice_card/libcockatrice/card/database/card_database.cpp b/libcockatrice_card/libcockatrice/card/database/card_database.cpp index 443552eb3..56f228c69 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database.cpp @@ -241,6 +241,18 @@ void CardDatabase::addFormat(const FormatRulesPtr &format) void CardDatabase::swapInDatabaseData(CardDatabaseData data) { + for (const auto &card : cards) { + for (auto *rel : card->getRelatedCards()) { + rel->deleteLater(); + } + for (auto *rel : card->getReverseRelatedCards()) { + rel->deleteLater(); + } + for (auto *rel : card->getReverseRelatedCards2Me()) { + rel->deleteLater(); + } + } + cards = std::move(data.cards); simpleNameCards = std::move(data.simpleNameCards); sets = std::move(data.sets); diff --git a/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp b/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp index d4dc567b6..8e5a83205 100644 --- a/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp +++ b/libcockatrice_card/libcockatrice/card/database/card_database_loader.cpp @@ -2,6 +2,7 @@ #include "card_database.h" #include "card_database_cache.h" +#include "parser/card_database_parser.h" #include "parser/cockatrice_xml_3.h" #include "parser/cockatrice_xml_4.h" @@ -92,6 +93,8 @@ LoadStatus CardDatabaseLoader::doLoadCardDatabases() emit loadingStarted(); qCInfo(CardDatabaseLoadingLog) << "Card Database Loading Started"; + ICardDatabaseParser::clearSetlist(); + CardDatabaseData data; LoadStatus loadStatus = NotLoaded; @@ -126,6 +129,7 @@ LoadStatus CardDatabaseLoader::doLoadCardDatabases() qCInfo(CardDatabaseLoadingSuccessOrFailureLog) << "Card Database Loading Success"; emit databaseDataReady(std::move(data)); emit loadingFinished(); + database->checkUnknownSets(); } else { qCInfo(CardDatabaseLoadingSuccessOrFailureLog) << "Card Database Loading Failed"; emit loadingFailed(); // bring up the settings dialog