From ecafaec7e13da679398cb9e6570234b501277f24 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Thu, 30 May 2024 11:08:51 +0200 Subject: [PATCH] =?UTF-8?q?Se=20puede=20definir=20la=20posici=C3=B3n=20y?= =?UTF-8?q?=20tama=C3=B1o=20del=20marcador?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/game.cpp | 2 ++ source/scoreboard.cpp | 39 ++++++++++++++++++++++++++------------- source/scoreboard.h | 9 +++++++++ 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/source/game.cpp b/source/game.cpp index f94dc83..c545009 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -246,6 +246,8 @@ void Game::init() break; } + // Marcador + scoreboard->setPos({0, 20, 256, 32}); if (difficulty == DIFFICULTY_NORMAL) { scoreboard->setColor({46, 63, 71}); diff --git a/source/scoreboard.cpp b/source/scoreboard.cpp index e829ab1..bb554b5 100644 --- a/source/scoreboard.cpp +++ b/source/scoreboard.cpp @@ -25,6 +25,14 @@ Scoreboard::Scoreboard(SDL_Renderer *renderer, Screen *screen, Asset *asset, Lan power = 0; hiScoreName = ""; color = {0, 0, 0}; + rect = {0, 0, 0, 0}; + offset1 = 0; + offset2 = 0; + offset3 = 0; + offset4 = 0; + offsetLeft = 0; + offsetRight = 0; + offsetCenterX = 0; } Scoreboard::~Scoreboard() @@ -81,22 +89,12 @@ void Scoreboard::render() { // Dibuja el fondo del marcador SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, 255); - SDL_Rect rect = {0, 160, 256, 32}; SDL_RenderFillRect(renderer, &rect); // Dibuja la linea que separa el marcador de la zona de juego SDL_SetRenderDrawColor(renderer, 13, 26, 43, 255); SDL_RenderDrawLine(renderer, 0, 160, 255, 160); - // Anclas para los elementos - const int offset1 = 162; - const int offset2 = offset1 + 7; - const int offset3 = offset2 + 7; - const int offset4 = offset3 + 7; - - const int offsetLeft = PLAY_AREA_LEFT + 45; - const int offsetRight = PLAY_AREA_RIGHT - 45; - // PLAYER1 - SCORE textScoreBoard->writeCentered(offsetLeft, offset1, lang->getText(53)); textScoreBoard->writeCentered(offsetLeft, offset2, updateScoreText(score1)); @@ -114,7 +112,7 @@ void Scoreboard::render() textScoreBoard->writeCentered(offsetRight, offset4, std::to_string(mult2).substr(0, 3)); // STAGE - textScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset1, lang->getText(57) + std::to_string(stage)); + textScoreBoard->writeCentered(offsetCenterX, offset1, lang->getText(57) + std::to_string(stage)); // POWERMETER powerMeterSprite->setPosY(offset2); @@ -124,8 +122,8 @@ void Scoreboard::render() powerMeterSprite->render(); // HI-SCORE - textScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset3, lang->getText(56)); - textScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset4, hiScoreName + updateScoreText(hiScore)); + textScoreBoard->writeCentered(offsetCenterX, offset3, lang->getText(56)); + textScoreBoard->writeCentered(offsetCenterX, offset4, hiScoreName + updateScoreText(hiScore)); } void Scoreboard::setScore1(int score) @@ -172,3 +170,18 @@ void Scoreboard::setColor(color_t color) { this->color = color; } + +void Scoreboard::setPos(SDL_Rect rect) +{ + this->rect = rect; + + // Anclas para los elementos + offset1 = rect.y + 2; + offset2 = offset1 + 7; + offset3 = offset2 + 7; + offset4 = offset3 + 7; + + offsetLeft = rect.x + 45; + offsetRight = rect.x + rect.w - 45; + offsetCenterX = rect.x + (rect.w / 2); +} \ No newline at end of file diff --git a/source/scoreboard.h b/source/scoreboard.h index c8c485a..dd69e88 100644 --- a/source/scoreboard.h +++ b/source/scoreboard.h @@ -42,6 +42,14 @@ private: float power; // Poder actual de la fase std::string hiScoreName; // Nombre del jugador con la máxima puntuación color_t color; // Color del marcador + SDL_Rect rect; // Posición y dimensiones del marcador + int offset1; // Anclas para los elementos del marcador + int offset2; // Anclas para los elementos del marcador + int offset3; // Anclas para los elementos del marcador + int offset4; // Anclas para los elementos del marcador + int offsetLeft; // Anclas para los elementos del marcador + int offsetRight; // Anclas para los elementos del marcador + int offsetCenterX; // Anclas para los elementos del marcador public: // Constructor @@ -62,6 +70,7 @@ public: void setPower(float power); void setHiScoreName(std::string name); void setColor(color_t color); + void setPos(SDL_Rect rect); private: // Transforma un valor numérico en una cadena de 6 cifras