Refactor: Represent cardName + providerId with CardRef struct (#6039)

* card_ref.h

* update CardDatabase signatures

* make everything compile

* rename methods

* add docs

* mark stuff const

* set cardRef in CardItem

* cleanup

* fix build failure

* Fix builds on mac

---------

Co-authored-by: ZeldaZach <zahalpern+github@gmail.com>
This commit is contained in:
RickyRister 2025-07-15 19:14:02 -07:00 committed by GitHub
parent e05dad4267
commit a9b3be33e0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
61 changed files with 328 additions and 305 deletions

View file

@ -141,8 +141,7 @@ void CardZone::addCard(CardItem *card, const bool reorganize, const int x, const
for (auto *view : views) {
if (view->prepareAddCard(x)) {
view->addCard(new CardItem(player, nullptr, card->getName(), card->getProviderId(), card->getId()),
reorganize, x, y);
view->addCard(new CardItem(player, nullptr, card->getCardRef(), card->getId()), reorganize, x, y);
}
}
@ -167,7 +166,8 @@ CardItem *CardZone::getCard(int cardId, const QString &cardName)
// It can be assumed that in an invisible zone, all cards are equal.
if ((c->getId() == -1) || (c->getName().isEmpty())) {
c->setId(cardId);
c->setName(cardName);
// TODO: also set providerId
c->setCardRef({cardName});
}
return c;
}

View file

@ -32,7 +32,7 @@ void HandZone::addCardImpl(CardItem *card, int x, int /*y*/)
if (!cards.getContentsKnown()) {
card->setId(-1);
card->setName();
card->setCardRef({});
}
card->setParentItem(this);
card->resetState();

View file

@ -66,11 +66,11 @@ void PileZone::addCardImpl(CardItem *card, int x, int /*y*/)
cards.insert(x, card);
card->setPos(0, 0);
if (!contentsKnown()) {
card->setName(QString());
card->setCardRef({});
card->setId(-1);
// If we obscure a previously revealed card, its name has to be forgotten
if (cards.size() > x + 1)
cards.at(x + 1)->setName(QString());
cards.at(x + 1)->setCardRef({});
}
card->setVisible(false);
card->resetState();

View file

@ -34,7 +34,7 @@ void StackZone::addCardImpl(CardItem *card, int x, int /*y*/)
if (!cards.getContentsKnown()) {
card->setId(-1);
card->setName();
card->setCardRef({});
}
card->setParentItem(this);
card->resetState(true);

View file

@ -68,10 +68,11 @@ void ZoneViewZone::paint(QPainter *painter, const QStyleOptionGraphicsItem * /*o
void ZoneViewZone::initializeCards(const QList<const ServerInfo_Card *> &cardList)
{
if (!cardList.isEmpty()) {
for (int i = 0; i < cardList.size(); ++i)
addCard(new CardItem(player, this, QString::fromStdString(cardList[i]->name()),
QString::fromStdString(cardList[i]->provider_id()), cardList[i]->id()),
false, i);
for (int i = 0; i < cardList.size(); ++i) {
auto card = cardList[i];
CardRef cardRef = {QString::fromStdString(card->name()), QString::fromStdString(card->provider_id())};
addCard(new CardItem(player, this, cardRef, card->id()), false, i);
}
reorganizeCards();
} else if (!origZone->contentsKnown()) {
Command_DumpZone cmd;
@ -88,7 +89,7 @@ void ZoneViewZone::initializeCards(const QList<const ServerInfo_Card *> &cardLis
int number = numberCards == -1 ? c.size() : (numberCards < c.size() ? numberCards : c.size());
for (int i = 0; i < number; i++) {
CardItem *card = c.at(i);
addCard(new CardItem(player, this, card->getName(), card->getProviderId(), card->getId()), false, i);
addCard(new CardItem(player, this, card->getCardRef(), card->getId()), false, i);
}
reorganizeCards();
}
@ -102,7 +103,7 @@ void ZoneViewZone::zoneDumpReceived(const Response &r)
const ServerInfo_Card &cardInfo = resp.zone_info().card_list(i);
auto cardName = QString::fromStdString(cardInfo.name());
auto cardProviderId = QString::fromStdString(cardInfo.provider_id());
auto *card = new CardItem(player, this, cardName, cardProviderId, cardInfo.id(), this);
auto *card = new CardItem(player, this, {cardName, cardProviderId}, cardInfo.id(), this);
cards.insert(i, card);
}