From 34e001eb18ab7550fb7faa112ded8562b9710ec5 Mon Sep 17 00:00:00 2001
From: Annika Lauber <annika.lauber@c2sm.ethz.ch>
Date: Fri, 13 Dec 2024 14:58:48 +0100
Subject: [PATCH] Add won tricks to labels displayed

---
 src/client/gui/gamewidget.cpp | 30 +++++++++++++++++++++++-------
 src/client/gui/gamewidget.h   |  4 +++-
 2 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/src/client/gui/gamewidget.cpp b/src/client/gui/gamewidget.cpp
index 48350dc..8f2ab9c 100644
--- a/src/client/gui/gamewidget.cpp
+++ b/src/client/gui/gamewidget.cpp
@@ -49,7 +49,7 @@ void GameWidget::setupUI()
     QVBoxLayout *leftOpponentLayout = new QVBoxLayout();
     leftOpponentLayout->setAlignment(Qt::AlignCenter);
     // Add opponent's player info
-    leftOpponentInfo = new QLabel("Opponent 1\nScore: 0\nBet: 0");
+    leftOpponentInfo = new QLabel("Opponent 1\nScore: 0\nBet: 0\nWon Tricks: 0");
     leftOpponentLayout->addWidget(leftOpponentInfo);
     // Placeholder for opponent's cards
     leftOpponentCardsLayout = new QVBoxLayout();
@@ -71,7 +71,7 @@ void GameWidget::setupUI()
     QVBoxLayout *rightOpponentLayout = new QVBoxLayout();
     rightOpponentLayout->setAlignment(Qt::AlignCenter);
     // Add opponent's player info
-    rightOpponentInfo = new QLabel("Opponent 2\nScore: 0\nBet: 0");
+    rightOpponentInfo = new QLabel("Opponent 1\nScore: 0\nBet: 0\nWon Tricks: 0");
     rightOpponentLayout->addWidget(rightOpponentInfo);
     // Placeholder for opponent's cards
     rightOpponentCardsLayout = new QVBoxLayout();
@@ -93,9 +93,12 @@ void GameWidget::setupUI()
     playerInfoLayout->setAlignment(Qt::AlignCenter);
     playerBetLabel = new QLabel("Bet: 0");
     playerScoreLabel = new QLabel("Score: 0");
+    playerTrickLabel = new QLabel("Won tricks: 0");
     playerInfoLayout->addWidget(playerBetLabel);
     playerInfoLayout->addSpacing(20); // Add some space between labels
     playerInfoLayout->addWidget(playerScoreLabel);
+    playerInfoLayout->addSpacing(20); // Add some space between labels
+    playerInfoLayout->addWidget(playerTrickLabel);
     playerLayout->addLayout(playerInfoLayout);
 
     mainLayout->addLayout(playerLayout);
@@ -113,9 +116,10 @@ void GameWidget::setupUI()
 
     setLayout(mainLayout);
 
-    // Initialize bet and score labels
+    // Initialize bet, score and trick labels
     playerBetLabel->setText("Bet: 0");
     playerScoreLabel->setText("Score: 0");
+    playerTrickLabel->setText("Won tricks: 0");
 }
 
 void GameWidget::createPlayerHand()
@@ -295,7 +299,7 @@ void GameWidget::updatePlayerHand()
     createPlayerHand();
 }
 
-void GameWidget::updateBetsAndScores()
+void GameWidget::updateBetsScoresWonTricks()
 {
     // Update bets and scores for all players
     const auto &players = GameController::instance()->getGameState()->get_players();
@@ -304,12 +308,14 @@ void GameWidget::updateBetsAndScores()
         int playerId = player->get_playerID();
         int bet = player->get_bet();
         int score = player->get_points();
+        int trick = player->get_won_tricks();
 
-        // Update UI elements for bets and scores
+        // Update UI elements for bets, scores and won tricks
         if (playerId >= 0 && playerId < playerBetLabels.size())
         {
             QLabel *betLabel = playerBetLabels[playerId];
             QLabel *scoreLabel = playerScoreLabels[playerId];
+            QLabel *trickLabel = playerTrickLabels[playerId];
 
             if (betLabel)
             {
@@ -320,6 +326,11 @@ void GameWidget::updateBetsAndScores()
             {
                 scoreLabel->setText(QString("Score: %1").arg(score));
             }
+
+            if (trickLabel)
+            {
+                trickLabel->setText(QString("Won tricks: %1").arg(trick));
+            }
         }
     }
 }
@@ -419,10 +430,11 @@ void GameWidget::updatePlayerInfo()
     int index = 0;
     for (const auto &player : players)
     {
-        QString info = QString("%1\nScore: %2\nBet: %3")
+        QString info = QString("%1\nScore: %2\nBet: %3\nWon tricks: %4")
                            .arg(QString::fromStdString(player->get_username()))
                            .arg(player->get_points())
-                           .arg(player->get_bet());
+                           .arg(player->get_bet())
+                           .arg(player->get_won_tricks());
 
         if (player.get() == GameController::instance()->getLocalPlayer())
         {
@@ -435,6 +447,10 @@ void GameWidget::updatePlayerInfo()
             {
                 playerScoreLabel->setText(QString("Score: %1").arg(player->get_points()));
             }
+            if (playerTrickLabel)
+            {
+                playerTrickLabel->setText(QString("Won tricks: %1").arg(player->get_won_tricks()));
+            }
         }
         else
         {
diff --git a/src/client/gui/gamewidget.h b/src/client/gui/gamewidget.h
index 878da98..f94871c 100644
--- a/src/client/gui/gamewidget.h
+++ b/src/client/gui/gamewidget.h
@@ -34,7 +34,7 @@ private:
     void updatePlayerHand();
     void updateOtherPlayersHands();
     void updateCenterPile();
-    void updateBetsAndScores();
+    void updateBetsScoresWonTricks();
     void clearPlayerHandWidgets();
     void clearOtherPlayersHandWidgets();
     void createPlayerHand();
@@ -77,6 +77,7 @@ private:
     QLabel *turnIndicatorLabel;
     QLabel *playerBetLabel;
     QLabel *playerScoreLabel;
+    QLabel *playerTrickLabel;
     QLabel *roundIndicatorLabel;
     QHBoxLayout *playerHandLayout;
     std::vector<std::unique_ptr<CardWidget>> playerHandWidgets;
@@ -85,6 +86,7 @@ private:
     std::vector<std::unique_ptr<CardWidget>> rightOpponentHandWidgets;
     std::vector<QLabel *> playerBetLabels;
     std::vector<QLabel *> playerScoreLabels;
+    std::vector<QLabel *> playerTrickLabels;
 };
 
 #endif // GAMEWIDGET_H
\ No newline at end of file
-- 
GitLab