// effects.hpp - Constants per a efectes visuals (fireworks, etc.)
// © 2026 JailDesigner

#pragma once

#include <SDL3/SDL.h>

namespace Defaults::FX::Firework {

    // Color per defecte. La caller pot fer override (p.ex. heretar del pare),
    // però per defecte no l'heretem — feel més neutre/lluminós.
    constexpr SDL_Color DEFAULT_COLOR = {.r = 255, .g = 255, .b = 255, .a = 255};

    // Velocitat inicial radial al spawn (px/s) i variació entre punts.
    constexpr float SPEED = 250.0F;
    constexpr float SPEED_VARIATION = 30.0F;  // ±

    // Quantitat de línies per burst (per defecte).
    constexpr int N_POINTS = 100;

    // Distribució angular: jitter aleatori sobre el repartiment uniforme.
    constexpr float ANGULAR_JITTER_DEG = 12.0F;

    // Fase 1 (creixement): la línia neix amb longitud 0 i creix fins a max.
    constexpr float GROW_DURATION = 0.08F;  // s
    constexpr float MAX_LENGTH = 25.0F;     // px

    // Fricció lineal (px/s²). Negativa per frenar.
    constexpr float FRICTION = -180.0F;

    // Llindar de mort: per sota d'aquesta longitud (px) o brillor, la
    // partícula es marca inactiva.
    constexpr float MIN_LENGTH = 0.5F;
    constexpr float MIN_BRIGHTNESS = 0.02F;

    // Brillor inicial per defecte.
    constexpr float INITIAL_BRIGHTNESS = 1.0F;

    // Restitució en rebot contra els límits del PLAYAREA (mateix patró que debris).
    constexpr float RESTITUTION_BOUNDS = 0.7F;

    // Mida del pool. 8 punts × ~25 bursts simultanis.
    constexpr int POOL_SIZE = 2000;

}  // namespace Defaults::FX::Firework
