feat(fireworks): infraestructura (manager + pool + render, sin spawn aún)

This commit is contained in:
2026-05-21 17:22:46 +02:00
parent 5aab26f2ca
commit 56ce1a3236
7 changed files with 364 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
// firework.hpp - Partícula d'efecte starburst (una línia per partícula)
// © 2026 JailDesigner
#pragma once
#include <SDL3/SDL.h>
#include "core/types.hpp"
namespace Effects {
// Una partícula de firework: una línia que neix d'un punt origen, viatja
// radialment cap a fora i s'encongeix conforme perd velocitat.
//
// Geometria (es deriva al draw):
// head: extrem davanter (es mou amb velocity).
// tail = head velocity_normalitzada × current_length.
//
// Cicle de vida:
// Fase 1 (temps_vida < grow_duration): current_length creix linealment
// de 0 a max_length. Brillor al màxim.
// Fase 2: current_length = max_length × (speed/initial_speed) i brillor
// amb la mateixa proporció. Mor quan length o brightness cauen sota
// llindar.
struct Firework {
Vec2 head; // Punta davantera (posició actual)
Vec2 velocity; // Velocidad en px/s
float acceleration; // Fricció lineal (px/s², negativa)
float current_length; // Longitud actual del segment (px)
float max_length; // Longitud màxima (final de la fase de creixement)
float grow_duration; // Temps de creixement de 0 a max_length (s)
float temps_vida; // Acumulador (s)
float initial_speed; // Speed inicial per a la proporció de fase 2
float brightness; // 0..1
SDL_Color color{}; // alpha==0 → oscilador global
bool active;
};
} // namespace Effects