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
This commit is contained in:
ebbit1q 2019-01-24 08:53:05 +01:00 committed by ctrlaltca
parent ed70099e36
commit 495e232c22
4 changed files with 47 additions and 30 deletions

View file

@ -457,9 +457,11 @@ void MessageLogWidget::logRevealCards(Player *player,
int cardId, int cardId,
QString cardName, QString cardName,
Player *otherPlayer, Player *otherPlayer,
bool faceDown) bool faceDown,
int amount)
{ {
QPair<QString, QString> 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<QString, QString> temp = getFromStr(zone, amount == 1 ? cardName : QString::number(amount), cardId, false);
bool cardNameContainsStartZone = false; bool cardNameContainsStartZone = false;
if (!temp.first.isEmpty()) { if (!temp.first.isEmpty()) {
cardNameContainsStartZone = true; cardNameContainsStartZone = true;
@ -468,53 +470,58 @@ void MessageLogWidget::logRevealCards(Player *player,
QString fromStr = temp.second; QString fromStr = temp.second;
QString cardStr; QString cardStr;
if (cardNameContainsStartZone) if (cardNameContainsStartZone) {
cardStr = cardName; cardStr = cardName;
else if (cardName.isEmpty()) } else if (cardName.isEmpty()) {
cardStr = tr("a card"); cardStr = tr("%1 card(s)", "a card for singular, %1 cards for plural", amount)
else .arg("<font color=\"blue\">" + QString::number(amount) + "</font>");
} else {
cardStr = cardLink(cardName); cardStr = cardLink(cardName);
}
if (cardId == -1) { if (cardId == -1) {
if (otherPlayer) if (otherPlayer) {
appendHtmlServerMessage(tr("%1 reveals %2 to %3.") appendHtmlServerMessage(tr("%1 reveals %2 to %3.")
.arg(sanitizeHtml(player->getName())) .arg(sanitizeHtml(player->getName()))
.arg(zone->getTranslatedName(true, CaseRevealZone)) .arg(zone->getTranslatedName(true, CaseRevealZone))
.arg(sanitizeHtml(otherPlayer->getName()))); .arg(sanitizeHtml(otherPlayer->getName())));
else } else {
appendHtmlServerMessage(tr("%1 reveals %2.") appendHtmlServerMessage(tr("%1 reveals %2.")
.arg(sanitizeHtml(player->getName())) .arg(sanitizeHtml(player->getName()))
.arg(zone->getTranslatedName(true, CaseRevealZone))); .arg(zone->getTranslatedName(true, CaseRevealZone)));
}
} else if (cardId == -2) { } else if (cardId == -2) {
if (otherPlayer) if (otherPlayer) {
appendHtmlServerMessage(tr("%1 randomly reveals %2%3 to %4.") appendHtmlServerMessage(tr("%1 randomly reveals %2%3 to %4.")
.arg(sanitizeHtml(player->getName())) .arg(sanitizeHtml(player->getName()))
.arg(cardStr) .arg(cardStr)
.arg(fromStr) .arg(fromStr)
.arg(sanitizeHtml(otherPlayer->getName()))); .arg(sanitizeHtml(otherPlayer->getName())));
else } else {
appendHtmlServerMessage( appendHtmlServerMessage(
tr("%1 randomly reveals %2%3.").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr)); tr("%1 randomly reveals %2%3.").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr));
}
} else { } else {
if (faceDown && player == otherPlayer) { if (faceDown && player == otherPlayer) {
if (cardName.isEmpty()) if (cardName.isEmpty()) {
appendHtmlServerMessage( appendHtmlServerMessage(
tr("%1 peeks at face down card #%2.").arg(sanitizeHtml(player->getName())).arg(cardId)); 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.") appendHtmlServerMessage(tr("%1 peeks at face down card #%2: %3.")
.arg(sanitizeHtml(player->getName())) .arg(sanitizeHtml(player->getName()))
.arg(cardId) .arg(cardId)
.arg(cardStr)); .arg(cardStr));
} else if (otherPlayer) }
} else if (otherPlayer) {
appendHtmlServerMessage(tr("%1 reveals %2%3 to %4.") appendHtmlServerMessage(tr("%1 reveals %2%3 to %4.")
.arg(sanitizeHtml(player->getName())) .arg(sanitizeHtml(player->getName()))
.arg(cardStr) .arg(cardStr)
.arg(fromStr) .arg(fromStr)
.arg(sanitizeHtml(otherPlayer->getName()))); .arg(sanitizeHtml(otherPlayer->getName())));
else } else {
appendHtmlServerMessage( appendHtmlServerMessage(
tr("%1 reveals %2%3.").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr)); tr("%1 reveals %2%3.").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr));
} }
}
} }
void MessageLogWidget::logRollDie(Player *player, int sides, int roll) void MessageLogWidget::logRollDie(Player *player, int sides, int roll)
@ -787,8 +794,8 @@ void MessageLogWidget::connectToPlayer(Player *player)
connect(player, SIGNAL(logStopDumpZone(Player *, CardZone *)), this, SLOT(logStopDumpZone(Player *, CardZone *))); 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(logDrawCards(Player *, int)), this, SLOT(logDrawCards(Player *, int)));
connect(player, SIGNAL(logUndoDraw(Player *, QString)), this, SLOT(logUndoDraw(Player *, QString))); connect(player, SIGNAL(logUndoDraw(Player *, QString)), this, SLOT(logUndoDraw(Player *, QString)));
connect(player, SIGNAL(logRevealCards(Player *, CardZone *, int, QString, Player *, bool)), this, connect(player, SIGNAL(logRevealCards(Player *, CardZone *, int, QString, Player *, bool, int)), this,
SLOT(logRevealCards(Player *, CardZone *, int, QString, Player *, bool))); SLOT(logRevealCards(Player *, CardZone *, int, QString, Player *, bool, int)));
connect(player, SIGNAL(logAlwaysRevealTopCard(Player *, CardZone *, bool)), this, connect(player, SIGNAL(logAlwaysRevealTopCard(Player *, CardZone *, bool)), this,
SLOT(logAlwaysRevealTopCard(Player *, CardZone *, bool))); SLOT(logAlwaysRevealTopCard(Player *, CardZone *, bool)));
} }

