// debris.hpp - Fragment de línia volant (explosión de formes)
// © 2025 Port a C++20 con SDL3

#pragma once
#include <SDL3/SDL.h>

#include "core/types.hpp"

namespace Effects {

// Debris: un segment de línia que vola perpendicular a sí mismo
// Representa un fragment de una shape destruïda (ship, enemy, bullet)
struct Debris {
        // Geometria del segment (2 points en coordenades mundials)
        Vec2 p1;  // Vec2 inicial del segment
        Vec2 p2;  // Vec2 final del segment

        // Física
        Vec2 velocity;     // Velocidad en px/s (components x, y)
        float acceleration;  // Aceleración negativa (fricció) en px/s²

        // Rotación
        float angle_rotacio;         // Angle de rotación acumulat (radians)
        float velocitat_rot;         // Velocidad de rotación de TRAYECTORIA (rad/s)
        float velocitat_rot_visual;  // Velocidad de rotación VISUAL del segment (rad/s)

        // Estat de vida
        float temps_vida;  // Temps transcorregut (segons)
        float temps_max;   // Temps de vida màxim (segons)
        bool active;        // Está active?

        // Shrinking (reducció de distancia entre points)
        float factor_shrink;  // Factor de reducció per segon (0.0-1.0)

        // Rendering
        float brightness;   // Factor de brightness (0.0-1.0, heretat de l'objecte original)
        SDL_Color color{};  // Color heredado del padre. alpha==0 → usa global oscilador
};

}  // namespace Effects
