From 5d0d466930a3bb3eb99b9fc8d8014031e5d7a173 Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Sat, 31 Oct 2026 18:44:13 +0100 Subject: [PATCH] [Refactor] Add card name, printing id, and color to CardState (#7433) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Lukas BrĂ¼bach --- cockatrice/src/game/board/card_state.cpp | 6 ++++++ cockatrice/src/game/board/card_state.h | 19 +++++++++++++++++++ .../board/abstract_card_item.cpp | 13 ++++++++----- .../game_graphics/board/abstract_card_item.h | 5 ++--- 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/cockatrice/src/game/board/card_state.cpp b/cockatrice/src/game/board/card_state.cpp index 95776c237..df7963e00 100644 --- a/cockatrice/src/game/board/card_state.cpp +++ b/cockatrice/src/game/board/card_state.cpp @@ -20,6 +20,12 @@ void CardState::resetState(bool keepAnnotations) emit stateReset(); } +void CardState::setColor(const QString &_color) +{ + color = _color; + emit colorChanged(); +} + void CardState::deleteView() { emit viewDeleteRequested(); diff --git a/cockatrice/src/game/board/card_state.h b/cockatrice/src/game/board/card_state.h index 2f9d5917d..bce5a298d 100644 --- a/cockatrice/src/game/board/card_state.h +++ b/cockatrice/src/game/board/card_state.h @@ -32,6 +32,7 @@ private: QString pt; bool doesntUntap = false; bool destroyOnZoneChange = false; + QString color; CardState *attachedTo = nullptr; QList attachedCards; @@ -46,6 +47,7 @@ signals: void tappedChanged(bool newTapped, bool canAnimate); void facedownChanged(bool newFaceDown); void stateReset(); + void colorChanged(); void attackingChanged(bool newValue); void countersChanged(const QMap &newCounters); @@ -92,6 +94,16 @@ public: void setCardRef(const CardRef &_cardRef); + QString getName() const + { + return cardRef.name; + } + + QString getProviderId() const + { + return cardRef.providerId; + } + ExactCard getCard() const { return exactCard; @@ -186,6 +198,13 @@ public: */ static QVariantList parsePT(const QString &pt); + [[nodiscard]] QString getColor() const + { + return color; + } + + void setColor(const QString &_color); + bool getDoesntUntap() const { return doesntUntap; diff --git a/cockatrice/src/game_graphics/board/abstract_card_item.cpp b/cockatrice/src/game_graphics/board/abstract_card_item.cpp index 3bc0e1156..0e8b6ced3 100644 --- a/cockatrice/src/game_graphics/board/abstract_card_item.cpp +++ b/cockatrice/src/game_graphics/board/abstract_card_item.cpp @@ -54,6 +54,10 @@ AbstractCardItem::AbstractCardItem(QGraphicsItem *parent, const CardRef &cardRef connect(state, &CardState::cardRefChanged, this, &AbstractCardItem::onCardRefChanged); connect(state, &CardState::tappedChanged, this, &AbstractCardItem::onTappedChanged); connect(state, &CardState::facedownChanged, this, [this] { update(); }); + connect(state, &CardState::colorChanged, this, [this] { + cacheBgColor(); + update(); + }); connect(&SettingsCache::instance().cardsDisplay(), &CardsDisplaySettings::displayCardNamesChanged, this, [this] { update(); }); @@ -265,18 +269,17 @@ void AbstractCardItem::setHovered(bool _hovered) void AbstractCardItem::setColor(const QString &_color) { - color = _color; - cacheBgColor(); - update(); + state->setColor(_color); } void AbstractCardItem::cacheBgColor() { QChar colorChar; - if (color.isEmpty()) { + const QString cardColor = state->getColor(); + if (cardColor.isEmpty()) { colorChar = state->getCardInfo().getColorChar(); } else { - colorChar = color.at(0); + colorChar = cardColor.at(0); } switch (colorChar.toLower().toLatin1()) { diff --git a/cockatrice/src/game_graphics/board/abstract_card_item.h b/cockatrice/src/game_graphics/board/abstract_card_item.h index 709265a2a..01fc4bb0a 100644 --- a/cockatrice/src/game_graphics/board/abstract_card_item.h +++ b/cockatrice/src/game_graphics/board/abstract_card_item.h @@ -23,7 +23,6 @@ class AbstractCardItem : public ArrowTarget, public IAnimatedItem protected: CardState *state; int tapAngle; - QString color; QColor bgColor; private: @@ -114,9 +113,9 @@ public: { return isHovered; } - QString getColor() const + [[nodiscard]] QString getColor() const { - return color; + return state->getColor(); } void setColor(const QString &_color); bool getTapped() const