View file

@ -48,7 +48,7 @@ private:
const QString stackConstant() const; const QString stackConstant() const;
QString sanitizeHtml(QString dirty) const; QString sanitizeHtml(QString dirty) const;
QString cardLink(const QString cardName) const; QString cardLink(QString cardName) const;
QPair<QString, QString> getFromStr(CardZone *zone, QString cardName, int position, bool ownerChange) const; QPair<QString, QString> getFromStr(CardZone *zone, QString cardName, int position, bool ownerChange) const;
public slots: public slots:
@ -83,8 +83,13 @@ public slots:
void logMulligan(Player *player, int number); void logMulligan(Player *player, int number);
void logReplayStarted(int gameId); void logReplayStarted(int gameId);
void logReadyStart(Player *player); void logReadyStart(Player *player);
void void logRevealCards(Player *player,
logRevealCards(Player *player, CardZone *zone, int cardId, QString cardName, Player *otherPlayer, bool faceDown); CardZone *zone,
int cardId,
QString cardName,
Player *otherPlayer,
bool faceDown,
int amount);
void logRollDie(Player *player, int sides, int roll); void logRollDie(Player *player, int sides, int roll);
void logSay(Player *player, QString message); void logSay(Player *player, QString message);
void logSetActivePhase(int phase); void logSetActivePhase(int phase);
@ -108,7 +113,7 @@ public:
MessageLogWidget(const TabSupervisor *_tabSupervisor, MessageLogWidget(const TabSupervisor *_tabSupervisor,
const UserlistProxy *_userlistProxy, const UserlistProxy *_userlistProxy,
TabGame *_game, TabGame *_game,
QWidget *parent = 0); QWidget *parent = nullptr);
}; };
#endif #endif

View file

@ -1830,14 +1830,14 @@ void Player::eventRevealCards(const Event_RevealCards &event)
} }
if (peeking) { if (peeking) {
for (auto i : cardList) { for (auto &card : cardList) {
QString cardName = QString::fromStdString(i->name()); QString cardName = QString::fromStdString(card->name());
CardItem *card = zone->getCard(i->id(), QString()); CardItem *cardItem = zone->getCard(card->id(), QString());
if (!card) { if (!cardItem) {
continue; continue;
} }
card->setName(cardName); cardItem->setName(cardName);
emit logRevealCards(this, zone, i->id(), cardName, this, true); emit logRevealCards(this, zone, card->id(), cardName, this, true, 1);
} }
} else { } else {
bool showZoneView = true; bool showZoneView = true;
@ -1854,7 +1854,7 @@ void Player::eventRevealCards(const Event_RevealCards &event)
static_cast<GameScene *>(scene())->addRevealedZoneView(this, zone, cardList, event.grant_write_access()); static_cast<GameScene *>(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());
} }
} }

View file

@ -127,8 +127,13 @@ signals:
void logSetAnnotation(Player *player, CardItem *card, QString newAnnotation); void logSetAnnotation(Player *player, CardItem *card, QString newAnnotation);
void logDumpZone(Player *player, CardZone *zone, int numberCards); void logDumpZone(Player *player, CardZone *zone, int numberCards);
void logStopDumpZone(Player *player, CardZone *zone); void logStopDumpZone(Player *player, CardZone *zone);
void void logRevealCards(Player *player,
logRevealCards(Player *player, CardZone *zone, int cardId, QString cardName, Player *otherPlayer, bool faceDown); CardZone *zone,
int cardId,
QString cardName,
Player *otherPlayer,
bool faceDown,
int amount);
void logAlwaysRevealTopCard(Player *player, CardZone *zone, bool reveal); void logAlwaysRevealTopCard(Player *player, CardZone *zone, bool reveal);
void sizeChanged(); void sizeChanged();