clang-tidy readability-function-cognitive-complexity

This commit is contained in:
2025-07-20 15:24:47 +02:00
parent ca99f7be34
commit cb4e4b450d
20 changed files with 315 additions and 434 deletions

View File

@@ -90,10 +90,11 @@ Game::Game(int player_id, int current_stage, bool demo)
#ifdef DEBUG
// Si se empieza en una fase que no es la primera
if (!demo_.enabled)
if (!demo_.enabled) {
for (int i = 0; i < Stage::number; ++i) {
Stage::total_power += Stage::get(i).power_to_complete;
}
}
#endif
}
@@ -184,7 +185,7 @@ void Game::updateHiScore() {
hi_score_.name.clear();
// Si se supera la máxima puntuación emite sonido
if (hi_score_achieved_ == false) {
if (!hi_score_achieved_) {
hi_score_achieved_ = true;
playSound("hi_score_achieved.wav");
}
@@ -299,7 +300,7 @@ void Game::updateGameStateGameOver() {
if (fade_out_->isEnabled()) {
if (Options::audio.enabled) {
const float VOL = static_cast<float>(64 * (100 - fade_out_->getValue())) / 100.0f;
const float VOL = static_cast<float>(64 * (100 - fade_out_->getValue())) / 100.0F;
Audio::get()->setSoundVolume(static_cast<int>(VOL), Audio::Group::GAME);
}
}
@@ -353,13 +354,14 @@ void Game::updateGameStateCompleted() {
createMessage({paths_.at(4), paths_.at(5)}, Resource::get()->getTexture("game_text_congratulations"));
createMessage({paths_.at(6), paths_.at(7)}, Resource::get()->getTexture("game_text_1000000_points"));
for (auto &player : players_)
for (auto &player : players_) {
if (player->isPlaying()) {
player->addScore(1000000);
player->setPlayingState(PlayerState::CELEBRATING);
} else {
player->setPlayingState(PlayerState::GAME_OVER);
}
}
updateHiScore();
}
@@ -374,7 +376,7 @@ void Game::updateGameStateCompleted() {
}
// Si los jugadores ya no estan y no quedan mensajes en pantalla
if (allPlayersAreGameOver() && path_sprites_.size() == 0) {
if (allPlayersAreGameOver() && path_sprites_.empty()) {
setState(GameState::GAME_OVER);
}
@@ -395,8 +397,9 @@ void Game::checkState() {
// Destruye todos los items
void Game::destroyAllItems() {
for (auto &item : items_)
for (auto &item : items_) {
item->disable();
}
}
// Comprueba la colisión entre el jugador y los globos activos
@@ -414,8 +417,9 @@ auto Game::checkPlayerBalloonCollision(std::shared_ptr<Player> &player) -> std::
// Comprueba la colisión entre el jugador y los items
void Game::checkPlayerItemCollision(std::shared_ptr<Player> &player) {
if (!player->isPlaying())
if (!player->isPlaying()) {
return;
}
for (auto &item : items_) {
if (item->isEnabled()) {
@@ -492,7 +496,7 @@ void Game::checkPlayerItemCollision(std::shared_ptr<Player> &player) {
void Game::checkBulletCollision() {
for (auto &bullet : bullets_) {
// Comprueba la colisión con el Tabe
if (bullet->isEnabled() && tabe_->isEnabled())
if (bullet->isEnabled() && tabe_->isEnabled()) {
if (checkCollision(bullet->getCollider(), tabe_->getCollider())) {
tabe_->setState(TabeState::HIT);
bullet->disable();
@@ -508,6 +512,7 @@ void Game::checkBulletCollision() {
}
break;
}
}
// Comprueba la colisión con los globos
for (auto &balloon : balloon_manager_->getBalloons()) {
@@ -559,8 +564,9 @@ void Game::updateBullets() {
// Pinta las balas activas
void Game::renderBullets() {
for (auto &bullet : bullets_)
for (auto &bullet : bullets_) {
bullet->render();
}
}
// Crea un objeto bala
@@ -570,15 +576,18 @@ void Game::createBullet(int x, int y, BulletType kind, bool powered_up, int owne
// Vacia el vector de balas
void Game::freeBullets() {
if (!bullets_.empty())
for (int i = bullets_.size() - 1; i >= 0; --i)
if (!bullets_[i]->isEnabled())
if (!bullets_.empty()) {
for (int i = bullets_.size() - 1; i >= 0; --i) {
if (!bullets_[i]->isEnabled()) {
bullets_.erase(bullets_.begin() + i);
}
}
}
}
// Actualiza los items
void Game::updateItems() {
for (auto &item : items_)
for (auto &item : items_) {
if (item->isEnabled()) {
item->update();
if (item->isOnFloor()) {
@@ -586,12 +595,14 @@ void Game::updateItems() {
screen_->shake(1, 2, 4);
}
}
}
}
// Pinta los items activos
void Game::renderItems() {
for (auto &item : items_)
for (auto &item : items_) {
item->render();
}
}
// Devuelve un item al azar y luego segun sus probabilidades
@@ -657,10 +668,13 @@ void Game::createItem(ItemType type, float x, float y) {
// Vacia el vector de items
void Game::freeItems() {
if (!items_.empty())
for (int i = items_.size() - 1; i >= 0; --i)
if (!items_[i]->isEnabled())
if (!items_.empty()) {
for (int i = items_.size() - 1; i >= 0; --i) {
if (!items_[i]->isEnabled()) {
items_.erase(items_.begin() + i);
}
}
}
}
// Crea un objeto PathSprite
@@ -699,18 +713,24 @@ void Game::createMessage(const std::vector<Path> &paths, std::shared_ptr<Texture
// Vacia el vector de smartsprites
void Game::freeSmartSprites() {
if (!smart_sprites_.empty())
for (int i = smart_sprites_.size() - 1; i >= 0; --i)
if (smart_sprites_[i]->hasFinished())
if (!smart_sprites_.empty()) {
for (int i = smart_sprites_.size() - 1; i >= 0; --i) {
if (smart_sprites_[i]->hasFinished()) {
smart_sprites_.erase(smart_sprites_.begin() + i);
}
}
}
}
// Vacia el vector de pathsprites
void Game::freePathSprites() {
if (!path_sprites_.empty())
for (int i = path_sprites_.size() - 1; i >= 0; --i)
if (path_sprites_[i]->hasFinished())
if (!path_sprites_.empty()) {
for (int i = path_sprites_.size() - 1; i >= 0; --i) {
if (path_sprites_[i]->hasFinished()) {
path_sprites_.erase(path_sprites_.begin() + i);
}
}
}
}
// Crea un SpriteSmart para arrojar el item café al recibir un impacto
@@ -721,10 +741,10 @@ void Game::throwCoffee(int x, int y) {
smart_sprites_.back()->setPosY(y - 8);
smart_sprites_.back()->setWidth(param.game.item_size);
smart_sprites_.back()->setHeight(param.game.item_size);
smart_sprites_.back()->setVelX(-1.0f + ((rand() % 5) * 0.5f));
smart_sprites_.back()->setVelY(-4.0f);
smart_sprites_.back()->setAccelX(0.0f);
smart_sprites_.back()->setAccelY(0.2f);
smart_sprites_.back()->setVelX(-1.0F + ((rand() % 5) * 0.5F));
smart_sprites_.back()->setVelY(-4.0F);
smart_sprites_.back()->setAccelX(0.0F);
smart_sprites_.back()->setAccelY(0.2F);
smart_sprites_.back()->setDestX(x + (smart_sprites_.back()->getVelX() * 50));
smart_sprites_.back()->setDestY(param.game.height + 1);
smart_sprites_.back()->setEnabled(true);
@@ -865,14 +885,14 @@ void Game::updateBackground() {
}
// Calcula la velocidad en función de los globos explotados y el total de globos a explotar para acabar el juego
constexpr float CLOUDS_INITIAL_SPEED = 0.05f;
constexpr float CLOUDS_FINAL_SPEED = 2.00f - CLOUDS_INITIAL_SPEED;
constexpr float CLOUDS_INITIAL_SPEED = 0.05F;
constexpr float CLOUDS_FINAL_SPEED = 2.00F - CLOUDS_INITIAL_SPEED;
const float CLOUDS_SPEED = (-CLOUDS_INITIAL_SPEED) + (-CLOUDS_FINAL_SPEED * (static_cast<float>(Stage::total_power) / total_power_to_complete_game_));
background_->setCloudsSpeed(CLOUDS_SPEED);
// Calcula la transición de los diferentes fondos
constexpr float NUM = 1525.0f; // total_power_to_complete div 4
const float GRADIENT_NUMBER = std::min(Stage::total_power / NUM, 3.0f);
constexpr float NUM = 1525.0F; // total_power_to_complete div 4
const float GRADIENT_NUMBER = std::min(Stage::total_power / NUM, 3.0F);
const float PERCENT = GRADIENT_NUMBER - static_cast<int>(GRADIENT_NUMBER);
background_->setGradientNumber(static_cast<int>(GRADIENT_NUMBER));
background_->setTransition(PERCENT);
@@ -889,7 +909,7 @@ void Game::updateBackground() {
// Dibuja los elementos de la zona de juego en su textura
void Game::fillCanvas() {
// Dibujamos el contenido de la zona de juego en su textura
auto temp = SDL_GetRenderTarget(renderer_);
auto *temp = SDL_GetRenderTarget(renderer_);
SDL_SetRenderTarget(renderer_, canvas_);
// Dibuja los objetos
@@ -1024,8 +1044,9 @@ void Game::updateHelper() {
// Comprueba si todos los jugadores han terminado de jugar
auto Game::allPlayersAreWaitingOrGameOver() -> bool {
auto success = true;
for (const auto &player : players_)
for (const auto &player : players_) {
success &= player->isWaiting() || player->isGameOver();
}
return success;
}
@@ -1033,8 +1054,9 @@ auto Game::allPlayersAreWaitingOrGameOver() -> bool {
// Comprueba si todos los jugadores han terminado de jugar
auto Game::allPlayersAreGameOver() -> bool {
auto success = true;
for (const auto &player : players_)
for (const auto &player : players_) {
success &= player->isGameOver();
}
return success;
}
@@ -1042,8 +1064,9 @@ auto Game::allPlayersAreGameOver() -> bool {
// Comprueba si todos los jugadores han terminado de jugar
auto Game::allPlayersAreNotPlaying() -> bool {
auto success = true;
for (const auto &player : players_)
for (const auto &player : players_) {
success &= !player->isPlaying();
}
return success;
}
@@ -1190,7 +1213,7 @@ void Game::checkPauseInput() {
// Gestiona las entradas de los jugadores en el modo demo para saltarse la demo.
void Game::demoHandlePassInput() {
if (input_->checkAnyButton()) {
if (input_->checkAnyButton() != 0) {
Section::name = Section::Name::TITLE; // Salir del modo demo y regresar al menú principal.
Section::attract_mode = Section::AttractMode::TITLE_TO_DEMO; // El juego volverá a mostrar la demo
return;
@@ -1423,8 +1446,9 @@ void Game::initDemo(int player_id) {
// Asigna cafes a los jugadores
for (auto &player : players_) {
for (int i = 0; i < rand() % 3; ++i)
for (int i = 0; i < rand() % 3; ++i) {
player->giveExtraHit();
}
player->setInvulnerable(true);
}
@@ -1472,21 +1496,21 @@ void Game::initDifficultyVars() {
switch (difficulty_) {
case Options::DifficultyCode::EASY: {
balloon_manager_->setDefaultBalloonSpeed(BALLOON_SPEED[0]);
difficulty_score_multiplier_ = 0.5f;
difficulty_score_multiplier_ = 0.5F;
scoreboard_->setColor(param.scoreboard.easy_color);
break;
}
case Options::DifficultyCode::NORMAL: {
balloon_manager_->setDefaultBalloonSpeed(BALLOON_SPEED[0]);
difficulty_score_multiplier_ = 1.0f;
difficulty_score_multiplier_ = 1.0F;
scoreboard_->setColor(param.scoreboard.normal_color);
break;
}
case Options::DifficultyCode::HARD: {
balloon_manager_->setDefaultBalloonSpeed(BALLOON_SPEED[4]);
difficulty_score_multiplier_ = 1.5f;
difficulty_score_multiplier_ = 1.5F;
scoreboard_->setColor(param.scoreboard.hard_color);
break;
}
@@ -1530,7 +1554,7 @@ void Game::playMusic() {
}
// Detiene la música
void Game::stopMusic() {
void Game::stopMusic() const {
if (!demo_.enabled) {
Audio::get()->stopMusic();
}
@@ -1539,7 +1563,7 @@ void Game::stopMusic() {
// Actualiza las variables durante el modo demo
void Game::updateDemo() {
if (demo_.enabled) {
balloon_manager_->setCreationTimeEnabled((balloon_manager_->getNumBalloons() == 0) ? false : true);
balloon_manager_->setCreationTimeEnabled(balloon_manager_->getNumBalloons() != 0);
// Actualiza ambos fades
fade_in_->update();
@@ -1618,7 +1642,7 @@ void Game::updateGameStateShowingGetReadyMessage() {
updateScoreboard();
updateBackground();
freePathSprites();
if (path_sprites_.size() == 0) {
if (path_sprites_.empty()) {
setState(GameState::PLAYING);
}
if (counter_ == 100) {
@@ -1692,11 +1716,12 @@ void Game::evaluateAndSetMenace() {
// Actualiza la velocidad de los globos en funcion del poder acumulado de la fase
void Game::checkAndUpdateBalloonSpeed() {
if (difficulty_ != Options::DifficultyCode::NORMAL)
if (difficulty_ != Options::DifficultyCode::NORMAL) {
return;
}
const float PERCENT = static_cast<float>(Stage::power) / Stage::get(Stage::number).power_to_complete;
constexpr std::array<float, 4> THRESHOLDS = {0.2f, 0.4f, 0.6f, 0.8f};
constexpr std::array<float, 4> THRESHOLDS = {0.2F, 0.4F, 0.6F, 0.8F};
for (size_t i = 0; i < std::size(THRESHOLDS); ++i) {
if (balloon_manager_->getBalloonSpeed() == BALLOON_SPEED[i] && PERCENT > THRESHOLDS[i]) {
@@ -1712,18 +1737,20 @@ void Game::setState(GameState state) {
counter_ = 0;
}
void Game::playSound(const std::string &name) {
if (demo_.enabled)
void Game::playSound(const std::string &name) const {
if (demo_.enabled) {
return;
}
static auto audio_ = Audio::get();
static auto *audio_ = Audio::get();
audio_->playSound(name);
}
// Organiza los jugadores para que los vivos se pinten sobre los muertos
void Game::movePlayersToFront() {
if (players_to_reorder_.empty())
if (players_to_reorder_.empty()) {
return;
}
for (auto &player : players_to_reorder_) {
auto it = std::find(players_.begin(), players_.end(), player);
@@ -1738,8 +1765,9 @@ void Game::movePlayersToFront() {
// Comprueba si está activo el menu de servicio para poner el juego en pausa
void Game::checkServiceMenu() {
if (demo_.enabled)
if (demo_.enabled) {
return;
}
static bool was_paused_before_service_menu_ = false;
static bool service_menu_was_active_ = false;
@@ -1761,7 +1789,7 @@ void Game::checkServiceMenu() {
#ifdef DEBUG
// Comprueba los eventos en el modo DEBUG
void Game::checkDebugEvents(const SDL_Event &event) {
if (event.type == SDL_EVENT_KEY_DOWN && event.key.repeat == 0) {
if (event.type == SDL_EVENT_KEY_DOWN && static_cast<int>(event.key.repeat) == 0) {
switch (event.key.key) {
case SDLK_1: // Crea una powerball
{