Pantalla a negro al morir

This commit is contained in:
2022-09-15 20:07:13 +02:00
parent 9ea184946d
commit 8e7b807fa8
5 changed files with 103 additions and 16 deletions

View File

@@ -16,7 +16,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
this->debug = debug;
// ****
//this->debug->setEnabled(true);
// this->debug->setEnabled(true);
currentRoom = "11.room";
spawnPoint = {2 * 8, 5 * 8, 0, 0, 0, s_standing, SDL_FLIP_HORIZONTAL};
@@ -48,6 +48,9 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
board.rooms = 1;
board.color = room->getBorderColor();
roomTracker->addRoom(currentRoom);
paused = false;
blackScreen = false;
blackScreenCounter = 0;
player->setInvincible(debug->getEnabled());
board.music = !debug->getEnabled();
@@ -112,8 +115,20 @@ void Game::checkEventHandler()
break;
case SDL_SCANCODE_P:
player->pause();
room->pause();
if (paused)
{
player->resume();
room->resume();
scoreboard->resume();
paused = false;
}
else
{
player->pause();
room->pause();
scoreboard->pause();
paused = true;
}
break;
case SDL_SCANCODE_B:
@@ -200,6 +215,7 @@ void Game::update()
checkEndGame();
scoreboard->update();
updateDebugInfo();
updateBlackScreen();
}
}
@@ -216,6 +232,7 @@ void Game::render()
player->render();
renderRoomName();
scoreboard->render();
renderBlackScreen();
// Debug info
renderDebugInfo();
@@ -375,11 +392,14 @@ void Game::killPlayer()
// Sonido
JA_PlaySound(deathSound);
SDL_Delay(500);
blackScreen = true;
// Crea la nueva habitación y el nuevo jugador
room = new Room(asset->get(currentRoom), renderer, screen, asset, itemTracker, &board.items, debug);
player = new Player(spawnPoint, asset->get("player.png"), asset->get("player.ani"), renderer, asset, input, room, debug);
room->pause();
player->pause();
}
// Recarga todas las texturas
@@ -389,4 +409,32 @@ void Game::reLoadTextures()
room->reLoadTexture();
scoreboard->reLoadTexture();
text->reLoadTexture();
}
// Actualiza las variables relativas a la pantalla en negro
void Game::updateBlackScreen()
{
if (blackScreen)
{
blackScreenCounter++;
if (blackScreenCounter > 50)
{
blackScreen = false;
blackScreenCounter = 0;
player->resume();
room->resume();
}
}
}
// Dibuja la pantalla negra
void Game::renderBlackScreen()
{
if (blackScreen)
{
screen->clean();
screen->setBorderColor(stringToColor("black"));
}
}