From 495e232c227c90e8644b10a2612e25a141d50f23 Mon Sep 17 00:00:00 2001 From: ebbit1q Date: Thu, 24 Jan 2019 08:53:05 +0100 Subject: [PATCH] add the amount of cards logged to the reveal cards event (#3516) * add the amount of cards logged to the reveal cards event sets cardname to the amount for the call if not 1 for the fromstr only add braces for single line statements * zach cleanup --- cockatrice/src/messagelogwidget.cpp | 41 +++++++++++++++++------------ cockatrice/src/messagelogwidget.h | 13 ++++++--- cockatrice/src/player.cpp | 14 +++++----- cockatrice/src/player.h | 9 +++++-- 4 files changed, 47 insertions(+), 30 deletions(-) diff --git a/cockatrice/src/messagelogwidget.cpp b/cockatrice/src/messagelogwidget.cpp index 2305970a..dc0ac655 100644 --- a/cockatrice/src/messagelogwidget.cpp +++ b/cockatrice/src/messagelogwidget.cpp @@ -457,9 +457,11 @@ void MessageLogWidget::logRevealCards(Player *player, int cardId, QString cardName, Player *otherPlayer, - bool faceDown) + bool faceDown, + int amount) { - QPair temp = getFromStr(zone, cardName, cardId, false); + // getFromStr uses cardname.empty() to check if it should contain the start zone, it's not actually used + QPair temp = getFromStr(zone, amount == 1 ? cardName : QString::number(amount), cardId, false); bool cardNameContainsStartZone = false; if (!temp.first.isEmpty()) { cardNameContainsStartZone = true; @@ -468,52 +470,57 @@ void MessageLogWidget::logRevealCards(Player *player, QString fromStr = temp.second; QString cardStr; - if (cardNameContainsStartZone) + if (cardNameContainsStartZone) { cardStr = cardName; - else if (cardName.isEmpty()) - cardStr = tr("a card"); - else + } else if (cardName.isEmpty()) { + cardStr = tr("%1 card(s)", "a card for singular, %1 cards for plural", amount) + .arg("" + QString::number(amount) + ""); + } else { cardStr = cardLink(cardName); - + } if (cardId == -1) { - if (otherPlayer) + if (otherPlayer) { appendHtmlServerMessage(tr("%1 reveals %2 to %3.") .arg(sanitizeHtml(player->getName())) .arg(zone->getTranslatedName(true, CaseRevealZone)) .arg(sanitizeHtml(otherPlayer->getName()))); - else + } else { appendHtmlServerMessage(tr("%1 reveals %2.") .arg(sanitizeHtml(player->getName())) .arg(zone->getTranslatedName(true, CaseRevealZone))); + } } else if (cardId == -2) { - if (otherPlayer) + if (otherPlayer) { appendHtmlServerMessage(tr("%1 randomly reveals %2%3 to %4.") .arg(sanitizeHtml(player->getName())) .arg(cardStr) .arg(fromStr) .arg(sanitizeHtml(otherPlayer->getName()))); - else + } else { appendHtmlServerMessage( tr("%1 randomly reveals %2%3.").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr)); + } } else { if (faceDown && player == otherPlayer) { - if (cardName.isEmpty()) + if (cardName.isEmpty()) { appendHtmlServerMessage( tr("%1 peeks at face down card #%2.").arg(sanitizeHtml(player->getName())).arg(cardId)); - else + } else { appendHtmlServerMessage(tr("%1 peeks at face down card #%2: %3.") .arg(sanitizeHtml(player->getName())) .arg(cardId) .arg(cardStr)); - } else if (otherPlayer) + } + } else if (otherPlayer) { appendHtmlServerMessage(tr("%1 reveals %2%3 to %4.") .arg(sanitizeHtml(player->getName())) .arg(cardStr) .arg(fromStr) .arg(sanitizeHtml(otherPlayer->getName()))); - else + } else { appendHtmlServerMessage( tr("%1 reveals %2%3.").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr)); + } } } @@ -787,8 +794,8 @@ void MessageLogWidget::connectToPlayer(Player *player) connect(player, SIGNAL(logStopDumpZone(Player *, CardZone *)), this, SLOT(logStopDumpZone(Player *, CardZone *))); connect(player, SIGNAL(logDrawCards(Player *, int)), this, SLOT(logDrawCards(Player *, int))); connect(player, SIGNAL(logUndoDraw(Player *, QString)), this, SLOT(logUndoDraw(Player *, QString))); - connect(player, SIGNAL(logRevealCards(Player *, CardZone *, int, QString, Player *, bool)), this, - SLOT(logRevealCards(Player *, CardZone *, int, QString, Player *, bool))); + connect(player, SIGNAL(logRevealCards(Player *, CardZone *, int, QString, Player *, bool, int)), this, + SLOT(logRevealCards(Player *, CardZone *, int, QString, Player *, bool, int))); connect(player, SIGNAL(logAlwaysRevealTopCard(Player *, CardZone *, bool)), this, SLOT(logAlwaysRevealTopCard(Player *, CardZone *, bool))); } diff --git a/cockatrice/src/messagelogwidget.h b/cockatrice/src/messagelogwidget.h index 2f6e5a02..cf1c4205 100644 --- a/cockatrice/src/messagelogwidget.h +++ b/cockatrice/src/messagelogwidget.h @@ -48,7 +48,7 @@ private: const QString stackConstant() const; QString sanitizeHtml(QString dirty) const; - QString cardLink(const QString cardName) const; + QString cardLink(QString cardName) const; QPair getFromStr(CardZone *zone, QString cardName, int position, bool ownerChange) const; public slots: @@ -83,8 +83,13 @@ public slots: void logMulligan(Player *player, int number); void logReplayStarted(int gameId); void logReadyStart(Player *player); - void - logRevealCards(Player *player, CardZone *zone, int cardId, QString cardName, Player *otherPlayer, bool faceDown); + void logRevealCards(Player *player, + CardZone *zone, + int cardId, + QString cardName, + Player *otherPlayer, + bool faceDown, + int amount); void logRollDie(Player *player, int sides, int roll); void logSay(Player *player, QString message); void logSetActivePhase(int phase); @@ -108,7 +113,7 @@ public: MessageLogWidget(const TabSupervisor *_tabSupervisor, const UserlistProxy *_userlistProxy, TabGame *_game, - QWidget *parent = 0); + QWidget *parent = nullptr); }; #endif diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index 65cdda5f..0f815c37 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -1830,14 +1830,14 @@ void Player::eventRevealCards(const Event_RevealCards &event) } if (peeking) { - for (auto i : cardList) { - QString cardName = QString::fromStdString(i->name()); - CardItem *card = zone->getCard(i->id(), QString()); - if (!card) { + for (auto &card : cardList) { + QString cardName = QString::fromStdString(card->name()); + CardItem *cardItem = zone->getCard(card->id(), QString()); + if (!cardItem) { continue; } - card->setName(cardName); - emit logRevealCards(this, zone, i->id(), cardName, this, true); + cardItem->setName(cardName); + emit logRevealCards(this, zone, card->id(), cardName, this, true, 1); } } else { bool showZoneView = true; @@ -1854,7 +1854,7 @@ void Player::eventRevealCards(const Event_RevealCards &event) static_cast(scene())->addRevealedZoneView(this, zone, cardList, event.grant_write_access()); } - emit logRevealCards(this, zone, event.card_id(), cardName, otherPlayer, false); + emit logRevealCards(this, zone, event.card_id(), cardName, otherPlayer, false, cardList.size()); } } diff --git a/cockatrice/src/player.h b/cockatrice/src/player.h index 4f1dc96d..229c96c3 100644 --- a/cockatrice/src/player.h +++ b/cockatrice/src/player.h @@ -127,8 +127,13 @@ signals: void logSetAnnotation(Player *player, CardItem *card, QString newAnnotation); void logDumpZone(Player *player, CardZone *zone, int numberCards); void logStopDumpZone(Player *player, CardZone *zone); - void - logRevealCards(Player *player, CardZone *zone, int cardId, QString cardName, Player *otherPlayer, bool faceDown); + void logRevealCards(Player *player, + CardZone *zone, + int cardId, + QString cardName, + Player *otherPlayer, + bool faceDown, + int amount); void logAlwaysRevealTopCard(Player *player, CardZone *zone, bool reveal); void sizeChanged();