#pragma once

#include <string>
#include <vector>

#include "defines.hpp"  // for Color

/**
 * ThemeSnapshot: "Fotografía" del estado de un tema en un momento dado
 *
 * Propósito:
 * - Capturar el estado visual completo de un tema (estático o dinámico)
 * - Permitir LERP entre cualquier par de temas (incluso dinámicos en movimiento)
 * - Snapshot temporal que existe solo durante la transición (se libera al completar)
 *
 * Uso en PHASE 3:
 * - Al cambiar de tema, se captura snapshot del tema origen
 * - Durante transición, se hace LERP: snapshot → tema destino
 * - Al completar transición (progress = 1.0), se libera snapshot
 *
 * Contenido capturado:
 * - Colores de fondo (degradado top/bottom)
 * - Colores de texto UI
 * - Colores de pelotas (suficientes para escenario máximo)
 * - Nombres del tema (para debug display durante transición)
 */
struct ThemeSnapshot {
        // Colores de fondo degradado
        float bg_top_r, bg_top_g, bg_top_b;
        float bg_bottom_r, bg_bottom_g, bg_bottom_b;

        // Color de texto UI
        int text_color_r, text_color_g, text_color_b;

        // Color de fondo de notificaciones
        int notif_bg_r, notif_bg_g, notif_bg_b;

        // Nombres del tema (para mostrar "SOURCE → TARGET" durante transición)
        std::string name_en;
        std::string name_es;

        // Colores de pelotas capturados (índice = ball_index % ball_colors.size())
        // Se capturan suficientes colores para cubrir escenario máximo (50,000 pelotas)
        // Nota: Si el tema tiene 8 colores y capturamos 50,000, habrá repetición
        // pero permite LERP correcto incluso con muchas pelotas
        std::vector<Color> ball_colors;
};
