Añadida la clase scoreboard
This commit is contained in:
124
source/game.cpp
124
source/game.cpp
@@ -27,6 +27,7 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr
|
||||
// Crea los objetos
|
||||
fade = new Fade(renderer);
|
||||
eventHandler = new SDL_Event();
|
||||
scoreboard = new Scoreboard(renderer, screen, asset, lang, options);
|
||||
|
||||
// Carga los recursos
|
||||
loadMedia();
|
||||
@@ -147,6 +148,8 @@ Game::~Game()
|
||||
}
|
||||
balloonTextures.clear();
|
||||
|
||||
delete scoreboard;
|
||||
|
||||
delete text;
|
||||
delete textBig;
|
||||
delete textScoreBoard;
|
||||
@@ -401,7 +404,6 @@ void Game::loadMedia()
|
||||
gameBuildingsTexture = new Texture(renderer, asset->get("game_buildings.png"));
|
||||
gameCloudsTexture = new Texture(renderer, asset->get("game_clouds.png"));
|
||||
gameGrassTexture = new Texture(renderer, asset->get("game_grass.png"));
|
||||
gamePowerMeterTexture = new Texture(renderer, asset->get("game_power_meter.png"));
|
||||
gameSkyColorsTexture = new Texture(renderer, asset->get("game_sky_colors.png"));
|
||||
gameTextTexture = new Texture(renderer, asset->get("game_text.png"));
|
||||
gameOverTexture = new Texture(renderer, asset->get("menu_game_over.png"));
|
||||
@@ -1599,120 +1601,6 @@ void Game::updateHiScore()
|
||||
}
|
||||
}
|
||||
|
||||
// Transforma un valor numérico en una cadena de 6 cifras
|
||||
std::string Game::updateScoreText(Uint32 num)
|
||||
{
|
||||
if ((num >= 0) && (num <= 9))
|
||||
{
|
||||
return ("000000" + std::to_string(num));
|
||||
}
|
||||
|
||||
if ((num >= 10) && (num <= 99))
|
||||
{
|
||||
return ("00000" + std::to_string(num));
|
||||
}
|
||||
|
||||
if ((num >= 100) && (num <= 999))
|
||||
{
|
||||
return ("0000" + std::to_string(num));
|
||||
}
|
||||
|
||||
if ((num >= 1000) && (num <= 9999))
|
||||
{
|
||||
return ("000" + std::to_string(num));
|
||||
}
|
||||
|
||||
if ((num >= 010000) && (num <= 99999))
|
||||
{
|
||||
return ("00" + std::to_string(num));
|
||||
}
|
||||
|
||||
if ((num >= 100000) && (num <= 999999))
|
||||
{
|
||||
return ("0" + std::to_string(num));
|
||||
}
|
||||
|
||||
if ((num >= 1000000) && (num <= 9999999))
|
||||
{
|
||||
return (std::to_string(num));
|
||||
}
|
||||
|
||||
return (std::to_string(num));
|
||||
}
|
||||
|
||||
// Pinta el marcador en pantalla usando un objeto texto
|
||||
void Game::renderScoreBoard()
|
||||
{
|
||||
// Dibuja el fondo del marcador
|
||||
if (difficulty == DIFFICULTY_NORMAL)
|
||||
{ // Pone el color gris de siempre
|
||||
SDL_SetRenderDrawColor(renderer, 46, 63, 71, 255);
|
||||
}
|
||||
else
|
||||
{ // Pinta el fondo del marcador del color de la dificultad
|
||||
SDL_SetRenderDrawColor(renderer, difficultyColor.r, difficultyColor.g, difficultyColor.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(players[0]->getScore()));
|
||||
|
||||
// PLAYER1 - MULT
|
||||
textScoreBoard->writeCentered(offsetLeft, offset3, lang->getText(55));
|
||||
textScoreBoard->writeCentered(offsetLeft, offset4, std::to_string(players[0]->getScoreMultiplier()).substr(0, 3));
|
||||
|
||||
if (numPlayers == 2)
|
||||
{
|
||||
// PLAYER2 - SCORE
|
||||
textScoreBoard->writeCentered(offsetRight, offset1, lang->getText(54));
|
||||
textScoreBoard->writeCentered(offsetRight, offset2, updateScoreText(players[1]->getScore()));
|
||||
|
||||
// PLAYER2 - MULT
|
||||
textScoreBoard->writeCentered(offsetRight, offset3, lang->getText(55));
|
||||
textScoreBoard->writeCentered(offsetRight, offset4, std::to_string(players[1]->getScoreMultiplier()).substr(0, 3));
|
||||
}
|
||||
else
|
||||
{
|
||||
// PLAYER2 - SCORE
|
||||
textScoreBoard->writeCentered(offsetRight, offset1, lang->getText(54));
|
||||
textScoreBoard->writeCentered(offsetRight, offset2, "0000000");
|
||||
|
||||
// PLAYER2 - MULT
|
||||
textScoreBoard->writeCentered(offsetRight, offset3, lang->getText(55));
|
||||
textScoreBoard->writeCentered(offsetRight, offset4, "1.0");
|
||||
}
|
||||
|
||||
// STAGE
|
||||
textScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset1, lang->getText(57) + std::to_string(stage[currentStage].number));
|
||||
|
||||
// POWERMETER
|
||||
powerMeterSprite->setPosY(offset2);
|
||||
powerMeterSprite->setSpriteClip(0, 0, 40, 7);
|
||||
powerMeterSprite->render();
|
||||
const float percent = (stage[currentStage].currentPower * 40.0f) / stage[currentStage].powerToComplete;
|
||||
powerMeterSprite->setSpriteClip(40, 0, (int)percent, 7);
|
||||
powerMeterSprite->render();
|
||||
|
||||
// HI-SCORE
|
||||
textScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset3, lang->getText(56));
|
||||
textScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset4, hiScoreName + updateScoreText(hiScore));
|
||||
}
|
||||
|
||||
// Actualiza las variables del jugador
|
||||
void Game::updatePlayers()
|
||||
{
|
||||
@@ -2928,7 +2816,7 @@ void Game::render()
|
||||
renderMessages();
|
||||
renderItems();
|
||||
renderSmartSprites();
|
||||
renderScoreBoard();
|
||||
scoreboard->render();
|
||||
renderPlayers();
|
||||
|
||||
if ((deathCounter <= 150) && !players[0]->isAlive())
|
||||
@@ -3292,7 +3180,7 @@ void Game::shakeScreen()
|
||||
renderBullets();
|
||||
renderItems();
|
||||
renderPlayers();
|
||||
renderScoreBoard();
|
||||
scoreboard->render();
|
||||
|
||||
// Vuelca el contenido del renderizador en pantalla
|
||||
screen->blit();
|
||||
@@ -3433,7 +3321,7 @@ void Game::renderPausedGame()
|
||||
renderMessages();
|
||||
renderItems();
|
||||
renderSmartSprites();
|
||||
renderScoreBoard();
|
||||
scoreboard->render();
|
||||
renderPlayers();
|
||||
|
||||
if ((deathCounter <= 150) && !players[0]->isAlive())
|
||||
|
||||
Reference in New Issue
Block a user