From a342d79b86ed83d89377107097c68deb962d8587 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 22 May 2026 19:51:40 +0200 Subject: [PATCH] feat(starfield): mou estrelles amb la mitjana de velocitats de les naus --- source/game/scenes/game_scene.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/source/game/scenes/game_scene.cpp b/source/game/scenes/game_scene.cpp index 6aeeb18..e0282df 100644 --- a/source/game/scenes/game_scene.cpp +++ b/source/game/scenes/game_scene.cpp @@ -214,9 +214,24 @@ void GameScene::stepPhysics(float delta_time) { bullet.postUpdate(delta_time); } trail_manager_.update(delta_time, ships_); - // De moment world_velocity = {0, 0} → estrelles quietes; al ser-hi l'estat - // del wraparound es resol normalment quan activem el moviment. - starfield_parallax_.update(delta_time, Vec2{.x = 0.0F, .y = 0.0F}); + // Starfield: world_velocity = -mitjana_de_naus_actives. Si dues naus van en + // sentits oposats, es cancel·len → estrelles quietes (cap jugador "guanya"). + // Si només n'hi ha una activa, segueix la seva velocitat. + Vec2 ship_vel_avg{.x = 0.0F, .y = 0.0F}; + int n_active = 0; + for (const auto& ship : ships_) { + if (ship.isActive()) { + const Vec2 V = ship.getVelocityVector(); + ship_vel_avg.x += V.x; + ship_vel_avg.y += V.y; + n_active++; + } + } + if (n_active > 0) { + ship_vel_avg.x /= static_cast(n_active); + ship_vel_avg.y /= static_cast(n_active); + } + starfield_parallax_.update(delta_time, Vec2{.x = -ship_vel_avg.x, .y = -ship_vel_avg.y}); playfield_.update(delta_time); border_.update(delta_time);