Implementat contador per a posar el nom al acabar la partida

This commit is contained in:
2024-10-16 09:18:22 +02:00
parent dbffda491f
commit 24556eeaa8
6 changed files with 75 additions and 30 deletions

View File

@@ -1,11 +1,12 @@
## GAME ## GAME
game.item_size 20 game.item_size 20 # Tamaño de los items del juego
game.width 320 game.width 320 # Ancho de la resolucion nativa del juego
game.height 240 game.height 240 # Alto de la resolucion nativa del juego
game.play_area.rect.x 0 game.play_area.rect.x 0 # Rectangulo con la posición de la zona de juego
game.play_area.rect.y 0 game.play_area.rect.y 0 # Rectangulo con la posición de la zona de juego
game.play_area.rect.w 320 game.play_area.rect.w 320 # Rectangulo con la posición de la zona de juego
game.play_area.rect.h 200 game.play_area.rect.h 200 # Rectangulo con la posición de la zona de juego
game.enter_name_seconds 30 # Duración en segundos para introducir el nombre al finalizar la partida
## FADE ## FADE
fade.num_squares_width 160 fade.num_squares_width 160

View File

@@ -1,11 +1,12 @@
## GAME ## GAME
game.item_size 20 game.item_size 20 # Tamaño de los items del juego
game.width 320 game.width 320 # Ancho de la resolucion nativa del juego
game.height 256 game.height 256 # Alto de la resolucion nativa del juego
game.play_area.rect.x 0 game.play_area.rect.x 0 # Rectangulo con la posición de la zona de juego
game.play_area.rect.y 0 game.play_area.rect.y 0 # Rectangulo con la posición de la zona de juego
game.play_area.rect.w 320 game.play_area.rect.w 320 # Rectangulo con la posición de la zona de juego
game.play_area.rect.h 216 game.play_area.rect.h 216 # Rectangulo con la posición de la zona de juego
game.enter_name_seconds 30 # Duración en segundos para introducir el nombre al finalizar la partida
## FADE ## FADE
fade.num_squares_width 160 fade.num_squares_width 160

View File

@@ -255,6 +255,11 @@ bool setParams(const std::string &var, const std::string &value)
param.game.play_area.rect.h = std::stoi(value); param.game.play_area.rect.h = std::stoi(value);
} }
else if (var == "game.enter_name_seconds")
{
param.game.enter_name_seconds = std::stoi(value);
}
// FADE // FADE
else if (var == "fade.num_squares_width") else if (var == "fade.num_squares_width")
{ {

View File

@@ -55,7 +55,9 @@ void Player::init()
coffees_ = 0; coffees_ = 0;
input_ = true; input_ = true;
continue_ticks_ = 0; continue_ticks_ = 0;
continue_counter_ = 20; continue_counter_ = 10;
enter_name_ticks_ = 0;
enter_name_counter_ = param.game.enter_name_seconds;
width_ = 30; width_ = 30;
height_ = 30; height_ = 30;
collider_.r = 9; collider_.r = 9;
@@ -347,6 +349,7 @@ void Player::update()
updatePowerUpCounter(); updatePowerUpCounter();
updateInvulnerable(); updateInvulnerable();
updateContinueCounter(); updateContinueCounter();
updateEnterNameCounter();
updateScoreboard(); updateScoreboard();
} }
@@ -711,6 +714,20 @@ void Player::updateContinueCounter()
} }
} }
// Actualiza el contador de entrar nombre
void Player::updateEnterNameCounter()
{
if (status_playing_ == PlayerStatus::ENTERING_NAME)
{
constexpr Uint32 ticks_speed = 1000;
if (SDL_GetTicks() - enter_name_ticks_ > ticks_speed)
{
decEnterNameCounter();
}
}
}
// Le asigna un panel en el marcador al jugador // Le asigna un panel en el marcador al jugador
void Player::setScoreBoardPanel(int panel) void Player::setScoreBoardPanel(int panel)
{ {
@@ -734,6 +751,18 @@ void Player::decContinueCounter()
} }
} }
// Decrementa el contador de entrar nombre
void Player::decEnterNameCounter()
{
enter_name_ticks_ = SDL_GetTicks();
--enter_name_counter_;
if (enter_name_counter_ < 0)
{
enter_name_counter_ = param.game.enter_name_seconds;
setStatusPlaying(PlayerStatus::CONTINUE);
}
}
// Establece el nombre del jugador // Establece el nombre del jugador
void Player::setName(const std::string &name) void Player::setName(const std::string &name)
{ {

View File

@@ -80,6 +80,8 @@ private:
std::string record_name_; // Nombre del jugador para la tabla de mejores puntuaciones std::string record_name_; // Nombre del jugador para la tabla de mejores puntuaciones
int controller_index_; // Indice del array de mandos que utilizará para moverse int controller_index_; // Indice del array de mandos que utilizará para moverse
bool demo_; // Para que el jugador sepa si está en el modo demostración bool demo_; // Para que el jugador sepa si está en el modo demostración
int enter_name_counter_; // Contador para poner nombre
Uint32 enter_name_ticks_; // Variable para poder cambiar el contador de poner nombre en función del tiempo
// Actualiza el circulo de colisión a la posición del jugador // Actualiza el circulo de colisión a la posición del jugador
void shiftColliders(); void shiftColliders();
@@ -90,6 +92,12 @@ private:
// Actualiza el contador de continue // Actualiza el contador de continue
void updateContinueCounter(); void updateContinueCounter();
// Actualiza el contador de entrar nombre
void updateEnterNameCounter();
// Decrementa el contador de entrar nombre
void decEnterNameCounter();
// Indica si el jugador se puede dibujar // Indica si el jugador se puede dibujar
bool isRenderable() const; bool isRenderable() const;

View File

@@ -157,6 +157,7 @@ struct ParamGame
int item_size; // Tamaño de los items del juego int item_size; // Tamaño de los items del juego
Zone play_area; // Rectangulo con la posición de la zona de juego Zone play_area; // Rectangulo con la posición de la zona de juego
Zone game_area; // Rectangulo con las dimensiones del juego Zone game_area; // Rectangulo con las dimensiones del juego
int enter_name_seconds; // Duración en segundos para introducir el nombre al finalizar la partida
}; };
// param.fade // param.fade