From e4dd2f368854908e6c5a6a66ac196a3028489072 Mon Sep 17 00:00:00 2001 From: RickyRister Date: Mon, 16 Dec 2024 19:39:17 -0800 Subject: [PATCH] untap will work when cards are selected across multiple zones --- cockatrice/src/game/zones/table_zone.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cockatrice/src/game/zones/table_zone.cpp b/cockatrice/src/game/zones/table_zone.cpp index 19f7eebcb..0aace73ca 100644 --- a/cockatrice/src/game/zones/table_zone.cpp +++ b/cockatrice/src/game/zones/table_zone.cpp @@ -213,7 +213,18 @@ void TableZone::reorganizeCards() void TableZone::toggleTapped() { - QList selectedItems = scene()->selectedItems(); + QList selectedItemsRaw = scene()->selectedItems(); + QList selectedItems; + + auto isCardOnTable = [](const QGraphicsItem *item) { + if (auto card = qgraphicsitem_cast(item)) { + return card->getZone()->getName() == "table"; + } + return false; + }; + + std::copy_if(selectedItemsRaw.begin(), selectedItemsRaw.end(), std::back_inserter(selectedItems), isCardOnTable); + bool tapAll = std::any_of(selectedItems.begin(), selectedItems.end(), [](const QGraphicsItem *item) { return !qgraphicsitem_cast(item)->getTapped(); });