diff --git a/data/shapes/ship2.shp b/data/shapes/ship2.shp index bc85e5a..9d6280c 100644 --- a/data/shapes/ship2.shp +++ b/data/shapes/ship2.shp @@ -1,27 +1,30 @@ -# ship2.shp - Nau del jugador 2 (interceptor amb ales) -# © 2025 Orni Attack - Jugador 2 +# ship2.shp - Nau del jugador 2 (triangle amb circulito central) +# © 1999 Visente i Sergi (versió Pascal) +# © 2025 Port a C++20 amb SDL3 name: ship2 scale: 1.0 center: 0, 0 -# Interceptor amb ales laterals -# Disseny més ample i agressiu que P1 +# Triangle amb base còncava tipus "punta de fletxa" +# (Mateix que ship.shp) +# Punts originals (polar): +# p1: r=12, angle=270° (3π/2) → punta amunt +# p2: r=12, angle=45° (π/4) → base dreta-darrere +# p3: r=12, angle=135° (3π/4) → base esquerra-darrere # -# Geometria: -# - Punta més curta i ampla -# - Ales laterals pronunciades -# - Base més ampla per estabilitat visual +# MODIFICACIÓ: afegit p4 al mig de la base, desplaçat cap al centre +# p4: (0, 4) → punt central de la base, cap endins # -# Punts (cartesianes, Y negatiu = amunt): -# p1: (0, -10) → punta (més curta que P1) -# p2: (4, -6) → transició ala dreta -# p3: (10, 2) → punta ala dreta (més ampla) -# p4: (6, 8) → base ala dreta -# p5: (0, 6) → base centre (menys còncava) -# p6: (-6, 8) → base ala esquerra -# p7: (-10, 2) → punta ala esquerra -# p8: (-4, -6) → transició ala esquerra -# p1: (0, -10) → tanca +# Conversió polar→cartesià (angle-90° perquè origen visual és amunt): +# p1: (0, -12) → punta +# p2: (8.49, 8.49) → base dreta +# p4: (0, 4) → base centre (cap endins) +# p3: (-8.49, 8.49) → base esquerra -polyline: 0,-10 4,-6 10,2 6,8 0,6 -6,8 -10,2 -4,-6 0,-10 +#polyline: 0,-12 8.49,8.49 0,4 -8.49,8.49 0,-12 +polyline: 0,-12 8.49,8.49 -8.49,8.49 0,-12 + +# Circulito central (octàgon r=2.5) +# Distintiu visual del jugador 2 +polyline: 0,-2.5 1.77,-1.77 2.5,0 1.77,1.77 0,2.5 -1.77,1.77 -2.5,0 -1.77,-1.77 0,-2.5 diff --git a/data/shapes/ship2_p1.shp b/data/shapes/ship2_p1.shp deleted file mode 100644 index 7a1db33..0000000 --- a/data/shapes/ship2_p1.shp +++ /dev/null @@ -1,9 +0,0 @@ -# ship2_p1.shp - Nau interceptor jugador 1 ROTADA 60° cap al punt de fuga -# Rotació 60° + escala 2.5x per fer-la apuntar des de baix-esquerra cap al centre -# Original: ship2.shp - -name: ship2_p1 -scale: 1.0 -center: 0, 0 - -polyline: 22,-13 18,1 8,24 -10,23 -13,8 -25,-3 -17,-19 8,-16 22,-13 diff --git a/data/shapes/ship2_p2.shp b/data/shapes/ship2_starfield.shp similarity index 100% rename from data/shapes/ship2_p2.shp rename to data/shapes/ship2_starfield.shp diff --git a/data/shapes/ship3.shp b/data/shapes/ship3.shp new file mode 100644 index 0000000..bc85e5a --- /dev/null +++ b/data/shapes/ship3.shp @@ -0,0 +1,27 @@ +# ship2.shp - Nau del jugador 2 (interceptor amb ales) +# © 2025 Orni Attack - Jugador 2 + +name: ship2 +scale: 1.0 +center: 0, 0 + +# Interceptor amb ales laterals +# Disseny més ample i agressiu que P1 +# +# Geometria: +# - Punta més curta i ampla +# - Ales laterals pronunciades +# - Base més ampla per estabilitat visual +# +# Punts (cartesianes, Y negatiu = amunt): +# p1: (0, -10) → punta (més curta que P1) +# p2: (4, -6) → transició ala dreta +# p3: (10, 2) → punta ala dreta (més ampla) +# p4: (6, 8) → base ala dreta +# p5: (0, 6) → base centre (menys còncava) +# p6: (-6, 8) → base ala esquerra +# p7: (-10, 2) → punta ala esquerra +# p8: (-4, -6) → transició ala esquerra +# p1: (0, -10) → tanca + +polyline: 0,-10 4,-6 10,2 6,8 0,6 -6,8 -10,2 -4,-6 0,-10 diff --git a/data/shapes/ship_p2.shp b/data/shapes/ship_p2.shp deleted file mode 100644 index 2567711..0000000 --- a/data/shapes/ship_p2.shp +++ /dev/null @@ -1,9 +0,0 @@ -# ship_p2.shp - Nau jugador 2 ROTADA -60° cap al punt de fuga -# Rotació -60° + escala 2.5x per fer-la apuntar des de baix-dreta cap al centre -# Original: ship.shp - -name: ship_p2 -scale: 1.0 -center: 0, 0 - -polyline: 26,15 -8,-29 -9,-5 8,29 26,15 diff --git a/data/shapes/ship_p1.shp b/data/shapes/ship_starfield.shp similarity index 100% rename from data/shapes/ship_p1.shp rename to data/shapes/ship_starfield.shp diff --git a/source/core/defaults.hpp b/source/core/defaults.hpp index 6cc62f5..e5cda6a 100644 --- a/source/core/defaults.hpp +++ b/source/core/defaults.hpp @@ -135,12 +135,12 @@ constexpr float INIT_HUD_DURATION = 3.0f; // Duración total del estado // Ratios de animación (inicio y fin como porcentajes del tiempo total) // RECT (rectángulo de marges) -constexpr float INIT_HUD_RECT_RATIO_INIT = 0.33f; -constexpr float INIT_HUD_RECT_RATIO_END = 1.0f; +constexpr float INIT_HUD_RECT_RATIO_INIT = 0.30f; +constexpr float INIT_HUD_RECT_RATIO_END = 0.85f; // SCORE (marcador de puntuación) -constexpr float INIT_HUD_SCORE_RATIO_INIT = 0.17f; -constexpr float INIT_HUD_SCORE_RATIO_END = 1.0f; +constexpr float INIT_HUD_SCORE_RATIO_INIT = 0.60f; +constexpr float INIT_HUD_SCORE_RATIO_END = 0.90f; // SHIP1 (nave jugador 1) constexpr float INIT_HUD_SHIP1_RATIO_INIT = 0.0f; @@ -417,7 +417,7 @@ constexpr float CLOCK_8_ANGLE = 150.0f * Math::PI / 180.0f; // 8 o'clock (botto constexpr float CLOCK_4_ANGLE = 30.0f * Math::PI / 180.0f; // 4 o'clock (bottom-right) // 5. Radio máximo de la forma de la nave (para calcular offset automáticamente) -constexpr float SHIP_MAX_RADIUS = 30.0f; // Radi del cercle circumscrit a ship_p1.shp +constexpr float SHIP_MAX_RADIUS = 30.0f; // Radi del cercle circumscrit a ship_starfield.shp // 6. Margen de seguridad para offset de entrada constexpr float ENTRY_OFFSET_MARGIN = 227.5f; // Para offset total de ~340px (ajustado) diff --git a/source/game/title/ship_animator.cpp b/source/game/title/ship_animator.cpp index e47d13d..73b320d 100644 --- a/source/game/title/ship_animator.cpp +++ b/source/game/title/ship_animator.cpp @@ -17,8 +17,8 @@ ShipAnimator::ShipAnimator(SDL_Renderer* renderer) void ShipAnimator::inicialitzar() { // Carregar formes de naus amb perspectiva pre-calculada - auto forma_p1 = Graphics::ShapeLoader::load("ship_p1.shp"); // Perspectiva esquerra - auto forma_p2 = Graphics::ShapeLoader::load("ship2_p2.shp"); // Perspectiva dreta + auto forma_p1 = Graphics::ShapeLoader::load("ship_starfield.shp"); // Perspectiva esquerra + auto forma_p2 = Graphics::ShapeLoader::load("ship2_starfield.shp"); // Perspectiva dreta // Configurar nau P1 naus_[0].jugador_id = 1;