From 5edef17d8483a3c7137e68af2e72b3ab1167aff6 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Thu, 25 Sep 2025 19:10:46 +0200 Subject: [PATCH] nou: musica al completar el joc --- config/assets.txt | 1 + data/gfx/player/player.ani | 2 +- data/music/congratulations.ogg | Bin 0 -> 95446 bytes source/manage_hiscore_table.cpp | 17 ++++- source/player.cpp | 128 ++++++++++++++++++-------------- source/sections/game.cpp | 32 ++++---- source/sections/game.h | 40 +++++----- 7 files changed, 126 insertions(+), 94 deletions(-) create mode 100644 data/music/congratulations.ogg diff --git a/config/assets.txt b/config/assets.txt index b9510c1..f276589 100644 --- a/config/assets.txt +++ b/config/assets.txt @@ -22,6 +22,7 @@ DEMODATA|${PREFIX}/data/demo/demo1.bin DEMODATA|${PREFIX}/data/demo/demo2.bin # Música +MUSIC|${PREFIX}/data/music/congratulations.ogg MUSIC|${PREFIX}/data/music/credits.ogg MUSIC|${PREFIX}/data/music/intro.ogg MUSIC|${PREFIX}/data/music/playing.ogg diff --git a/data/gfx/player/player.ani b/data/gfx/player/player.ani index 5a2fda4..ca44c10 100644 --- a/data/gfx/player/player.ani +++ b/data/gfx/player/player.ani @@ -109,7 +109,7 @@ frames=38,39,40,41 [animation] name=celebration speed=0.167 -loop=-1 +loop=0 frames=42,42,42,42,42,42,43,44,45,46,46,46,46,46,46,45,45,45,46,46,46,45,45,45,44,43,42,42,42 [/animation] diff --git a/data/music/congratulations.ogg b/data/music/congratulations.ogg new file mode 100644 index 0000000000000000000000000000000000000000..035107bf21545daa8ed7df4c881ee72a14a2a6f9 GIT binary patch literal 95446 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

