From 07f5ecc87da5ed7b5cbe70654579b25bb6472c4c Mon Sep 17 00:00:00 2001 From: RickyRister Date: Sun, 5 Apr 2026 02:59:00 -0700 Subject: [PATCH] [Game] Refactor: move setCardAttrHelper to PlayerEventHandler --- cockatrice/src/game/player/player.cpp | 14 ----- cockatrice/src/game/player/player.h | 1 - cockatrice/src/game/player/player_actions.cpp | 55 ---------------- cockatrice/src/game/player/player_actions.h | 14 ----- .../src/game/player/player_event_handler.cpp | 62 +++++++++++++++++-- .../src/game/player/player_event_handler.h | 8 +++ 6 files changed, 66 insertions(+), 88 deletions(-) diff --git a/cockatrice/src/game/player/player.cpp b/cockatrice/src/game/player/player.cpp index ac4149f0e..74a6eb21b 100644 --- a/cockatrice/src/game/player/player.cpp +++ b/cockatrice/src/game/player/player.cpp @@ -43,20 +43,6 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, bool _judge, A connect(this, &Player::activeChanged, graphicsItem, &PlayerGraphicsItem::onPlayerActiveChanged); connect(this, &Player::openDeckEditor, game->getTab(), &TabGame::openDeckEditor); - - forwardActionSignalsToEventHandler(); -} - -// Event Handler is the controller i.e. everything hooks up to this to know about player state -// Player should forward (private) signals to the event handler - -void Player::forwardActionSignalsToEventHandler() -{ - connect(playerActions, &PlayerActions::logSetTapped, playerEventHandler, &PlayerEventHandler::logSetTapped); - connect(playerActions, &PlayerActions::logSetDoesntUntap, playerEventHandler, - &PlayerEventHandler::logSetDoesntUntap); - connect(playerActions, &PlayerActions::logSetAnnotation, playerEventHandler, &PlayerEventHandler::logSetAnnotation); - connect(playerActions, &PlayerActions::logSetPT, playerEventHandler, &PlayerEventHandler::logSetPT); } void Player::initializeZones() diff --git a/cockatrice/src/game/player/player.h b/cockatrice/src/game/player/player.h index e9c008821..9b8456aaf 100644 --- a/cockatrice/src/game/player/player.h +++ b/cockatrice/src/game/player/player.h @@ -82,7 +82,6 @@ public slots: public: Player(const ServerInfo_User &info, int _id, bool _local, bool _judge, AbstractGame *_parent); - void forwardActionSignalsToEventHandler(); ~Player() override; void initializeZones(); diff --git a/cockatrice/src/game/player/player_actions.cpp b/cockatrice/src/game/player/player_actions.cpp index ca0967636..ee5a3a655 100644 --- a/cockatrice/src/game/player/player_actions.cpp +++ b/cockatrice/src/game/player/player_actions.cpp @@ -1146,61 +1146,6 @@ void PlayerActions::actSayMessage() sendGameCommand(cmd); } -void PlayerActions::setCardAttrHelper(const GameEventContext &context, - CardItem *card, - CardAttribute attribute, - const QString &avalue, - bool allCards, - EventProcessingOptions options) -{ - if (card == nullptr) { - return; - } - - bool moveCardContext = context.HasExtension(Context_MoveCard::ext); - switch (attribute) { - case AttrTapped: { - bool tapped = avalue == "1"; - if (!(!tapped && card->getDoesntUntap() && allCards)) { - if (!allCards) { - emit logSetTapped(player, card, tapped); - } - bool canAnimate = !options.testFlag(SKIP_TAP_ANIMATION) && !moveCardContext; - card->setTapped(tapped, canAnimate); - } - break; - } - case AttrAttacking: { - card->setAttacking(avalue == "1"); - break; - } - case AttrFaceDown: { - card->setFaceDown(avalue == "1"); - break; - } - case AttrColor: { - card->setColor(avalue); - break; - } - case AttrAnnotation: { - emit logSetAnnotation(player, card, avalue); - card->setAnnotation(avalue); - break; - } - case AttrDoesntUntap: { - bool value = (avalue == "1"); - emit logSetDoesntUntap(player, card, value); - card->setDoesntUntap(value); - break; - } - case AttrPT: { - emit logSetPT(player, card, avalue); - card->setPT(avalue); - break; - } - } -} - void PlayerActions::actMoveCardXCardsFromTop() { int deckSize = player->getDeckZone()->getCards().size() + 1; // add the card to move to the deck diff --git a/cockatrice/src/game/player/player_actions.h b/cockatrice/src/game/player/player_actions.h index d4c6daacf..d17a53972 100644 --- a/cockatrice/src/game/player/player_actions.h +++ b/cockatrice/src/game/player/player_actions.h @@ -16,7 +16,6 @@ #include #include #include -#include namespace google { @@ -35,12 +34,6 @@ class PlayerActions : public QObject { Q_OBJECT -signals: - void logSetTapped(Player *player, CardItem *card, bool tapped); - void logSetAnnotation(Player *player, CardItem *card, QString newAnnotation); - void logSetDoesntUntap(Player *player, CardItem *card, bool doesntUntap); - void logSetPT(Player *player, CardItem *card, QString newPT); - public: enum CardsToReveal { @@ -55,13 +48,6 @@ public: PendingCommand *prepareGameCommand(const ::google::protobuf::Message &cmd); PendingCommand *prepareGameCommand(const QList &cmdList); - void setCardAttrHelper(const GameEventContext &context, - CardItem *card, - CardAttribute attribute, - const QString &avalue, - bool allCards, - EventProcessingOptions options); - void moveOneCardUntil(CardItem *card); void stopMoveTopCardsUntil(); diff --git a/cockatrice/src/game/player/player_event_handler.cpp b/cockatrice/src/game/player/player_event_handler.cpp index f4c3840e0..f737bc18c 100644 --- a/cockatrice/src/game/player/player_event_handler.cpp +++ b/cockatrice/src/game/player/player_event_handler.cpp @@ -150,8 +150,8 @@ void PlayerEventHandler::eventSetCardAttr(const Event_SetCardAttr &event, if (!event.has_card_id()) { const CardList &cards = zone->getCards(); for (int i = 0; i < cards.size(); ++i) { - player->getPlayerActions()->setCardAttrHelper(context, cards.at(i), event.attribute(), - QString::fromStdString(event.attr_value()), true, options); + setCardAttrHelper(context, cards.at(i), event.attribute(), QString::fromStdString(event.attr_value()), true, + options); } if (event.attribute() == AttrTapped) { emit logSetTapped(player, nullptr, event.attr_value() == "1"); @@ -162,8 +162,62 @@ void PlayerEventHandler::eventSetCardAttr(const Event_SetCardAttr &event, qWarning() << "PlayerEventHandler::eventSetCardAttr: card id=" << event.card_id() << "not found"; return; } - player->getPlayerActions()->setCardAttrHelper(context, card, event.attribute(), - QString::fromStdString(event.attr_value()), false, options); + setCardAttrHelper(context, card, event.attribute(), QString::fromStdString(event.attr_value()), false, options); + } +} + +void PlayerEventHandler::setCardAttrHelper(const GameEventContext &context, + CardItem *card, + CardAttribute attribute, + const QString &avalue, + bool allCards, + EventProcessingOptions options) +{ + if (card == nullptr) { + return; + } + + bool moveCardContext = context.HasExtension(Context_MoveCard::ext); + switch (attribute) { + case AttrTapped: { + bool tapped = avalue == "1"; + if (!(!tapped && card->getDoesntUntap() && allCards)) { + if (!allCards) { + emit logSetTapped(player, card, tapped); + } + bool canAnimate = !options.testFlag(SKIP_TAP_ANIMATION) && !moveCardContext; + card->setTapped(tapped, canAnimate); + } + break; + } + case AttrAttacking: { + card->setAttacking(avalue == "1"); + break; + } + case AttrFaceDown: { + card->setFaceDown(avalue == "1"); + break; + } + case AttrColor: { + card->setColor(avalue); + break; + } + case AttrAnnotation: { + emit logSetAnnotation(player, card, avalue); + card->setAnnotation(avalue); + break; + } + case AttrDoesntUntap: { + bool value = (avalue == "1"); + emit logSetDoesntUntap(player, card, value); + card->setDoesntUntap(value); + break; + } + case AttrPT: { + emit logSetPT(player, card, avalue); + card->setPT(avalue); + break; + } } } diff --git a/cockatrice/src/game/player/player_event_handler.h b/cockatrice/src/game/player/player_event_handler.h index 5d1ddd4b4..9f67d24ab 100644 --- a/cockatrice/src/game/player/player_event_handler.h +++ b/cockatrice/src/game/player/player_event_handler.h @@ -9,6 +9,7 @@ #include "event_processing_options.h" #include +#include #include #include @@ -110,6 +111,13 @@ public: private: Player *player; + + void setCardAttrHelper(const GameEventContext &context, + CardItem *card, + CardAttribute attribute, + const QString &avalue, + bool allCards, + EventProcessingOptions options); }; #endif // COCKATRICE_PLAYER_EVENT_HANDLER_H