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