qLy&$XUerE6lX|vqY^!|(e=J}2 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 literal 0 HcmV?d00001 diff --git a/source/manage_hiscore_table.cpp b/source/manage_hiscore_table.cpp index c569f0b..6ecdced 100644 --- a/source/manage_hiscore_table.cpp +++ b/source/manage_hiscore_table.cpp @@ -13,7 +13,6 @@ void ManageHiScoreTable::clear() { table_.clear(); // Añade 10 entradas predefinidas - /* table_.emplace_back("BRY", 1000000); table_.emplace_back("USUFO", 500000); table_.emplace_back("GLUCA", 100000); @@ -24,8 +23,8 @@ void ManageHiScoreTable::clear() { table_.emplace_back("SAM", 500); table_.emplace_back("PACMQ", 200); table_.emplace_back("PELEC", 100); - */ + /* table_.emplace_back("BRY", 1000); table_.emplace_back("USUFO", 500); table_.emplace_back("GLUCA", 100); @@ -36,6 +35,20 @@ void ManageHiScoreTable::clear() { table_.emplace_back("SAM", 3); table_.emplace_back("PACMQ", 2); table_.emplace_back("PELEC", 1); + */ + + /* + table_.emplace_back("BRY", 5000000); + table_.emplace_back("USUFO", 5000000); + table_.emplace_back("GLUCA", 5000000); + table_.emplace_back("PARRA", 5000000); + table_.emplace_back("CAGAM", 5000000); + table_.emplace_back("PEPE", 5000000); + table_.emplace_back("ROSIT", 5000000); + table_.emplace_back("SAM", 5000000); + table_.emplace_back("PACMQ", 5000000); + table_.emplace_back("PELEC", 5000000); + */ sort(); } diff --git a/source/player.cpp b/source/player.cpp index 681d6df..a060490 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -149,20 +149,20 @@ void Player::setInputEnteringName(Input::Action action) { name_entry_idle_time_accumulator_ = 0.0f; } -// Fase 1: Sistema de movimiento time-based +// Sistema de movimiento void Player::move(float deltaTime) { switch (playing_state_) { case State::PLAYING: handlePlayingMovement(deltaTime); break; case State::ROLLING: - handleRollingMovement(); + handleRollingMovement(); break; case State::TITLE_ANIMATION: handleTitleAnimation(deltaTime); break; case State::CONTINUE_TIME_OUT: - handleContinueTimeOut(); + handleContinueTimeOut(); break; case State::LEAVING_SCREEN: updateStepCounter(deltaTime); @@ -173,13 +173,13 @@ void Player::move(float deltaTime) { handleEnteringScreen(deltaTime); break; case State::CREDITS: - handleCreditsMovement(deltaTime); + handleCreditsMovement(deltaTime); break; case State::WAITING: - handleWaitingMovement(deltaTime); + handleWaitingMovement(deltaTime); break; case State::RECOVER: - handleRecoverMovement(); + handleRecoverMovement(); break; default: break; @@ -356,7 +356,7 @@ void Player::handleCreditsLeftMovement() { // Controla la animación del jugador saludando (time-based) void Player::handleWaitingMovement(float deltaTime) { waiting_time_accumulator_ += deltaTime; - const float WAITING_DURATION_S = static_cast(WAITING_COUNTER) / 60.0f; // Convert frames to seconds + const float WAITING_DURATION_S = static_cast(WAITING_COUNTER) / 60.0f; // Convert frames to seconds if (waiting_time_accumulator_ >= WAITING_DURATION_S) { waiting_time_accumulator_ = 0.0f; player_sprite_->resetAnimation(); @@ -387,7 +387,7 @@ void Player::setInputBasedOnPlayerId() { // Incrementa o ajusta el contador de pasos (time-based) void Player::updateStepCounter(float deltaTime) { step_time_accumulator_ += deltaTime; - const float STEP_INTERVAL_S = 10.0f / 60.0f; // 10 frames converted to seconds + const float STEP_INTERVAL_S = 10.0f / 60.0f; // 10 frames converted to seconds if (step_time_accumulator_ >= STEP_INTERVAL_S) { step_time_accumulator_ = 0.0f; playSound("walk.wav"); @@ -398,16 +398,16 @@ void Player::updateStepCounter(float deltaTime) { void Player::render() { if (power_up_ && isPlaying()) { // Convertir lógica de parpadeo a deltaTime en segundos - const float TOTAL_POWERUP_TIME_S = static_cast(POWERUP_COUNTER) / 60.0f; // Total time in seconds - const float QUARTER_TIME_S = TOTAL_POWERUP_TIME_S / 4.0f; // 25% del tiempo total + const float TOTAL_POWERUP_TIME_S = static_cast(POWERUP_COUNTER) / 60.0f; // Total time in seconds + const float QUARTER_TIME_S = TOTAL_POWERUP_TIME_S / 4.0f; // 25% del tiempo total if (power_up_time_accumulator_ > QUARTER_TIME_S) { // En los primeros 75% del tiempo, siempre visible power_sprite_->render(); } else { // En el último 25%, parpadea cada 20 frames (≈0.333s) - constexpr float BLINK_PERIOD_S = 20.0f / 60.0f; // 20 frames in seconds - constexpr float VISIBLE_PROPORTION = 4.0f / 20.0f; // 4 frames visible de 20 total + constexpr float BLINK_PERIOD_S = 20.0f / 60.0f; // 20 frames in seconds + constexpr float VISIBLE_PROPORTION = 4.0f / 20.0f; // 4 frames visible de 20 total float cycle_position = fmod(power_up_time_accumulator_, BLINK_PERIOD_S) / BLINK_PERIOD_S; if (cycle_position >= VISIBLE_PROPORTION) { @@ -475,11 +475,10 @@ auto Player::computeAnimation() const -> std::pair { return {anim_name, flip_mode}; } -// Fase 1: Establece la animación correspondiente al estado (time-based) +// Establece la animación correspondiente al estado void Player::setAnimation(float deltaTime) { switch (playing_state_) { case State::PLAYING: - case State::ENTERING_NAME_GAME_COMPLETED: case State::ENTERING_SCREEN: case State::LEAVING_SCREEN: case State::TITLE_ANIMATION: @@ -505,6 +504,7 @@ void Player::setAnimation(float deltaTime) { case State::CONTINUE: player_sprite_->setCurrentAnimation("dizzy"); break; + case State::ENTERING_NAME_GAME_COMPLETED: case State::CELEBRATING: player_sprite_->setCurrentAnimation("celebration"); break; @@ -519,16 +519,16 @@ void Player::setAnimation(float deltaTime) { // Actualiza al jugador con deltaTime (time-based) void Player::update(float deltaTime) { - move(deltaTime); // Sistema de movimiento time-based - setAnimation(deltaTime); // Animaciones time-based - shiftColliders(); // Sin cambios (posicional) - updateFireSystem(deltaTime); // Sistema de disparo de dos líneas - updatePowerUp(deltaTime); // Sistema de power-up time-based - updateInvulnerable(deltaTime); // Sistema de invulnerabilidad time-based - updateScoreboard(); // Sin cambios (no temporal) - updateContinueCounter(deltaTime); // Sistema de continue time-based - updateEnterNameCounter(deltaTime); // Sistema de name entry time-based - updateShowingName(deltaTime); // Sistema de showing name time-based + move(deltaTime); // Sistema de movimiento time-based + setAnimation(deltaTime); // Animaciones time-based + shiftColliders(); // Sin cambios (posicional) + updateFireSystem(deltaTime); // Sistema de disparo de dos líneas + updatePowerUp(deltaTime); // Sistema de power-up time-based + updateInvulnerable(deltaTime); // Sistema de invulnerabilidad time-based + updateScoreboard(); // Sin cambios (no temporal) + updateContinueCounter(deltaTime); // Sistema de continue time-based + updateEnterNameCounter(deltaTime); // Sistema de name entry time-based + updateShowingName(deltaTime); // Sistema de showing name time-based } void Player::passShowingName() { @@ -599,7 +599,7 @@ void Player::setPlayingState(State state) { case State::CONTINUE: { // Inicializa el contador de continuar continue_counter_ = 9; - continue_time_accumulator_ = 0.0f; // Initialize time accumulator + continue_time_accumulator_ = 0.0f; // Initialize time accumulator playSound("continue_clock.wav"); setScoreboardMode(Scoreboard::Mode::CONTINUE); break; @@ -618,7 +618,7 @@ void Player::setPlayingState(State state) { } pos_y_ = default_pos_y_; waiting_counter_ = 0; - waiting_time_accumulator_ = 0.0f; // Initialize time accumulator + waiting_time_accumulator_ = 0.0f; // Initialize time accumulator shiftSprite(); player_sprite_->setCurrentAnimation("hello"); player_sprite_->animtionPause(); @@ -639,10 +639,10 @@ void Player::setPlayingState(State state) { case State::ROLLING: { // Activa la animación de rodar dando botes player_sprite_->setCurrentAnimation("rolling"); - player_sprite_->setAnimationSpeed(4.0f / 60.0f); // 4 frames convertido a segundos - player_sprite_->setVelY(-396.0F); // Velocidad inicial (6.6 * 60 = 396 pixels/s) - player_sprite_->setAccelY(720.0F); // Gravedad (0.2 * 60² = 720 pixels/s²) - player_sprite_->setPosY(pos_y_ - 2); // Para "sacarlo" del suelo, ya que está hundido un pixel para ocultar el outline de los pies + player_sprite_->setAnimationSpeed(4.0f / 60.0f); // 4 frames convertido a segundos + player_sprite_->setVelY(-396.0F); // Velocidad inicial (6.6 * 60 = 396 pixels/s) + player_sprite_->setAccelY(720.0F); // Gravedad (0.2 * 60² = 720 pixels/s²) + player_sprite_->setPosY(pos_y_ - 2); // Para "sacarlo" del suelo, ya que está hundido un pixel para ocultar el outline de los pies (rand() % 2 == 0) ? player_sprite_->setVelX(198.0F) : player_sprite_->setVelX(-198.0F); // 3.3 * 60 = 198 pixels/s break; } @@ -659,8 +659,8 @@ void Player::setPlayingState(State state) { } case State::CONTINUE_TIME_OUT: { // Activa la animación de sacar al jugador de la zona de juego - player_sprite_->setAccelY(720.0F); // 0.2 * 60² = 720 pixels/s² - player_sprite_->setVelY(-240.0F); // -4.0 * 60 = -240 pixels/s + player_sprite_->setAccelY(720.0F); // 0.2 * 60² = 720 pixels/s² + player_sprite_->setVelY(-240.0F); // -4.0 * 60 = -240 pixels/s player_sprite_->setVelX(0.0F); player_sprite_->setCurrentAnimation("rolling"); player_sprite_->setAnimationSpeed(5.0f / 60.0f); // 5 frames convertido a segundos @@ -679,21 +679,21 @@ void Player::setPlayingState(State state) { break; } case State::ENTERING_NAME_GAME_COMPLETED: { - setWalkingState(State::WALKING_STOP); - setFiringState(State::FIRING_NONE); + // setWalkingState(State::WALKING_STOP); + // setFiringState(State::FIRING_NONE); setScoreboardMode(Scoreboard::Mode::ENTER_NAME); break; } case State::LEAVING_SCREEN: { step_counter_ = 0; - step_time_accumulator_ = 0.0f; // Initialize time accumulator + step_time_accumulator_ = 0.0f; // Initialize time accumulator setScoreboardMode(Scoreboard::Mode::GAME_COMPLETED); break; } case State::ENTERING_SCREEN: { init(); step_counter_ = 0; - step_time_accumulator_ = 0.0f; // Initialize time accumulator + step_time_accumulator_ = 0.0f; // Initialize time accumulator setScoreboardMode(Scoreboard::Mode::SCORE); switch (id_) { case Id::PLAYER1: @@ -734,7 +734,7 @@ void Player::decScoreMultiplier() { void Player::setInvulnerable(bool value) { invulnerable_ = value; invulnerable_counter_ = invulnerable_ ? INVULNERABLE_COUNTER : 0; - invulnerable_time_accumulator_ = invulnerable_ ? static_cast(INVULNERABLE_COUNTER) / 60.0f : 0.0f; // Convert frames to seconds + invulnerable_time_accumulator_ = invulnerable_ ? static_cast(INVULNERABLE_COUNTER) / 60.0f : 0.0f; // Convert frames to seconds } // Monitoriza el estado (time-based) @@ -744,12 +744,12 @@ void Player::updateInvulnerable(float deltaTime) { invulnerable_time_accumulator_ -= deltaTime; // Frecuencia fija de parpadeo adaptada a deltaTime (en segundos) - constexpr float BLINK_PERIOD_S = 8.0f / 60.0f; // 8 frames convertidos a segundos + constexpr float BLINK_PERIOD_S = 8.0f / 60.0f; // 8 frames convertidos a segundos // Calcula proporción decreciente basada en tiempo restante const float TOTAL_INVULNERABLE_TIME_S = static_cast(INVULNERABLE_COUNTER) / 60.0f; float progress = 1.0f - (invulnerable_time_accumulator_ / TOTAL_INVULNERABLE_TIME_S); - float white_proportion = 0.5f - progress * 0.2f; // Menos blanco hacia el final + float white_proportion = 0.5f - progress * 0.2f; // Menos blanco hacia el final // Calcula si debe mostrar textura de invulnerabilidad basado en el ciclo temporal float cycle_position = fmod(invulnerable_time_accumulator_, BLINK_PERIOD_S) / BLINK_PERIOD_S; @@ -773,7 +773,7 @@ void Player::updateInvulnerable(float deltaTime) { void Player::setPowerUp() { power_up_ = true; power_up_counter_ = POWERUP_COUNTER; - power_up_time_accumulator_ = static_cast(POWERUP_COUNTER) / 60.0f; // Convert frames to seconds + power_up_time_accumulator_ = static_cast(POWERUP_COUNTER) / 60.0f; // Convert frames to seconds } // Actualiza el valor de la variable (time-based) @@ -825,7 +825,7 @@ void Player::setPlayerTextures(const std::vector> &text void Player::updateContinueCounter(float deltaTime) { if (playing_state_ == State::CONTINUE) { continue_time_accumulator_ += deltaTime; - constexpr float CONTINUE_INTERVAL_S = 1.0f; // 1 segundo + constexpr float CONTINUE_INTERVAL_S = 1.0f; // 1 segundo if (continue_time_accumulator_ >= CONTINUE_INTERVAL_S) { continue_time_accumulator_ -= CONTINUE_INTERVAL_S; decContinueCounter(); @@ -837,7 +837,7 @@ void Player::updateContinueCounter(float deltaTime) { void Player::updateEnterNameCounter(float deltaTime) { if (playing_state_ == State::ENTERING_NAME || playing_state_ == State::ENTERING_NAME_GAME_COMPLETED) { name_entry_time_accumulator_ += deltaTime; - constexpr float NAME_ENTRY_INTERVAL_S = 1.0f; // 1 segundo + constexpr float NAME_ENTRY_INTERVAL_S = 1.0f; // 1 segundo if (name_entry_time_accumulator_ >= NAME_ENTRY_INTERVAL_S) { name_entry_time_accumulator_ -= NAME_ENTRY_INTERVAL_S; decNameEntryCounter(); @@ -849,7 +849,7 @@ void Player::updateEnterNameCounter(float deltaTime) { void Player::updateShowingName(float deltaTime) { if (playing_state_ == State::SHOWING_NAME) { showing_name_time_accumulator_ += deltaTime; - constexpr float SHOWING_NAME_DURATION_S = 5.0f; // 5 segundos + constexpr float SHOWING_NAME_DURATION_S = 5.0f; // 5 segundos if (showing_name_time_accumulator_ >= SHOWING_NAME_DURATION_S) { game_completed_ ? setPlayingState(State::LEAVING_SCREEN) : setPlayingState(State::CONTINUE); } @@ -858,7 +858,7 @@ void Player::updateShowingName(float deltaTime) { // Decrementa el contador de continuar void Player::decContinueCounter() { - continue_time_accumulator_ = 0.0f; // Reset time accumulator + continue_time_accumulator_ = 0.0f; // Reset time accumulator --continue_counter_; if (continue_counter_ < 0) { setPlayingState(State::CONTINUE_TIME_OUT); @@ -869,7 +869,7 @@ void Player::decContinueCounter() { // Decrementa el contador de entrar nombre void Player::decNameEntryCounter() { - name_entry_time_accumulator_ = 0.0f; // Reset time accumulator + name_entry_time_accumulator_ = 0.0f; // Reset time accumulator // Incrementa acumuladores de tiempo (1 segundo) name_entry_idle_time_accumulator_ += 1.0f; @@ -1007,7 +1007,7 @@ void Player::startFiringSystem(int cooldown_frames) { visual_fire_state_ = VisualFireState::AIMING; visual_state_timer_ = aiming_duration_; - updateFiringStateFromVisual(); // Sincroniza firing_state_ para animaciones + updateFiringStateFromVisual(); // Sincroniza firing_state_ para animaciones } // Sincroniza firing_state_ con visual_fire_state_ @@ -1034,19 +1034,35 @@ void Player::updateFiringStateFromVisual() { case VisualFireState::RECOILING: switch (base_state) { - case State::FIRING_LEFT: firing_state_ = State::RECOILING_LEFT; break; - case State::FIRING_RIGHT: firing_state_ = State::RECOILING_RIGHT; break; - case State::FIRING_UP: firing_state_ = State::RECOILING_UP; break; - default: firing_state_ = State::RECOILING_UP; break; + case State::FIRING_LEFT: + firing_state_ = State::RECOILING_LEFT; + break; + case State::FIRING_RIGHT: + firing_state_ = State::RECOILING_RIGHT; + break; + case State::FIRING_UP: + firing_state_ = State::RECOILING_UP; + break; + default: + firing_state_ = State::RECOILING_UP; + break; } break; case VisualFireState::THREAT_POSE: switch (base_state) { - case State::FIRING_LEFT: firing_state_ = State::COOLING_LEFT; break; - case State::FIRING_RIGHT: firing_state_ = State::COOLING_RIGHT; break; - case State::FIRING_UP: firing_state_ = State::COOLING_UP; break; - default: firing_state_ = State::COOLING_UP; break; + case State::FIRING_LEFT: + firing_state_ = State::COOLING_LEFT; + break; + case State::FIRING_RIGHT: + firing_state_ = State::COOLING_RIGHT; + break; + case State::FIRING_UP: + firing_state_ = State::COOLING_UP; + break; + default: + firing_state_ = State::COOLING_UP; + break; } break; } @@ -1064,8 +1080,8 @@ void Player::transitionToThreatPose() { // Calcular threat_pose_duration ajustada: // Duración original (833ms) menos el tiempo extra que ahora dura recoiling - float original_recoiling_duration = fire_cooldown_timer_; // Era 100% del cooldown - float new_recoiling_duration = aiming_duration_ * RECOILING_DURATION_MULTIPLIER; // Ahora es más del cooldown + float original_recoiling_duration = fire_cooldown_timer_; // Era 100% del cooldown + float new_recoiling_duration = aiming_duration_ * RECOILING_DURATION_MULTIPLIER; // Ahora es más del cooldown float extra_recoiling_time = new_recoiling_duration - original_recoiling_duration; float adjusted_threat_duration = THREAT_POSE_DURATION - extra_recoiling_time; diff --git a/source/sections/game.cpp b/source/sections/game.cpp index dd0bc34..1c7421e 100644 --- a/source/sections/game.cpp +++ b/source/sections/game.cpp @@ -204,8 +204,8 @@ void Game::updateHiScore() { // Si se supera la máxima puntuación if (!hi_score_achieved_) { hi_score_achieved_ = true; - playSound("hi_score_achieved.wav"); // Emite un sonido - createMessage({paths_.at(8), paths_.at(9)}, Resource::get()->getTexture("game_text_new_record")); // CRea un mensaje + playSound("hi_score_achieved.wav"); // Emite un sonido + createMessage({paths_.at(8), paths_.at(9)}, Resource::get()->getTexture("game_text_new_record")); // CRea un mensaje } } } @@ -1037,7 +1037,7 @@ void Game::initPaths() { const int X1 = param.game.play_area.center_x - (W / 2); const int X2 = param.game.play_area.rect.w; const int Y = param.game.play_area.center_y; - paths_.emplace_back(createPath(X0, X1, PathType::HORIZONTAL, Y, 80, easeOutQuint), 0.5f); + paths_.emplace_back(createPath(X0, X1, PathType::HORIZONTAL, Y, 80, easeOutQuint), 0.5f); paths_.emplace_back(createPath(X1, X2, PathType::HORIZONTAL, Y, 80, easeInQuint), 0); } @@ -1049,7 +1049,7 @@ void Game::initPaths() { const int Y1 = param.game.play_area.center_y - (H / 2); const int Y2 = -H; const int X = param.game.play_area.center_x; - paths_.emplace_back(createPath(Y0, Y1, PathType::VERTICAL, X, 80, easeOutQuint), 0.5f); + paths_.emplace_back(createPath(Y0, Y1, PathType::VERTICAL, X, 80, easeOutQuint), 0.5f); paths_.emplace_back(createPath(Y1, Y2, PathType::VERTICAL, X, 80, easeInQuint), 0); } @@ -1061,8 +1061,8 @@ void Game::initPaths() { const int X0 = -W; const int X1 = param.game.play_area.center_x - (W / 2); const int X2 = param.game.play_area.rect.w; - const int Y = param.game.play_area.center_y - (H / 2) - 20; - paths_.emplace_back(createPath(X0, X1, PathType::HORIZONTAL, Y, 80, easeOutQuint), 7.0F); + const int Y = param.game.play_area.center_y - (H / 2); + paths_.emplace_back(createPath(X0, X1, PathType::HORIZONTAL, Y, 80, easeOutQuint), 7.0F); paths_.emplace_back(createPath(X1, X2, PathType::HORIZONTAL, Y, 80, easeInQuint), 0); } @@ -1074,7 +1074,7 @@ void Game::initPaths() { const int X0 = param.game.play_area.rect.w; const int X1 = param.game.play_area.center_x - (W / 2); const int X2 = -W; - const int Y = param.game.play_area.center_y + (H / 2) - 20; + const int Y = param.game.play_area.center_y + (H / 2); paths_.emplace_back(createPath(X0, X1, PathType::HORIZONTAL, Y, 80, easeOutQuint), 7.0F); paths_.emplace_back(createPath(X1, X2, PathType::HORIZONTAL, Y, 80, easeInQuint), 0); } @@ -1083,11 +1083,12 @@ void Game::initPaths() { { const auto &texture = Resource::get()->getTexture("game_text_new_record"); const auto W = texture->getWidth(); + const auto H = texture->getHeight(); const int X0 = -W; const int X1 = param.game.play_area.center_x - (W / 2); const int X2 = param.game.play_area.rect.w; - const int Y = param.game.play_area.first_quarter_y; - paths_.emplace_back(createPath(X0, X1, PathType::HORIZONTAL, Y, 80, easeOutQuint), 1.0f); + const int Y = param.game.play_area.center_y - (H / 2) - (H * 2); + paths_.emplace_back(createPath(X0, X1, PathType::HORIZONTAL, Y, 80, easeOutQuint), 1.0f); paths_.emplace_back(createPath(X1, X2, PathType::HORIZONTAL, Y, 80, easeInQuint), 0); } } @@ -1658,8 +1659,8 @@ void Game::initPlayers(Player::Id player_id) { } // Hace sonar la música -void Game::playMusic() { - Audio::get()->playMusic("playing.ogg"); +void Game::playMusic(const std::string &music_file, int loop) { + Audio::get()->playMusic(music_file, loop); } // Pausa la música @@ -1770,7 +1771,7 @@ void Game::updateGameStateShowingGetReadyMessage(float deltaTime) { if (!music_started) { music_timer += deltaTime; if (music_timer >= 1.67f) { - playMusic(); + playMusic("playing.ogg"); music_started = true; setState(State::PLAYING); } @@ -1781,7 +1782,7 @@ void Game::updateGameStateShowingGetReadyMessage(float deltaTime) { void Game::updateGameStatePlaying(float deltaTime) { #ifdef _DEBUG if (auto_pop_balloons_) { - stage_manager_->addPower(1); + stage_manager_->addPower(2); } #endif updatePlayers(deltaTime); @@ -1935,8 +1936,8 @@ void Game::onPauseStateChanged(bool is_paused) { // Maneja eventos del juego completado usando flags para triggers únicos void Game::handleGameCompletedEvents() { - constexpr float START_CELEBRATIONS_S = 6.667f; // 400 frames a 60fps → segundos - constexpr float END_CELEBRATIONS_S = 11.667f; // 700 frames a 60fps → segundos + constexpr float START_CELEBRATIONS_S = 6.0f; + constexpr float END_CELEBRATIONS_S = 14.0f; // Inicio de celebraciones static bool start_celebrations_triggered = false; @@ -1954,6 +1955,7 @@ void Game::handleGameCompletedEvents() { } updateHiScore(); + playMusic("congratulations.ogg", 1); start_celebrations_triggered = true; } diff --git a/source/sections/game.h b/source/sections/game.h index a6d42ad..f17b0a0 100644 --- a/source/sections/game.h +++ b/source/sections/game.h @@ -75,11 +75,11 @@ class Game { // --- Constantes de tiempo (en segundos) --- static constexpr float HELP_COUNTER_S = 16.667f; // Contador de ayuda (1000 frames a 60fps → segundos) - static constexpr float GAME_COMPLETED_START_FADE_S = 8.333f; // Inicio del fade al completar (500 frames → segundos) - static constexpr float GAME_COMPLETED_END_S = 11.667f; // Fin del juego completado (700 frames → segundos) - static constexpr float GAME_OVER_DURATION_S = 5.833f; // Duración game over (350 frames → segundos) - static constexpr float TIME_STOPPED_DURATION_S = 6.0f; // Duración del tiempo detenido (360 frames → segundos) - static constexpr float DEMO_FADE_PRE_DURATION_S = 0.5f; // Pre-duración del fade en modo demo + static constexpr float GAME_COMPLETED_START_FADE_S = 8.333f; // Inicio del fade al completar (500 frames → segundos) + static constexpr float GAME_COMPLETED_END_S = 11.667f; // Fin del juego completado (700 frames → segundos) + static constexpr float GAME_OVER_DURATION_S = 5.833f; // Duración game over (350 frames → segundos) + static constexpr float TIME_STOPPED_DURATION_S = 6.0f; // Duración del tiempo detenido (360 frames → segundos) + static constexpr float DEMO_FADE_PRE_DURATION_S = 0.5f; // Pre-duración del fade en modo demo static constexpr int ITEM_POINTS_1_DISK_ODDS = 10; static constexpr int ITEM_POINTS_2_GAVINA_ODDS = 6; static constexpr int ITEM_POINTS_3_PACMAR_ODDS = 3; @@ -226,7 +226,7 @@ class Game { void demoHandlePlayerInput(const std::shared_ptr &player, int index); // Procesa entrada de jugador en demo // --- Sistema de balas y proyectiles --- - void updateBullets(float deltaTime); // Actualiza posición y estado de todas las balas (time-based) + void updateBullets(float deltaTime); // Actualiza posición y estado de todas las balas (time-based) void renderBullets(); // Renderiza todas las balas activas void createBullet(int x, int y, BulletType kind, bool powered_up, Player::Id owner); // Crea una nueva bala void checkBulletCollision(); // Verifica colisiones de todas las balas @@ -238,7 +238,7 @@ class Game { void processBalloonHit(const std::shared_ptr &bullet, const std::shared_ptr &balloon); // Procesa impacto en globo // --- Sistema de ítems y power-ups --- - void updateItems(float deltaTime); // Actualiza posición y estado de todos los ítems + void updateItems(float deltaTime); // Actualiza posición y estado de todos los ítems void renderItems(); // Renderiza todos los ítems activos auto dropItem() -> ItemType; // Determina aleatoriamente qué ítem soltar void createItem(ItemType type, float x, float y); // Crea un nuevo ítem en posición específica @@ -258,14 +258,14 @@ class Game { // --- Sprites inteligentes (smartsprites) --- void updateSmartSprites(float deltaTime); // Actualiza todos los sprites con lógica propia (time-based) - void renderSmartSprites(); // Renderiza todos los sprites inteligentes - void freeSmartSprites(); // Libera memoria de sprites inteligentes + void renderSmartSprites(); // Renderiza todos los sprites inteligentes + void freeSmartSprites(); // Libera memoria de sprites inteligentes // --- Sprites por ruta (pathsprites) --- void updatePathSprites(float deltaTime); // Actualiza sprites que siguen rutas predefinidas - void renderPathSprites(); // Renderiza sprites animados por ruta - void freePathSprites(); // Libera memoria de sprites por ruta - void initPaths(); // Inicializa rutas predefinidas para animaciones + void renderPathSprites(); // Renderiza sprites animados por ruta + void freePathSprites(); // Libera memoria de sprites por ruta + void initPaths(); // Inicializa rutas predefinidas para animaciones // --- Creación de sprites especiales --- void createItemText(int x, const std::shared_ptr &texture); // Crea texto animado para ítems @@ -295,17 +295,17 @@ class Game { void updateDemo(); // Actualiza lógica específica del modo demo // --- Recursos y renderizado --- - void setResources(); // Asigna texturas y animaciones a los objetos + void setResources(); // Asigna texturas y animaciones a los objetos void updateBackground(float deltaTime); // Actualiza elementos del fondo (time-based) - void fillCanvas(); // Renderiza elementos del área de juego en su textura - void updateHelper(); // Actualiza variables auxiliares de renderizado + void fillCanvas(); // Renderiza elementos del área de juego en su textura + void updateHelper(); // Actualiza variables auxiliares de renderizado // --- Sistema de audio --- - static void playMusic(); // Reproduce la música de fondo - void stopMusic() const; // Detiene la reproducción de música - static void pauseMusic(); // Pausa la música - static void resumeMusic(); // Retoma la música que eestaba pausada - void playSound(const std::string &name) const; // Reproduce un efecto de sonido específico + static void playMusic(const std::string &music_file, int loop = -1); // Reproduce la música de fondo + void stopMusic() const; // Detiene la reproducción de música + static void pauseMusic(); // Pausa la música + static void resumeMusic(); // Retoma la música que eestaba pausada + void playSound(const std::string &name) const; // Reproduce un efecto de sonido específico void sendPlayerToTheBack(const std::shared_ptr &player); // Mueve el jugador para pintarlo al fondo de la lista de jugadores void sendPlayerToTheFront(const std::shared_ptr &player); // Mueve el jugador para pintarlo el primero de la lista de jugadores