La zona de juego se dibuja en su propia textura
This commit is contained in:
@@ -46,6 +46,9 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr
|
||||
gameOverSprite = new Sprite(16, 80, 128, 96, gameOverTexture, renderer);
|
||||
gameOverEndSprite = new Sprite(PLAY_AREA_CENTER_X - gameOverEndTexture->getWidth() / 2, 80, 128, 96, gameOverEndTexture, renderer);
|
||||
|
||||
canvas = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, playArea.w, playArea.h);
|
||||
SDL_SetTextureBlendMode(canvas, SDL_BLENDMODE_BLEND);
|
||||
|
||||
// Inicializa las variables necesarias para la sección 'Game'
|
||||
init();
|
||||
}
|
||||
@@ -141,6 +144,8 @@ Game::~Game()
|
||||
delete gameOverSprite;
|
||||
delete gameOverEndSprite;
|
||||
|
||||
SDL_DestroyTexture(canvas);
|
||||
|
||||
JA_DeleteSound(balloonSound);
|
||||
JA_DeleteSound(bulletSound);
|
||||
JA_DeleteSound(playerCollisionSound);
|
||||
@@ -2684,17 +2689,18 @@ void Game::renderSeparator()
|
||||
{
|
||||
// Dibuja la linea que separa el marcador de la zona de juego
|
||||
SDL_SetRenderDrawColor(renderer, separator.r, separator.g, separator.b, 255);
|
||||
SDL_RenderDrawLine(renderer, PLAY_AREA_LEFT, PLAY_AREA_BOTTOM, PLAY_AREA_RIGHT, PLAY_AREA_BOTTOM);
|
||||
SDL_RenderDrawLine(renderer, SCOREBOARD_X, SCOREBOARD_Y, SCOREBOARD_X + SCOREBOARD_WIDTH, SCOREBOARD_Y);
|
||||
}
|
||||
|
||||
// Dibuja el juego
|
||||
void Game::render()
|
||||
{
|
||||
// Prepara para empezar a dibujar en la textura de juego
|
||||
screen->start();
|
||||
//Dibujamos el contenido de la zona de juego en su textura
|
||||
SDL_Texture *temp = SDL_GetRenderTarget(renderer);
|
||||
SDL_SetRenderTarget(renderer, canvas);
|
||||
|
||||
// Limpia la pantalla
|
||||
screen->clean(bgColor);
|
||||
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
|
||||
SDL_RenderClear(renderer);
|
||||
|
||||
// Dibuja los objetos
|
||||
background->render();
|
||||
@@ -2703,10 +2709,22 @@ void Game::render()
|
||||
renderBalloons();
|
||||
renderBullets();
|
||||
renderMessages();
|
||||
scoreboard->render();
|
||||
renderSeparator();
|
||||
renderPlayers();
|
||||
|
||||
// Deja el renderizador apuntando donde estaba
|
||||
SDL_SetRenderTarget(renderer, temp);
|
||||
|
||||
// Prepara para empezar a dibujar en la textura de juego
|
||||
screen->start();
|
||||
|
||||
// Limpia la pantalla
|
||||
screen->clean(bgColor);
|
||||
|
||||
// Dibuja la zona de juego y el marcador
|
||||
SDL_RenderCopy(renderer, canvas, nullptr, &playArea);
|
||||
scoreboard->render();
|
||||
//renderSeparator();
|
||||
|
||||
if ((deathCounter <= 150) && !players[0]->isAlive())
|
||||
{
|
||||
renderDeathFade(150 - deathCounter);
|
||||
|
||||
Reference in New Issue
Block a user