clang-tidy readability-function-cognitive-complexity
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user