From cb0c3266d5a0c04e83ef42a8be74d03a3afaeba6 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sun, 17 Aug 2025 10:54:45 +0200 Subject: [PATCH] proposta 1 de versio RC2 --- source/sections/game.cpp | 33 +++++++++++++++++---------------- source/sections/game.h | 2 +- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/source/sections/game.cpp b/source/sections/game.cpp index 4f4de40..4812d17 100644 --- a/source/sections/game.cpp +++ b/source/sections/game.cpp @@ -582,18 +582,19 @@ void Game::handleTabeHitEffects() { // Maneja la colisión entre bala y globos auto Game::checkBulletBalloonCollision(const std::shared_ptr &bullet) -> bool { - return std::ranges::any_of(balloon_manager_->getBalloons(), [this, &bullet](auto &balloon) { + for (auto &balloon : balloon_manager_->getBalloons()) { if (!balloon->isEnabled() || balloon->isInvulnerable()) { - return false; + continue; } if (!checkCollision(balloon->getCollider(), bullet->getCollider())) { - return false; + continue; } processBalloonHit(bullet, balloon); return true; - }); + } + return false; } // Procesa el impacto en un globo @@ -622,9 +623,9 @@ void Game::handleItemDrop(const std::shared_ptr &balloon, const std::sh } // Maneja la destrucción del globo y puntuación -void Game::handleBalloonDestruction(const std::shared_ptr &balloon, const std::shared_ptr &player) { +void Game::handleBalloonDestruction(std::shared_ptr balloon, const std::shared_ptr &player) { if (player->isPlaying()) { - auto const SCORE = balloon_manager_->popBalloon(balloon) * player->getScoreMultiplier() * difficulty_score_multiplier_; + auto const SCORE = balloon_manager_->popBalloon(std::move(balloon)) * player->getScoreMultiplier() * difficulty_score_multiplier_; player->addScore(SCORE, Options::settings.hi_score_table.back().score); player->incScoreMultiplier(); } @@ -873,7 +874,7 @@ void Game::handlePlayerCollision(std::shared_ptr &player, std::shared_pt if (player->hasExtraHit()) { // Lo pierde player->removeExtraHit(); - throwCoffee(player->getPosX() + (Player::getWidth() / 2), player->getPosY() + (Player::getHeight() / 2)); + throwCoffee(player->getPosX() + (Player::WIDTH / 2), player->getPosY() + (Player::HEIGHT / 2)); playSound("coffee_out.wav"); screen_->shake(); } else { @@ -1198,7 +1199,7 @@ void Game::checkPlayersStatusPlaying() { // Obtiene un jugador a partir de su "id" auto Game::getPlayer(Player::Id id) -> std::shared_ptr { - auto it = std::ranges::find_if(players_, [id](const auto &player) { return player->getId() == id; }); + auto it = std::find_if(players_.begin(), players_.end(), [id](const auto &player) { return player->getId() == id; }); if (it != players_.end()) { return *it; @@ -1303,7 +1304,7 @@ void Game::handleFireInput(const std::shared_ptr &player, BulletType bul switch (bullet_type) { case BulletType::UP: player->setInput(Input::Action::FIRE_CENTER); - bullet.x = 2 + player->getPosX() + (Player::getWidth() - Bullet::WIDTH) / 2; + bullet.x = 2 + player->getPosX() + (Player::WIDTH - Bullet::WIDTH) / 2; bullet.y = player->getPosY() - (Bullet::HEIGHT / 2); break; case BulletType::LEFT: @@ -1313,7 +1314,7 @@ void Game::handleFireInput(const std::shared_ptr &player, BulletType bul break; case BulletType::RIGHT: player->setInput(Input::Action::FIRE_RIGHT); - bullet.x = player->getPosX() + Player::getWidth() - (Bullet::WIDTH / 2); + bullet.x = player->getPosX() + Player::WIDTH - (Bullet::WIDTH / 2); bullet.y = player->getPosY(); break; default: @@ -1834,9 +1835,9 @@ void Game::sortPlayersByZOrder() { // Procesar jugadores que van al fondo (se dibujan primero) if (!players_to_put_at_back_.empty()) { for (auto &player : players_to_put_at_back_) { - auto it = std::ranges::find(players_, player); + auto it = std::find(players_.begin(), players_.end(), player); if (it != players_.end() && it != players_.begin()) { - const std::shared_ptr &dying_player = *it; + std::shared_ptr dying_player = *it; players_.erase(it); players_.insert(players_.begin(), dying_player); } @@ -1847,9 +1848,9 @@ void Game::sortPlayersByZOrder() { // Procesar jugadores que van al frente (se dibujan últimos) if (!players_to_put_at_front_.empty()) { for (auto &player : players_to_put_at_front_) { - auto it = std::ranges::find(players_, player); + auto it = std::find(players_.begin(), players_.end(), player); if (it != players_.end() && it != players_.end() - 1) { - const std::shared_ptr &front_player = *it; + std::shared_ptr front_player = *it; players_.erase(it); players_.push_back(front_player); } @@ -1909,7 +1910,7 @@ void Game::handleDebugEvents(const SDL_Event &event) { } case SDLK_5: // 5.000 { - const int X = players_.at(0)->getPosX() + ((Player::getWidth() - game_text_textures_[3]->getWidth()) / 2); + const int X = players_.at(0)->getPosX() + ((Player::WIDTH - game_text_textures_[3]->getWidth()) / 2); createItemText(X, game_text_textures_.at(2)); break; } @@ -1920,7 +1921,7 @@ void Game::handleDebugEvents(const SDL_Event &event) { } case SDLK_7: // 100.000 { - const int X = players_.at(0)->getPosX() + ((Player::getWidth() - game_text_textures_[3]->getWidth()) / 2); + const int X = players_.at(0)->getPosX() + ((Player::WIDTH - game_text_textures_[3]->getWidth()) / 2); createItemText(X, game_text_textures_.at(6)); break; } diff --git a/source/sections/game.h b/source/sections/game.h index fac00f9..a9861f8 100644 --- a/source/sections/game.h +++ b/source/sections/game.h @@ -253,7 +253,7 @@ class Game { void createMessage(const std::vector &paths, const std::shared_ptr &texture); // Crea mensaje con animación por ruta // --- Sistema de globos y enemigos --- - void handleBalloonDestruction(const std::shared_ptr &balloon, const std::shared_ptr &player); // Procesa destrucción de globo + void handleBalloonDestruction(std::shared_ptr balloon, const std::shared_ptr &player); // Procesa destrucción de globo void handleTabeHitEffects(); // Gestiona efectos al golpear a Tabe void checkAndUpdateBalloonSpeed(); // Ajusta velocidad de globos según progreso