Add: Sistema de páginas para selección de temas + 5 nuevos temas

Implementación:
- 5 nuevos temas (2 estáticos: CRIMSON, EMERALD / 3 dinámicos: FIRE, AURORA, VOLCANIC)
- Sistema de páginas con Numpad Enter (Página 1 ↔ Página 2)
- Shift+B para ciclar temas hacia atrás
- Página 1: 9 temas estáticos + SUNRISE (Numpad 1-9, 0)
- Página 2: 5 temas dinámicos animados (Numpad 1-5)

Motivo:
- Shift+Numpad no funciona en Windows (limitación hardware/OS)
- Solución: Toggle de página con Numpad Enter

Archivos modificados:
- defines.h: Añadidos 5 nuevos ColorTheme enum values
- theme_manager.h: Añadido cyclePrevTheme() + actualizada doc 10→15 temas
- theme_manager.cpp: Implementados 5 nuevos temas + cyclePrevTheme()
- engine.h: Añadida variable theme_page_ (0 o 1)
- engine.cpp: Handlers Numpad Enter, KP_1-9,0 con sistema de páginas, SDLK_B con Shift detection
- CLAUDE.md: Documentación actualizada con tablas de 2 páginas

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-09 18:04:13 +02:00
parent f1bafc8a4f
commit c50ecbc02a
6 changed files with 380 additions and 96 deletions

View File

@@ -84,7 +84,7 @@ enum class GravityDirection {
RIGHT // → Gravedad hacia la derecha
};
// Enum para temas de colores (seleccionables con teclado numérico)
// Enum para temas de colores (seleccionables con teclado numérico y Shift+Numpad)
// Todos los temas usan ahora sistema dinámico de keyframes
enum class ColorTheme {
SUNSET = 0, // Naranjas, rojos, amarillos, rosas (estático: 1 keyframe)
@@ -94,9 +94,14 @@ enum class ColorTheme {
RGB = 4, // RGB puros y subdivisiones matemáticas - fondo blanco (estático: 1 keyframe)
MONOCHROME = 5, // Fondo negro degradado, sprites blancos monocromáticos (estático: 1 keyframe)
LAVENDER = 6, // Degradado violeta-azul, pelotas amarillo dorado (estático: 1 keyframe)
SUNRISE = 7, // Amanecer: Noche → Alba → Día (animado: 4 keyframes, 12s ciclo)
OCEAN_WAVES = 8, // Olas oceánicas: Azul oscuro ↔ Turquesa (animado: 3 keyframes, 8s ciclo)
NEON_PULSE = 9 // Pulso neón: Negro ↔ Neón vibrante (animado: 3 keyframes, 3s ping-pong)
CRIMSON = 7, // Fondo negro-rojo, pelotas rojas uniformes (estático: 1 keyframe)
EMERALD = 8, // Fondo negro-verde, pelotas verdes uniformes (estático: 1 keyframe)
SUNRISE = 9, // Amanecer: Noche → Alba → Día (animado: 4 keyframes, 12s ciclo)
OCEAN_WAVES = 10, // Olas oceánicas: Azul oscuro ↔ Turquesa (animado: 3 keyframes, 8s ciclo)
NEON_PULSE = 11, // Pulso neón: Negro ↔ Neón vibrante (animado: 3 keyframes, 3s ping-pong)
FIRE = 12, // Fuego vivo: Brasas → Llamas → Inferno (animado: 4 keyframes, 10s ciclo)
AURORA = 13, // Aurora boreal: Verde → Violeta → Cian (animado: 4 keyframes, 14s ciclo)
VOLCANIC = 14 // Erupción volcánica: Ceniza → Erupción → Lava (animado: 4 keyframes, 12s ciclo)
};
// Enum para tipo de figura 3D