proposta 1 de versio RC2

This commit is contained in:
2025-08-17 10:54:45 +02:00
parent 8ddc5d94f1
commit cb0c3266d5
2 changed files with 18 additions and 17 deletions

View File

@@ -582,18 +582,19 @@ void Game::handleTabeHitEffects() {
// Maneja la colisión entre bala y globos // Maneja la colisión entre bala y globos
auto Game::checkBulletBalloonCollision(const std::shared_ptr<Bullet> &bullet) -> bool { auto Game::checkBulletBalloonCollision(const std::shared_ptr<Bullet> &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()) { if (!balloon->isEnabled() || balloon->isInvulnerable()) {
return false; continue;
} }
if (!checkCollision(balloon->getCollider(), bullet->getCollider())) { if (!checkCollision(balloon->getCollider(), bullet->getCollider())) {
return false; continue;
} }
processBalloonHit(bullet, balloon); processBalloonHit(bullet, balloon);
return true; return true;
}); }
return false;
} }
// Procesa el impacto en un globo // Procesa el impacto en un globo
@@ -622,9 +623,9 @@ void Game::handleItemDrop(const std::shared_ptr<Balloon> &balloon, const std::sh
} }
// Maneja la destrucción del globo y puntuación // Maneja la destrucción del globo y puntuación
void Game::handleBalloonDestruction(const std::shared_ptr<Balloon> &balloon, const std::shared_ptr<Player> &player) { void Game::handleBalloonDestruction(std::shared_ptr<Balloon> balloon, const std::shared_ptr<Player> &player) {
if (player->isPlaying()) { 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->addScore(SCORE, Options::settings.hi_score_table.back().score);
player->incScoreMultiplier(); player->incScoreMultiplier();
} }
@@ -873,7 +874,7 @@ void Game::handlePlayerCollision(std::shared_ptr<Player> &player, std::shared_pt
if (player->hasExtraHit()) { if (player->hasExtraHit()) {
// Lo pierde // Lo pierde
player->removeExtraHit(); 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"); playSound("coffee_out.wav");
screen_->shake(); screen_->shake();
} else { } else {
@@ -1198,7 +1199,7 @@ void Game::checkPlayersStatusPlaying() {
// Obtiene un jugador a partir de su "id" // Obtiene un jugador a partir de su "id"
auto Game::getPlayer(Player::Id id) -> std::shared_ptr<Player> { auto Game::getPlayer(Player::Id id) -> std::shared_ptr<Player> {
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()) { if (it != players_.end()) {
return *it; return *it;
@@ -1303,7 +1304,7 @@ void Game::handleFireInput(const std::shared_ptr<Player> &player, BulletType bul
switch (bullet_type) { switch (bullet_type) {
case BulletType::UP: case BulletType::UP:
player->setInput(Input::Action::FIRE_CENTER); 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); bullet.y = player->getPosY() - (Bullet::HEIGHT / 2);
break; break;
case BulletType::LEFT: case BulletType::LEFT:
@@ -1313,7 +1314,7 @@ void Game::handleFireInput(const std::shared_ptr<Player> &player, BulletType bul
break; break;
case BulletType::RIGHT: case BulletType::RIGHT:
player->setInput(Input::Action::FIRE_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(); bullet.y = player->getPosY();
break; break;
default: default:
@@ -1834,9 +1835,9 @@ void Game::sortPlayersByZOrder() {
// Procesar jugadores que van al fondo (se dibujan primero) // Procesar jugadores que van al fondo (se dibujan primero)
if (!players_to_put_at_back_.empty()) { if (!players_to_put_at_back_.empty()) {
for (auto &player : players_to_put_at_back_) { 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()) { if (it != players_.end() && it != players_.begin()) {
const std::shared_ptr<Player> &dying_player = *it; std::shared_ptr<Player> dying_player = *it;
players_.erase(it); players_.erase(it);
players_.insert(players_.begin(), dying_player); players_.insert(players_.begin(), dying_player);
} }
@@ -1847,9 +1848,9 @@ void Game::sortPlayersByZOrder() {
// Procesar jugadores que van al frente (se dibujan últimos) // Procesar jugadores que van al frente (se dibujan últimos)
if (!players_to_put_at_front_.empty()) { if (!players_to_put_at_front_.empty()) {
for (auto &player : players_to_put_at_front_) { 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) { if (it != players_.end() && it != players_.end() - 1) {
const std::shared_ptr<Player> &front_player = *it; std::shared_ptr<Player> front_player = *it;
players_.erase(it); players_.erase(it);
players_.push_back(front_player); players_.push_back(front_player);
} }
@@ -1909,7 +1910,7 @@ void Game::handleDebugEvents(const SDL_Event &event) {
} }
case SDLK_5: // 5.000 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)); createItemText(X, game_text_textures_.at(2));
break; break;
} }
@@ -1920,7 +1921,7 @@ void Game::handleDebugEvents(const SDL_Event &event) {
} }
case SDLK_7: // 100.000 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)); createItemText(X, game_text_textures_.at(6));
break; break;
} }

View File

@@ -253,7 +253,7 @@ class Game {
void createMessage(const std::vector<Path> &paths, const std::shared_ptr<Texture> &texture); // Crea mensaje con animación por ruta void createMessage(const std::vector<Path> &paths, const std::shared_ptr<Texture> &texture); // Crea mensaje con animación por ruta
// --- Sistema de globos y enemigos --- // --- Sistema de globos y enemigos ---
void handleBalloonDestruction(const std::shared_ptr<Balloon> &balloon, const std::shared_ptr<Player> &player); // Procesa destrucción de globo void handleBalloonDestruction(std::shared_ptr<Balloon> balloon, const std::shared_ptr<Player> &player); // Procesa destrucción de globo
void handleTabeHitEffects(); // Gestiona efectos al golpear a Tabe void handleTabeHitEffects(); // Gestiona efectos al golpear a Tabe
void checkAndUpdateBalloonSpeed(); // Ajusta velocidad de globos según progreso void checkAndUpdateBalloonSpeed(); // Ajusta velocidad de globos según progreso