From c1c5774406c9f2b7004646bb34b76f54b1a5976d Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Tue, 2 Dec 2025 17:27:18 +0100 Subject: [PATCH] retocs disseny en LOGO --- data/sounds/explosion.wav | Bin 6760 -> 19007 bytes data/sounds/logo.wav | Bin 3281 -> 55649 bytes source/core/rendering/sdl_manager.cpp | 10 ++--- source/core/rendering/sdl_manager.hpp | 8 ++-- source/game/constants.hpp | 3 +- source/game/entities/bala.cpp | 5 ++- source/game/entities/enemic.cpp | 10 ++++- source/game/entities/nau.cpp | 5 ++- source/game/escenes/escena_joc.cpp | 10 ++--- source/game/escenes/escena_joc.hpp | 4 +- source/game/escenes/escena_logo.cpp | 55 ++++++++++++++++++-------- source/game/escenes/escena_logo.hpp | 13 +++--- source/game/options.cpp | 3 +- 13 files changed, 79 insertions(+), 47 deletions(-) diff --git a/data/sounds/explosion.wav b/data/sounds/explosion.wav index d86a0035f223f3aefcccb03ce6bda72c29c1c53b..f05e108baac21c76089e756a63853b321fff67b5 100644 GIT binary patch literal 19007 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 N5&tWQ7?7F{{{u3UT8#hz diff --git a/data/sounds/logo.wav b/data/sounds/logo.wav index 8e5d880189fd20a4b5186c6a2f5801aff30b7cb6..f7dca81247f4cbcb7356c00b978acb0a6f0ec184 100644 GIT binary patch literal 55649 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 z

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 literal 3281 zcmeH}SyxhF6o!v?U3Ae;=${w~Bq}N*qM;^f+GK-SN;#%bq9P)opol{_D>w_tD2h{> z_J`X0OdJGTtp>VbvCbW9J?H)Q^X~5yiG;$Vn*<@}l?ZC<8*kqt2qFW1{3U{XGKd>Q zjj~bcfd54IBjI4c=k@GtZLY7moXd*~bF+>w(~}e9wo$8P*lZdy3=Zh}d$m2EKdHOB zK6bRXwYGeC-`w=>ZR4AU*RNi_sDJ+K>66EGwU275A1bRJR8~}!EAE$-%1cUQ#nPf8 zNnt^LzBn&8H%FA6eNQM5@Uyb+@_2VLGta-C9337+!l8g~*R!*|xv{qDTwYq3pPfOz z-8N>mjF?SE!=PT*-`5L#4e&cVNWQAM=^8$~0Lh0J0KOFY1vFm-e4&8P2Y&F|+3Cp< zncna7x-tE#YlTif#iln78T52|O)NdYuTNi2rG9#g{$42P z-}Sn;w>H*SohwU=^K&zf>8T0(_}HjrWY}aJ8q^O!axElRcSG{_HaK}2e)Z(3qenI# zy{s7Fg$U0BxCoNN(L-|EWn6G_?5PUg3v3v96h=-dw@oR>j(i+P&MMc(DA!3Tr~1jE z)5?(}Pf!kmXQ?hP5_JRJS@xgmCXcZh-B5Qt^t$iJhJi=+LIMA-$4#lu8MqAxPN|Lq zN7dD+dOKDP2cEQQ*tKM;(*q~jGGt$o4Qj?=CzFk2$7D;W`7g=_Y!p2jC%TJePon5n zMsyvB-ouLC%8K3)w_=zb1G&i^!x5cs87+F~0z^NChVO-gRKuZUoQBhEGu3d0-GwD< zZDC4=!RhtJ*>B|vYQH5m9N8e7GrnXg-7Z*gEZP6q>rikk85W$`>ExZlmh86+PK(Yd z8TU>}VZoE$C+UK7Z?bg3|LNyLy5Q_`*}xB0cDekW8$4Zb?&o64Z*XyeL@JY)DJrX~ O$Lv(current_width_) / Defaults::Window::WIDTH; zoom_factor_ = std::max(Defaults::Window::MIN_ZOOM, - std::min(new_zoom, max_zoom_)); + std::min(new_zoom, max_zoom_)); // Update windowed cache (if not in fullscreen) if (!is_fullscreen_) { diff --git a/source/core/rendering/sdl_manager.hpp b/source/core/rendering/sdl_manager.hpp index 7068af3..3cfbd07 100644 --- a/source/core/rendering/sdl_manager.hpp +++ b/source/core/rendering/sdl_manager.hpp @@ -63,10 +63,10 @@ class SDLManager { int max_height_; // [ZOOM SYSTEM] - float zoom_factor_; // Current zoom (0.5x to max_zoom_) - int windowed_width_; // Saved size before fullscreen - int windowed_height_; // Saved size before fullscreen - float max_zoom_; // Maximum zoom (calculated from display) + float zoom_factor_; // Current zoom (0.5x to max_zoom_) + int windowed_width_; // Saved size before fullscreen + int windowed_height_; // Saved size before fullscreen + float max_zoom_; // Maximum zoom (calculated from display) // [NUEVO] Funcions internes void calculateMaxWindowSize(); // Llegir resolució del display diff --git a/source/game/constants.hpp b/source/game/constants.hpp index 42453dc..c87700b 100644 --- a/source/game/constants.hpp +++ b/source/game/constants.hpp @@ -41,8 +41,7 @@ inline void obtenir_limits_zona(float& min_x, float& max_x, float& min_y, float& } // Obtenir límits segurs (compensant radi de l'entitat) -inline void obtenir_limits_zona_segurs(float radi, float& min_x, float& max_x, - float& min_y, float& max_y) { +inline void obtenir_limits_zona_segurs(float radi, float& min_x, float& max_x, float& min_y, float& max_y) { const auto& zona = Defaults::Zones::PLAYAREA; constexpr float MARGE_SEGURETAT = 10.0f; // Safety margin diff --git a/source/game/entities/bala.cpp b/source/game/entities/bala.cpp index f77d594..3a97017 100644 --- a/source/game/entities/bala.cpp +++ b/source/game/entities/bala.cpp @@ -91,7 +91,10 @@ void Bala::mou(float delta_time) { // CORRECCIÓ: Usar límits segurs amb radi de la bala float min_x, max_x, min_y, max_y; Constants::obtenir_limits_zona_segurs(Defaults::Entities::BULLET_RADIUS, - min_x, max_x, min_y, max_y); + min_x, + max_x, + min_y, + max_y); if (centre_.x < min_x || centre_.x > max_x || centre_.y < min_y || centre_.y > max_y) { diff --git a/source/game/entities/enemic.cpp b/source/game/entities/enemic.cpp index 5040f05..efe9e18 100644 --- a/source/game/entities/enemic.cpp +++ b/source/game/entities/enemic.cpp @@ -40,7 +40,10 @@ void Enemic::inicialitzar() { // Calcular rangs segurs amb radi de l'enemic float min_x, max_x, min_y, max_y; Constants::obtenir_limits_zona_segurs(Defaults::Entities::ENEMY_RADIUS, - min_x, max_x, min_y, max_y); + min_x, + max_x, + min_y, + max_y); // Spawn aleatori dins dels límits segurs int range_x = static_cast(max_x - min_x); @@ -102,7 +105,10 @@ void Enemic::mou(float delta_time) { // Obtenir límits segurs compensant el radi de l'enemic float min_x, max_x, min_y, max_y; Constants::obtenir_limits_zona_segurs(Defaults::Entities::ENEMY_RADIUS, - min_x, max_x, min_y, max_y); + min_x, + max_x, + min_y, + max_y); // Lògica Pascal: Actualitza Y si dins, sinó ajusta angle aleatòriament // if (dy>marge_dalt) and (dy= i <=) if (dy >= min_y && dy <= max_y) { diff --git a/source/game/escenes/escena_joc.cpp b/source/game/escenes/escena_joc.cpp index e065a52..f3fe9b3 100644 --- a/source/game/escenes/escena_joc.cpp +++ b/source/game/escenes/escena_joc.cpp @@ -293,11 +293,11 @@ void EscenaJoc::detectar_col·lisions_bales_enemics() { // 2. Crear explosió de fragments debris_manager_.explotar( - enemic.get_forma(), // Forma vectorial del pentàgon - pos_enemic, // Posició central - 0.0f, // Angle (enemic té rotació interna) - 1.0f, // Escala normal - VELOCITAT_EXPLOSIO // 50 px/s (explosió suau) + enemic.get_forma(), // Forma vectorial del pentàgon + pos_enemic, // Posició central + 0.0f, // Angle (enemic té rotació interna) + 1.0f, // Escala normal + VELOCITAT_EXPLOSIO // 50 px/s (explosió suau) ); // 3. Desactivar bala diff --git a/source/game/escenes/escena_joc.hpp b/source/game/escenes/escena_joc.hpp index cad086f..a85c59d 100644 --- a/source/game/escenes/escena_joc.hpp +++ b/source/game/escenes/escena_joc.hpp @@ -50,8 +50,8 @@ class EscenaJoc { // Funcions privades void tocado(); void detectar_col·lisions_bales_enemics(); // Col·lisions bala-enemic - void dibuixar_marges() const; // Dibuixar vores de la zona de joc - void dibuixar_marcador(); // Dibuixar marcador de puntuació + void dibuixar_marges() const; // Dibuixar vores de la zona de joc + void dibuixar_marcador(); // Dibuixar marcador de puntuació }; #endif // ESCENA_JOC_HPP diff --git a/source/game/escenes/escena_logo.cpp b/source/game/escenes/escena_logo.cpp index 1bae040..28d3c5b 100644 --- a/source/game/escenes/escena_logo.cpp +++ b/source/game/escenes/escena_logo.cpp @@ -6,12 +6,14 @@ #include #include #include +#include +#include -#include "../../core/audio/audio.hpp" -#include "../../core/graphics/shape_loader.hpp" -#include "../../core/rendering/shape_renderer.hpp" -#include "../../core/system/gestor_escenes.hpp" -#include "../../core/system/global_events.hpp" +#include "core/audio/audio.hpp" +#include "core/graphics/shape_loader.hpp" +#include "core/rendering/shape_renderer.hpp" +#include "core/system/gestor_escenes.hpp" +#include "core/system/global_events.hpp" // Helper: calcular el progrés individual d'una lletra // en funció del progrés global (efecte seqüencial) @@ -181,6 +183,15 @@ void EscenaLogo::canviar_estat(EstatAnimacio nou_estat) { if (nou_estat == EstatAnimacio::EXPLOSION) { lletra_explosio_index_ = 0; temps_des_ultima_explosio_ = 0.0f; + + // Generar ordre aleatori d'explosions + ordre_explosio_.clear(); + for (size_t i = 0; i < lletres_.size(); i++) { + ordre_explosio_.push_back(i); + } + std::random_device rd; + std::mt19937 g(rd()); + std::shuffle(ordre_explosio_.begin(), ordre_explosio_.end(), g); } std::cout << "[EscenaLogo] Canvi a estat: " << static_cast(nou_estat) @@ -198,8 +209,9 @@ void EscenaLogo::actualitzar_explosions(float delta_time) { // Comprovar si és el moment d'explotar la següent lletra if (temps_des_ultima_explosio_ >= DELAY_ENTRE_EXPLOSIONS) { if (lletra_explosio_index_ < lletres_.size()) { - // Explotar lletra actual - const auto& lletra = lletres_[lletra_explosio_index_]; + // Explotar lletra actual (en ordre aleatori) + size_t index_actual = ordre_explosio_[lletra_explosio_index_]; + const auto& lletra = lletres_[index_actual]; debris_manager_->explotar( lletra.forma, // Forma a explotar @@ -335,17 +347,26 @@ void EscenaLogo::dibuixar() { // EXPLOSION: Dibuixar només lletres que encara no han explotat if (estat_actual_ == EstatAnimacio::EXPLOSION) { - for (size_t i = lletra_explosio_index_; i < lletres_.size(); i++) { - const auto& lletra = lletres_[i]; + // Crear conjunt de lletres ja explotades + std::set explotades; + for (size_t i = 0; i < lletra_explosio_index_; i++) { + explotades.insert(ordre_explosio_[i]); + } - Rendering::render_shape( - sdl_.obte_renderer(), - lletra.forma, - lletra.posicio, - 0.0f, - ESCALA_FINAL, - true, - 1.0f); + // Dibuixar només lletres que NO han explotat + for (size_t i = 0; i < lletres_.size(); i++) { + if (explotades.find(i) == explotades.end()) { + const auto& lletra = lletres_[i]; + + Rendering::render_shape( + sdl_.obte_renderer(), + lletra.forma, + lletra.posicio, + 0.0f, + ESCALA_FINAL, + true, + 1.0f); + } } } diff --git a/source/game/escenes/escena_logo.hpp b/source/game/escenes/escena_logo.hpp index 21c0668..40564a8 100644 --- a/source/game/escenes/escena_logo.hpp +++ b/source/game/escenes/escena_logo.hpp @@ -39,8 +39,9 @@ class EscenaLogo { std::unique_ptr debris_manager_; // Seguiment d'explosions seqüencials - size_t lletra_explosio_index_; // Índex de la següent lletra a explotar - float temps_des_ultima_explosio_; // Temps des de l'última explosió + size_t lletra_explosio_index_; // Índex de la següent lletra a explotar + float temps_des_ultima_explosio_; // Temps des de l'última explosió + std::vector ordre_explosio_; // Ordre aleatori d'índexs de lletres // Estructura per a cada lletra del logo struct LetraLogo { @@ -60,15 +61,15 @@ class EscenaLogo { static constexpr float DURACIO_ZOOM = 4.0f; // Duració del zoom (segons) static constexpr float DURACIO_POST_ANIMATION = 3.0f; // Duració POST_ANIMATION (logo complet) static constexpr float DURACIO_POST_EXPLOSION = 3.0f; // Duració POST_EXPLOSION (espera final) - static constexpr float DELAY_ENTRE_EXPLOSIONS = 0.15f; // Temps entre explosions de lletres - static constexpr float VELOCITAT_EXPLOSIO = 80.0f; // Velocitat base fragments (px/s) + static constexpr float DELAY_ENTRE_EXPLOSIONS = 0.1f; // Temps entre explosions de lletres + static constexpr float VELOCITAT_EXPLOSIO = 240.0f; // Velocitat base fragments (px/s) static constexpr float ESCALA_INICIAL = 0.1f; // Escala inicial (10%) static constexpr float ESCALA_FINAL = 0.8f; // Escala final (80%) static constexpr float ESPAI_ENTRE_LLETRES = 10.0f; // Espaiat entre lletres // Constants d'animació seqüencial - static constexpr float THRESHOLD_LETRA = 0.6f; // Umbral per activar següent lletra (0.0-1.0) - static constexpr float ORIGEN_ZOOM_X = Defaults::Game::WIDTH * 0.5f; // Punt inicial X del zoom + static constexpr float THRESHOLD_LETRA = 0.6f; // Umbral per activar següent lletra (0.0-1.0) + static constexpr float ORIGEN_ZOOM_X = Defaults::Game::WIDTH * 0.5f; // Punt inicial X del zoom static constexpr float ORIGEN_ZOOM_Y = Defaults::Game::HEIGHT * 0.4f; // Punt inicial Y del zoom // Mètodes privats diff --git a/source/game/options.cpp b/source/game/options.cpp index 5f4e285..46c4e3c 100644 --- a/source/game/options.cpp +++ b/source/game/options.cpp @@ -94,7 +94,8 @@ static void loadWindowConfigFromYaml(const fkyaml::node& yaml) { try { auto val = win["zoom_factor"].get_value(); window.zoom_factor = (val >= Defaults::Window::MIN_ZOOM && val <= 10.0f) - ? val : Defaults::Window::BASE_ZOOM; + ? val + : Defaults::Window::BASE_ZOOM; } catch (...) { window.zoom_factor = Defaults::Window::BASE_ZOOM; }