fix: en Player::handleRecoverMovement() es reproduía voice_recover.wav constantment

This commit is contained in:
2025-10-22 15:17:05 +02:00
parent bb132aade2
commit 66661036a4
2 changed files with 6 additions and 2 deletions

View File

@@ -196,7 +196,10 @@ void Player::handlePlayingMovement(float delta_time) {
} }
void Player::handleRecoverMovement() { void Player::handleRecoverMovement() {
if (player_sprite_->getCurrentAnimationFrame() == 10) { playSound("voice_recover.wav"); } if (player_sprite_->getCurrentAnimationFrame() == 10 && !recover_sound_triggered_) {
playSound("voice_recover.wav");
recover_sound_triggered_ = true;
}
if (player_sprite_->animationIsCompleted()) { setPlayingState(State::RESPAWNING); } if (player_sprite_->animationIsCompleted()) { setPlayingState(State::RESPAWNING); }
} }
@@ -559,6 +562,7 @@ void Player::setPlayingState(State state) {
switch (playing_state_) { switch (playing_state_) {
case State::RECOVER: { case State::RECOVER: {
recover_sound_triggered_ = false;
score_ = 0; // Pon los puntos a cero para que no se vea en el marcador score_ = 0; // Pon los puntos a cero para que no se vea en el marcador
score_multiplier_ = 1.0F; score_multiplier_ = 1.0F;
setScoreboardMode(Scoreboard::Mode::SCORE); setScoreboardMode(Scoreboard::Mode::SCORE);

View File

@@ -190,7 +190,6 @@ class Player {
[[nodiscard]] auto getZOrder() const -> size_t { return z_order_; } [[nodiscard]] auto getZOrder() const -> size_t { return z_order_; }
void setZOrder(size_t z_order) { z_order_ = z_order; } void setZOrder(size_t z_order) { z_order_ = z_order; }
// Puntuación y juego // Puntuación y juego
[[nodiscard]] auto getScore() const -> int { return score_; } [[nodiscard]] auto getScore() const -> int { return score_; }
[[nodiscard]] auto getScoreMultiplier() const -> float { return score_multiplier_; } [[nodiscard]] auto getScoreMultiplier() const -> float { return score_multiplier_; }
@@ -328,6 +327,7 @@ class Player {
bool demo_ = false; // Para que el jugador sepa si está en el modo demostración bool demo_ = false; // Para que el jugador sepa si está en el modo demostración
bool game_completed_ = false; // Indica si ha completado el juego bool game_completed_ = false; // Indica si ha completado el juego
bool uses_keyboard_ = false; // Indica si usa el teclado como dispositivo de control bool uses_keyboard_ = false; // Indica si usa el teclado como dispositivo de control
bool recover_sound_triggered_ = false; // Indica si ya ha sonado el sonido en el estado RECOVER
// --- Métodos internos --- // --- Métodos internos ---
void shiftColliders(); // Actualiza el círculo de colisión a la posición del jugador void shiftColliders(); // Actualiza el círculo de colisión a la posición del jugador