From 8e4ddf366c8ca249d55c5a9ac3689af33ced4391 Mon Sep 17 00:00:00 2001 From: Tobyclark <65095945+Tobyclark@users.noreply.github.com> Date: Sat, 29 Oct 2022 06:46:29 -0700 Subject: [PATCH] Added hint when drawing 0 cards (#4697) * Logging a player drawing 0 cards will now result in the message "player had no cards left to draw." * Added hint when drawing when deck is empty * Added hint when drawing when deck is empty * Added hint when drawing when deck is empty * Update cockatrice/src/messagelogwidget.cpp update log message to present tense Co-authored-by: ebbit1q * added deckIsEmpty parameter to messagelogwidget::logDrawCards * run format Co-authored-by: ebbit1q --- cockatrice/src/messagelogwidget.cpp | 14 +++++++++----- cockatrice/src/messagelogwidget.h | 2 +- cockatrice/src/player.cpp | 2 +- cockatrice/src/player.h | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/cockatrice/src/messagelogwidget.cpp b/cockatrice/src/messagelogwidget.cpp index 1b9b610f..232a21db 100644 --- a/cockatrice/src/messagelogwidget.cpp +++ b/cockatrice/src/messagelogwidget.cpp @@ -362,15 +362,19 @@ void MessageLogWidget::logMoveCard(Player *player, } } -void MessageLogWidget::logDrawCards(Player *player, int number) +void MessageLogWidget::logDrawCards(Player *player, int number, bool deckIsEmpty) { soundEngine->playSound("draw_card"); if (currentContext == MessageContext_Mulligan) { logMulligan(player, number); } else { - appendHtmlServerMessage(tr("%1 draws %2 card(s).", "", number) - .arg(sanitizeHtml(player->getName())) - .arg("" + QString::number(number) + "")); + if (deckIsEmpty && number == 0) { + appendHtmlServerMessage(tr("%1 tries to draw from an empty library").arg(sanitizeHtml(player->getName()))); + } else { + appendHtmlServerMessage(tr("%1 draws %2 card(s).", "", number) + .arg(sanitizeHtml(player->getName())) + .arg("" + QString::number(number) + "")); + } } } @@ -817,7 +821,7 @@ void MessageLogWidget::connectToPlayer(Player *player) SLOT(logAttachCard(Player *, QString, Player *, QString))); connect(player, SIGNAL(logUnattachCard(Player *, QString)), this, SLOT(logUnattachCard(Player *, QString))); connect(player, SIGNAL(logDumpZone(Player *, CardZone *, int)), this, SLOT(logDumpZone(Player *, CardZone *, int))); - connect(player, SIGNAL(logDrawCards(Player *, int)), this, SLOT(logDrawCards(Player *, int))); + connect(player, SIGNAL(logDrawCards(Player *, int, bool)), this, SLOT(logDrawCards(Player *, int, bool))); connect(player, SIGNAL(logUndoDraw(Player *, QString)), this, SLOT(logUndoDraw(Player *, QString))); connect(player, SIGNAL(logRevealCards(Player *, CardZone *, int, QString, Player *, bool, int)), this, SLOT(logRevealCards(Player *, CardZone *, int, QString, Player *, bool, int))); diff --git a/cockatrice/src/messagelogwidget.h b/cockatrice/src/messagelogwidget.h index 7769e098..f74a071a 100644 --- a/cockatrice/src/messagelogwidget.h +++ b/cockatrice/src/messagelogwidget.h @@ -56,7 +56,7 @@ public slots: void logCreateToken(Player *player, QString cardName, QString pt); void logDeckSelect(Player *player, QString deckHash, int sideboardSize); void logDestroyCard(Player *player, QString cardName); - void logDrawCards(Player *player, int number); + void logDrawCards(Player *player, int number, bool deckIsEmpty); void logDumpZone(Player *player, CardZone *zone, int numberCards); void logFlipCard(Player *player, QString cardName, bool faceDown); void logGameClosed(); diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index 52326ea8..b44c0ea0 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -2216,7 +2216,7 @@ void Player::eventDrawCards(const Event_DrawCards &event) hand->reorganizeCards(); deck->reorganizeCards(); - emit logDrawCards(this, event.number()); + emit logDrawCards(this, event.number(), deck->getCards().size() == 0); } void Player::eventRevealCards(const Event_RevealCards &event) diff --git a/cockatrice/src/player.h b/cockatrice/src/player.h index a76e8621..d4e50401 100644 --- a/cockatrice/src/player.h +++ b/cockatrice/src/player.h @@ -120,7 +120,7 @@ signals: QString targetCard, bool _playerTarget); void logCreateToken(Player *player, QString cardName, QString pt); - void logDrawCards(Player *player, int number); + void logDrawCards(Player *player, int number, bool deckIsEmpty); void logUndoDraw(Player *player, QString cardName); void logMoveCard(Player *player, CardItem *card, CardZone *startZone, int oldX, CardZone *targetZone, int newX); void logFlipCard(Player *player, QString cardName, bool faceDown);