feat(playfield): ones d'aigua a la rejilla per explosions i pas de nau

This commit is contained in:
2026-05-22 19:22:09 +02:00
parent 044a3a3bbf
commit 88b002b277
4 changed files with 242 additions and 210 deletions
+26 -14
View File
@@ -25,20 +25,32 @@ namespace Defaults::Playfield {
constexpr float HEAD_LENGTH_PX = 8.0F; // longitud en píxels lògics del tram brillant
constexpr float HEAD_BRIGHTNESS = 0.0F; // brillo del cap (= border)
// Orbit (oscil·lació transversal de la línia quan la nau hi passa a prop).
constexpr float ORBIT_AMPLITUDE_MAX_PX = 3.0F; // desplaçament transversal màxim
constexpr float ORBIT_DECAY_PER_S = 4.0F; // decaiment de l'amplitud (px/s)
constexpr float ORBIT_FREQ_HZ = 8.0F; // freqüència del sin
constexpr float ORBIT_PROXIMITY_PX = 12.0F; // distància max de la línia per excitar-la
constexpr float ORBIT_SHIP_SPEED_THRESHOLD = 60.0F; // velocitat mínima per excitar (px/s)
// Ripples: deformacions circulars que travessen la graella com ones d'aigua.
// Cada ripple desplaça radialment cap a fora els vèrtexs de les línies que
// travessa, amb una envoltant que decau a les vores de l'anell i amb el temps.
namespace Ripple {
constexpr int POOL_SIZE = 32;
// Pulse (reacció a fireworks: punt brillant que es propaga al llarg de la
// línia a partir del punt de spawn).
constexpr int MAX_PULSES_PER_LINE = 2;
constexpr float PULSE_LIFETIME_S = 1.0F; // temps total fins desaparèixer
constexpr float PULSE_SPREAD_PER_S = 300.0F; // px/s de propagació (cap a cada extrem)
constexpr unsigned char PULSE_COLOR_R = 180;
constexpr unsigned char PULSE_COLOR_G = 230;
constexpr unsigned char PULSE_COLOR_B = 255;
// Ones grans (explosions / fireworks).
constexpr float BIG_AMPLITUDE_PX = 10.0F;
constexpr float BIG_SPEED_PX_S = 320.0F;
constexpr float BIG_LIFETIME_S = 1.4F;
constexpr float BIG_THICKNESS_PX = 40.0F;
// Ones petites (pas de nau, cadència estil trail).
constexpr float SMALL_AMPLITUDE_PX = 2.5F;
constexpr float SMALL_SPEED_PX_S = 160.0F;
constexpr float SMALL_LIFETIME_S = 0.55F;
constexpr float SMALL_THICKNESS_PX = 18.0F;
// Cadència "soltar gotetes" per nau (patró TrailManager).
constexpr float SHIP_COOLDOWN_S = 0.10F;
constexpr float SHIP_COOLDOWN_JITTER_S = 0.03F;
constexpr float SHIP_SPEED_THRESHOLD_PX_S = 80.0F;
// Subdivisió de línies quan estan dins una ripple.
constexpr int MAIN_SEGMENTS = 24; // línies principals
constexpr int SUB_SEGMENTS = 12; // sub-graella
} // namespace Ripple
} // namespace Defaults::Playfield