diff --git a/cockatrice/src/game/zones/card_zone.cpp b/cockatrice/src/game/zones/card_zone.cpp index 4dd6b3409..6252bd297 100644 --- a/cockatrice/src/game/zones/card_zone.cpp +++ b/cockatrice/src/game/zones/card_zone.cpp @@ -1,5 +1,6 @@ #include "card_zone.h" +#include "../cards/card_database_manager.h" #include "../cards/card_item.h" #include "../player/player.h" #include "pb/command_move_card.pb.h" @@ -31,6 +32,11 @@ CardZone::CardZone(Player *_p, { if (!isView) player->addZone(this); + + // If we join a game before the card db finishes loading, the cards might have the wrong printings. + // Force refresh all cards in the zone when db finishes loading to fix that. + connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFinished, this, + &CardZone::refreshCardInfos); } CardZone::~CardZone() @@ -119,6 +125,13 @@ bool CardZone::showContextMenu(const QPoint &screenPos) return false; } +void CardZone::refreshCardInfos() +{ + for (const auto &cardItem : cards) { + cardItem->refreshCardInfo(); + } +} + void CardZone::mousePressEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::RightButton) { diff --git a/cockatrice/src/game/zones/card_zone.h b/cockatrice/src/game/zones/card_zone.h index 6d6cddd81..f3e889113 100644 --- a/cockatrice/src/game/zones/card_zone.h +++ b/cockatrice/src/game/zones/card_zone.h @@ -43,6 +43,9 @@ public slots: void moveAllToZone(); bool showContextMenu(const QPoint &screenPos); +private slots: + void refreshCardInfos(); + public: enum {