From e4cfe081139bbe7cc858c796c5ff2c8b930df7b3 Mon Sep 17 00:00:00 2001 From: Zach H Date: Thu, 5 Dec 2024 03:18:41 -0800 Subject: [PATCH] Address weird crash case (#5221) * Address weird crash case * Address weird crash case * remove const --- cockatrice/src/game/player/player.cpp | 34 +++++++++++-------------- cockatrice/src/game/zones/card_zone.cpp | 16 +++++++++--- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/cockatrice/src/game/player/player.cpp b/cockatrice/src/game/player/player.cpp index 71402fc61..5565e1129 100644 --- a/cockatrice/src/game/player/player.cpp +++ b/cockatrice/src/game/player/player.cpp @@ -1693,7 +1693,7 @@ void Player::actCreatePredefinedToken() void Player::actCreateRelatedCard() { - CardItem *sourceCard = game->getActiveCard(); + const CardItem *sourceCard = game->getActiveCard(); if (!sourceCard) { return; } @@ -1714,7 +1714,7 @@ void Player::actCreateRelatedCard() void Player::actCreateAllRelatedCards() { - CardItem *sourceCard = game->getActiveCard(); + const CardItem *sourceCard = game->getActiveCard(); if (!sourceCard) { return; } @@ -3247,11 +3247,10 @@ void Player::actSetPT() void Player::actDrawArrow() { - if (!game->getActiveCard()) { - return; + auto *card = game->getActiveCard(); + if (card) { + card->drawArrow(Qt::red); } - - game->getActiveCard()->drawArrow(Qt::red); } void Player::actIncP() @@ -3436,30 +3435,27 @@ void Player::actCardCounterTrigger() void Player::actPlay() { - if (!game->getActiveCard()) { - return; + auto *card = game->getActiveCard(); + if (card) { + const bool cipt = card->getInfo() ? card->getInfo()->getCipt() : false; + playCard(card, false, cipt); } - - bool cipt = game->getActiveCard()->getInfo() ? game->getActiveCard()->getInfo()->getCipt() : false; - playCard(game->getActiveCard(), false, cipt); } void Player::actHide() { - if (!game->getActiveCard()) { - return; + auto *card = game->getActiveCard(); + if (card) { + card->getZone()->removeCard(card); } - - game->getActiveCard()->getZone()->removeCard(game->getActiveCard()); } void Player::actPlayFacedown() { - if (!game->getActiveCard()) { - return; + auto *card = game->getActiveCard(); + if (card) { + playCard(card, true, false); } - - playCard(game->getActiveCard(), true, false); } void Player::actReveal(QAction *action) diff --git a/cockatrice/src/game/zones/card_zone.cpp b/cockatrice/src/game/zones/card_zone.cpp index ad0175506..4dd6b3409 100644 --- a/cockatrice/src/game/zones/card_zone.cpp +++ b/cockatrice/src/game/zones/card_zone.cpp @@ -130,8 +130,13 @@ void CardZone::mousePressEvent(QGraphicsSceneMouseEvent *event) event->ignore(); } -void CardZone::addCard(CardItem *card, bool reorganize, int x, int y) +void CardZone::addCard(CardItem *card, const bool reorganize, const int x, const int y) { + if (!card) { + qDebug() << "CardZone::addCard() card is null, this shouldn't normally happen"; + return; + } + for (auto *view : views) { if ((x <= view->getCards().size()) || (view->getNumberCards() == -1)) { view->addCard(new CardItem(player, nullptr, card->getName(), card->getProviderId(), card->getId()), @@ -153,7 +158,7 @@ CardItem *CardZone::getCard(int cardId, const QString &cardName) CardItem *c = cards.findCard(cardId); if (!c) { qDebug() << "CardZone::getCard: card id=" << cardId << "not found"; - return 0; + return nullptr; } // If the card's id is -1, this zone is invisible, // so we need to give the card an id and a name as it comes out. @@ -179,7 +184,7 @@ CardItem *CardZone::takeCard(int position, int cardId, bool /*canResize*/) position = 0; } if (position >= cards.size()) - return 0; + return nullptr; CardItem *c = cards.takeAt(position); @@ -196,6 +201,11 @@ CardItem *CardZone::takeCard(int position, int cardId, bool /*canResize*/) void CardZone::removeCard(CardItem *card) { + if (!card) { + qDebug() << "CardZone::removeCard: card is null, this shouldn't normally happen"; + return; + } + cards.removeOne(card); reorganizeCards(); emit cardCountChanged();