diff --git a/cockatrice/src/carditem.cpp b/cockatrice/src/carditem.cpp index 312350c15..61bd9a0fc 100644 --- a/cockatrice/src/carditem.cpp +++ b/cockatrice/src/carditem.cpp @@ -2,8 +2,8 @@ #include #include #include -#include #include +#include "gamescene.h" #include "carditem.h" #include "carddragitem.h" #include "carddatabase.h" @@ -369,6 +369,8 @@ void CardItem::resetState() attachedCards.clear(); setTapped(false, false); setDoesntUntap(false); + if (scene()) + static_cast(scene())->unregisterAnimationItem(this); update(); } diff --git a/cockatrice/src/gamescene.cpp b/cockatrice/src/gamescene.cpp index d89bf0e88..1ba225e62 100644 --- a/cockatrice/src/gamescene.cpp +++ b/cockatrice/src/gamescene.cpp @@ -262,6 +262,13 @@ void GameScene::registerAnimationItem(AbstractCardItem *card) animationTimer->start(50, this); } +void GameScene::unregisterAnimationItem(AbstractCardItem *card) +{ + cardsToAnimate.remove(static_cast(card)); + if (cardsToAnimate.isEmpty()) + animationTimer->stop(); +} + void GameScene::startRubberBand(const QPointF &selectionOrigin) { emit sigStartRubberBand(selectionOrigin); diff --git a/cockatrice/src/gamescene.h b/cockatrice/src/gamescene.h index 2f3b5ca9b..e46b66610 100644 --- a/cockatrice/src/gamescene.h +++ b/cockatrice/src/gamescene.h @@ -42,6 +42,7 @@ public: void stopRubberBand(); void registerAnimationItem(AbstractCardItem *item); + void unregisterAnimationItem(AbstractCardItem *card); public slots: void toggleZoneView(Player *player, const QString &zoneName, int numberCards); void addRevealedZoneView(Player *player, CardZone *zone, const QList &cardList);