From 44f27529fc437130d9fa3af7d370489d7946e6e7 Mon Sep 17 00:00:00 2001
From: Frederik <frederik@prasch.de>
Date: Mon, 10 Feb 2025 01:13:16 +0100
Subject: [PATCH] Add display for players money

---
 src/game/level/Level.cpp   |  2 ++
 src/game/player/Player.cpp | 38 ++++++++++++++++++++++++++++++++++++++
 src/game/player/Player.hpp |  2 ++
 3 files changed, 42 insertions(+)

diff --git a/src/game/level/Level.cpp b/src/game/level/Level.cpp
index 8cc8fbf..ea6af4b 100644
--- a/src/game/level/Level.cpp
+++ b/src/game/level/Level.cpp
@@ -429,6 +429,8 @@ void Level::render(Engine& engine)
         m_recruitingMenu.render(engine);
     }
 
+    m_turnQ.front().renderMoney(engine, RENDERING_SCALE);
+
     if (m_showUnitInfoMenu)
     {
         m_unitInfoMenu.render(engine);
diff --git a/src/game/player/Player.cpp b/src/game/player/Player.cpp
index 32ff5e6..f7f1478 100644
--- a/src/game/player/Player.cpp
+++ b/src/game/player/Player.cpp
@@ -5,6 +5,7 @@
  */
 
 #include "Player.hpp"
+#include <SDL_ttf.h>
 #include <iostream>
 
 namespace advanced_wars
@@ -107,4 +108,41 @@ void Player::spendMoney(int toSpend)
 {
     m_money -= toSpend;
 }
+
+void Player::renderMoney(Engine& engine, int scale)
+{
+    if (TTF_Init() == -1)
+    {
+        return;
+    }
+
+    TTF_Font* font = TTF_OpenFont("res/ARCADECLASSIC.TTF", 16);
+
+    SDL_Rect backdrop = {0, 0, 75 * scale, 40 * scale};
+    SDL_Rect textRect = {4 * scale, 3 * scale, 70 * scale, 35 * scale};
+    SDL_Rect outline = {0, 0, 77 * scale, 42 * scale};
+
+    SDL_SetRenderDrawBlendMode(engine.renderer(), SDL_BlendMode::SDL_BLENDMODE_BLEND);
+
+    SDL_SetRenderDrawColor(engine.renderer(), 255, 255, 255, 200);
+
+    SDL_RenderFillRect(engine.renderer(), &outline);
+
+    SDL_SetRenderDrawColor(engine.renderer(), 75, 87, 219, 200);
+
+    SDL_RenderFillRect(engine.renderer(), &backdrop);
+
+    std::string money = std::to_string(m_money);
+
+    SDL_Surface* textSurface = TTF_RenderUTF8_Solid(font, money.c_str(), {200, 200, 0, 200});
+
+    SDL_Texture* textTexture = SDL_CreateTextureFromSurface(engine.renderer(), textSurface);
+
+    SDL_RenderCopy(engine.renderer(), textTexture, NULL, &textRect);
+
+    SDL_FreeSurface(textSurface);
+    SDL_DestroyTexture(textTexture);
+    TTF_CloseFont(font);
+    TTF_Quit();
+}
 } // namespace advanced_wars
diff --git a/src/game/player/Player.hpp b/src/game/player/Player.hpp
index 9f33084..776b0bc 100644
--- a/src/game/player/Player.hpp
+++ b/src/game/player/Player.hpp
@@ -62,6 +62,8 @@ class Player
          */
         void spendMoney(int toSpend);
 
+        void renderMoney(Engine& engine, int scale);
+
     private:
         int     m_money;      // The players current amound of money
         bool    m_alive;      // Signals if the player is alive or not
-- 
GitLab