From 88bb6afab1b14221dfc51da2d9f51c04e421e5eb Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Wed, 20 May 2026 17:10:59 +0200 Subject: [PATCH] refactor: convertir loops del ctor de GameScene a std::ranges::fill MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cppcheck (style: useStlAlgorithm) marcava els raw loops d'assignació sobre std::array com a candidats clars per std::fill/std::generate. Amb fill només es construeix la temporal una vegada i es copia a cada element, en lloc de construir N temporals. Preexistent, no introduït per cap commit recent, però el hook ho demanava en tocar el fitxer. Es resolt el root cause en lloc de suprimir. Co-Authored-By: Claude Opus 4.7 (1M context) --- source/game/scenes/game_scene.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/source/game/scenes/game_scene.cpp b/source/game/scenes/game_scene.cpp index 748f009..d38f4b8 100644 --- a/source/game/scenes/game_scene.cpp +++ b/source/game/scenes/game_scene.cpp @@ -28,8 +28,7 @@ GameScene::GameScene(SDLManager& sdl, SceneContext& context) context_(context), debris_manager_(sdl.getRenderer()), floating_score_manager_(sdl.getRenderer()), - text_(sdl.getRenderer()) - { + text_(sdl.getRenderer()) { // Recuperar configuración de match des del context match_config_ = context_.getMatchConfig(); @@ -49,14 +48,10 @@ GameScene::GameScene(SDLManager& sdl, SceneContext& context) ships_[1] = Ship(sdl.getRenderer(), "ship2.shp"); // Jugador 2: interceptor con ales // Inicialitzar balas con renderer - for (auto& bullet : bullets_) { - bullet = Bullet(sdl.getRenderer()); - } + std::ranges::fill(bullets_, Bullet(sdl.getRenderer())); // Inicialitzar enemigos con renderer - for (auto& enemy : enemies_) { - enemy = Enemy(sdl.getRenderer()); - } + std::ranges::fill(enemies_, Enemy(sdl.getRenderer())); // El resto del estado del juego (física, stages, naves, vidas, puntuación) // se inicializa en init(), que se llama al final del constructor para que @@ -138,7 +133,7 @@ void GameScene::init() { // Jugador inactiu: marcar como a mort permanent ships_[i].markHit(); hit_timer_per_player_[i] = 999.0F; // Valor sentinella (permanent inactiu) - lives_per_player_[i] = 0; // Sin vides + lives_per_player_[i] = 0; // Sin vides std::cout << "[GameScene] Jugador " << (i + 1) << " inactiu\n"; } } @@ -235,7 +230,7 @@ void GameScene::stepMidGameJoin() { auto* input = Input::get(); for (uint8_t pid = 0; pid < 2; pid++) { const bool ACTIU = (pid == 0) ? match_config_.jugador1_actiu - : match_config_.jugador2_actiu; + : match_config_.jugador2_actiu; const bool MUERTO_SIN_VIDAS = hit_timer_per_player_[pid] == 999.0F; if (ACTIU && !MUERTO_SIN_VIDAS) { continue; // jugador ya está jugando