diff --git a/source/player.cpp b/source/player.cpp index e13fa12..d819438 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -212,6 +212,15 @@ void Player::move() } break; } + case PlayerState::CONTINUE_TIME_OUT: + { + // Si el cadaver desaparece por el suelo, cambia de estado + if (player_sprite_->getPosY() > play_area_.h) + { + setPlayingState(PlayerState::WAITING); + } + break; + } case PlayerState::LEAVING_SCREEN: { ++step_counter_; @@ -378,6 +387,7 @@ void Player::setAnimation() break; } case PlayerState::DYING: + case PlayerState::CONTINUE_TIME_OUT: { player_sprite_->setCurrentAnimation("dying"); break; @@ -545,6 +555,15 @@ void Player::setPlayingState(PlayerState state) (rand() % 2 == 0) ? player_sprite_->setVelX(3.3f) : player_sprite_->setVelX(-3.3f); break; } + case PlayerState::CONTINUE_TIME_OUT: + { + // Activa la animación de morir + player_sprite_->setAccelY(0.2f); + player_sprite_->setVelY(-6.6f); + player_sprite_->setVelX(0.0f); + setScoreboardMode(ScoreboardMode::GAME_OVER); + break; + } case PlayerState::GAME_OVER: { setScoreboardMode(ScoreboardMode::GAME_OVER); diff --git a/source/player.h b/source/player.h index c7604b8..891183f 100644 --- a/source/player.h +++ b/source/player.h @@ -36,6 +36,7 @@ enum class PlayerState // Estados generales de juego PLAYING, // Está jugando activamente CONTINUE, // Cuenta atrás para continuar tras perder + CONTINUE_TIME_OUT, // Se ha terminado la cuenta atras para continuar y se retira al jugador de la zona de juego WAITING, // Esperando para entrar a jugar ENTERING_NAME, // Introduciendo nombre para la tabla de puntuaciones SHOWING_NAME, // Mostrando el nombre introducido