añadido recalculateAnchors a la clase scoreboard

This commit is contained in:
2024-07-08 12:28:20 +02:00
parent e85d3c2494
commit 7f8aba12fc
2 changed files with 52 additions and 57 deletions

View File

@@ -20,32 +20,10 @@ Scoreboard::Scoreboard(SDL_Renderer *renderer, Screen *screen, Asset *asset, Lan
power = 0;
hiScoreName = "";
color = {0, 0, 0};
rect = {0, 0, 256, 32};
rect = {0, 0, 320, 40};
const int left = 45;
const int right = rect.w - left;
const int center = rect.w / 2;
const int desp = 7;
const int line1 = 2;
const int line2 = line1 + desp;
const int line3 = line2 + desp;
const int line4 = line3 + desp;
offsetScoreP1Label = {left, line1};
offsetScoreP1 = {left, line2};
offsetScoreP2Label = {right, line1};
offsetScoreP2 = {right, line2};
offsetHiScoreLabel = {center, line3};
offsetHiScore = {center, line4};
offsetMultP1Label = {left, line3};
offsetMultP1 = {left, line4};
offsetMultP2Label = {right, line3};
offsetMultP2 = {right, line4};
offsetStage = {center, line1};
offsetPowerMeter = {center, line2};
// Recalcula las anclas de los elementos
recalculateAnchors();
// Crea objetos
gamePowerMeterTexture = new Texture(renderer, asset->get("game_power_meter.png"));
@@ -167,30 +145,8 @@ void Scoreboard::setPos(SDL_Rect rect)
{
this->rect = rect;
const int left = rect.w / 6;
const int right = rect.w - left;
const int center = rect.w / 2;
const int desp = 7;
const int line1 = 2;
const int line2 = line1 + desp;
const int line3 = line2 + desp;
const int line4 = line3 + desp;
offsetScoreP1Label = {left, line1};
offsetScoreP1 = {left, line2};
offsetScoreP2Label = {right, line1};
offsetScoreP2 = {right, line2};
offsetHiScoreLabel = {center, line3};
offsetHiScore = {center, line4};
offsetMultP1Label = {left, line3};
offsetMultP1 = {left, line4};
offsetMultP2Label = {right, line3};
offsetMultP2 = {right, line4};
offsetStage = {center, line1};
offsetPowerMeter = {center, line2};
// Recalcula las anclas de los elementos
recalculateAnchors();
powerMeterSprite->setPosX(offsetPowerMeter.x - 20);
powerMeterSprite->setPosY(offsetPowerMeter.y);
@@ -247,4 +203,41 @@ void Scoreboard::fillBackgroundTexture()
// Deja el renderizador apuntando donde estaba
SDL_SetRenderTarget(renderer, temp);
}
// Recalcula las anclas de los elementos
void Scoreboard::recalculateAnchors()
{
// Constantes para definir las zonas del marcador: 4 filas y 3 columnas
const int rowSize = rect.h / 4;
const int textHeight = 7;
const int row1 = (rowSize * 0) + (textHeight / 2);
const int row2 = (rowSize * 1) + (textHeight / 2) - 1;
const int row3 = (rowSize * 2) + (textHeight / 2) - 2;
const int row4 = (rowSize * 3) + (textHeight / 2) - 3;
const int halfColSize = rect.w / 6;
const int col1 = halfColSize;
const int col2 = halfColSize * 3;
const int col3 = halfColSize * 5;
// Primera fila
offsetScoreP1Label = {col1, row1};
offsetStage = {col2, row1};
offsetScoreP2Label = {col3, row1};
// Segunda fila
offsetScoreP1 = {col1, row2};
offsetPowerMeter = {col2, row2};
offsetScoreP2 = {col3, row2};
// Tercera fila
offsetMultP1Label = {col1, row3};
offsetHiScoreLabel = {col2, row3};
offsetMultP2Label = {col3, row3};
// Cuarta fila
offsetMultP1 = {col1, row4};
offsetHiScore = {col2, row4};
offsetMultP2 = {col3, row4};
}

View File

@@ -43,7 +43,7 @@ private:
SDL_Point offsetScoreP1;
SDL_Point offsetScoreP2Label;
SDL_Point offsetScoreP2;
SDL_Point offsetMultP1Label;
SDL_Point offsetMultP1;
SDL_Point offsetMultP2Label;
@@ -55,6 +55,15 @@ private:
SDL_Point offsetStage;
SDL_Point offsetPowerMeter;
// Recalcula las anclas de los elementos
void recalculateAnchors();
// Transforma un valor numérico en una cadena de 6 cifras
std::string updateScoreText(Uint32 num);
// Rellena la textura de fondo
void fillBackgroundTexture();
public:
// Constructor
Scoreboard(SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang, options_t *options);
@@ -75,13 +84,6 @@ public:
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
std::string updateScoreText(Uint32 num);
// Rellena la textura de fondo
void fillBackgroundTexture();
};
#endif