Añadir tema LAVENDER + propuesta Temas Dinámicos

- Nuevo tema LAVENDER (7º tema)
  - Degradado: Violeta oscuro (120,80,140) → Azul medianoche (25,30,60)
  - Pelotas: Amarillo dorado monocromático (#FFD700)
  - Contraste complementario violeta-amarillo
  - Actualizado ColorTheme enum en defines.h
  - Actualizado themes_[7] en engine.h/cpp

- ROADMAP actualizado:
  - Temas visuales: 6/6 → 7/7 completadas
  - Nueva propuesta: Ítem 9 - Temas Dinámicos (Color Generativo)
    - Generación procedural de paletas HSV
    - Esquemas de armonía (mono/complementario/análogo/triádico)
    - Gradiente de fondo variable
    - Color de pelotas según esquema elegido
    - Controles: Tecla G (generar), Shift+G (ciclar esquemas)
    - Prioridad: Baja, Estimación: 4-6 horas

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-05 19:44:06 +02:00
parent 9390bd3b01
commit 38b8789884
4 changed files with 79 additions and 4 deletions

View File

@@ -12,13 +12,14 @@
- ✅ U - ICOSAHEDRON (Icosaedro D20)
- ✅ I - ATOM (Núcleo + órbitas)
### Temas Visuales (6/6 Completadas)
### Temas Visuales (7/7 Completadas)
- ✅ SUNSET (Atardecer)
- ✅ OCEAN (Océano)
- ✅ NEON (Neón vibrante)
- ✅ FOREST (Bosque)
- ✅ RGB (Círculo cromático matemático)
- ✅ MONOCHROME (Monocromo - blanco puro)
- ✅ LAVENDER (Lavanda - degradado violeta-azul, pelotas doradas)
### Sistemas de Presentación
- ✅ Transiciones LERP entre temas (0.5s suaves)
@@ -202,6 +203,52 @@
- Si Bitmap: Nueva textura font_atlas.png de mayor resolución
- **Retrocompatibilidad:** Mantener API actual de dbgtxt
### 9. ⏳ Temas Dinámicos (Color Generativo)
**Descripción:** Sistema de generación procedural de temas de colores
**Prioridad:** Baja
**Estimación:** 4-6 horas
**Detalles:**
- **Objetivos:**
- Gradiente de fondo variable (color base + variaciones automáticas)
- Color de pelotas variable (monocromático, complementario, análogo, etc.)
- Generación algorítmica de paletas armónicas
- **Implementación propuesta:**
- **HSV Color Space:** Generar paletas en espacio HSV para control intuitivo
- Hue (matiz): 0-360° para variación de color
- Saturation (saturación): 0-100% para intensidad
- Value (brillo): 0-100% para luminosidad
- **Esquemas de color:**
- Monocromático (un matiz + variaciones de saturación/brillo)
- Complementario (matiz opuesto en rueda de color)
- Análogo (matices adyacentes ±30°)
- Triádico (3 matices equidistantes 120°)
- Tetrádico (4 matices en cuadrado/rectángulo)
- **Parámetros configurables:**
- Base hue (0-360°): Color principal del tema
- Saturation range (0-100%): Rango de intensidad
- Value range (0-100%): Rango de brillo
- Esquema de armonía: mono/complementario/análogo/etc.
- Gradiente de fondo: Automático según base hue
- **Controles de usuario:**
- Tecla G: Generar nuevo tema aleatorio
- Tecla Shift+G: Ciclar esquemas de armonía
- Guardar temas generados favoritos (slot 8-12)
- **Algoritmos:**
- **Gradiente de fondo:** Base hue → Variación análoga oscura (fondo inferior)
- **Color de pelotas:** Según esquema elegido (complementario para contraste máximo)
- **Conversión HSV → RGB:** Algoritmo estándar para SDL rendering
- **Ejemplos de temas generados:**
- Tema "Cyberpunk": Base cyan (180°) + Complementario magenta (300°)
- Tema "Autumn": Base naranja (30°) + Análogo rojo-amarillo
- Tema "Ocean Deep": Base azul (240°) + Monocromático variaciones
- Tema "Toxic": Base verde lima (120°) + Complementario púrpura
- **Persistencia:**
- Guardar temas generados en config.ini (opcional)
- Teclas 8-9-0 para slots de temas custom
- **Compatibilidad:**
- No reemplaza temas existentes (1-7)
- Modo adicional de selección de tema
---
## Futuras Mejoras (Ideas)

View File

@@ -3,7 +3,7 @@
#include <SDL3/SDL_stdinc.h> // for Uint64
// Configuración de ventana y pantalla
constexpr char WINDOW_CAPTION[] = "vibe3_physics";
constexpr char WINDOW_CAPTION[] = "ViBe3 Physics (JailDesigner 2025)";
// Resolución por defecto (usada si no se especifica en CLI)
constexpr int DEFAULT_SCREEN_WIDTH = 320; // Ancho lógico por defecto (si no hay -w)
@@ -61,7 +61,8 @@ enum class ColorTheme {
NEON = 2, // Cian, magenta, verde lima, amarillo vibrante
FOREST = 3, // Verdes, marrones, amarillos otoño
RGB = 4, // RGB puros y subdivisiones matemáticas (fondo blanco)
MONOCHROME = 5 // Fondo negro degradado, sprites blancos monocromáticos
MONOCHROME = 5, // Fondo negro degradado, sprites blancos monocromáticos
LAVENDER = 6 // Degradado violeta-azul, pelotas amarillo dorado
};
// Enum para tipo de figura 3D

View File

@@ -466,6 +466,10 @@ void Engine::handleEvents() {
startThemeTransition(ColorTheme::MONOCHROME);
break;
case SDLK_KP_7:
startThemeTransition(ColorTheme::LAVENDER);
break;
// Cambio de sprite/textura dinámico
case SDLK_N:
switchTexture();
@@ -1357,6 +1361,29 @@ void Engine::initializeThemes() {
{255, 255, 255},
{255, 255, 255},
{255, 255, 255}}};
// LAVENDER: Degradado violeta oscuro → azul medianoche, pelotas amarillo dorado monocromático
themes_[6] = {
"LAVENDER",
"LAVANDA", // Nombres (inglés, español)
255,
200,
100, // Color texto: amarillo cálido
120.0f / 255.0f,
80.0f / 255.0f,
140.0f / 255.0f, // Fondo superior (violeta oscuro)
25.0f / 255.0f,
30.0f / 255.0f,
60.0f / 255.0f, // Fondo inferior (azul medianoche)
{
{255, 215, 0}, // Amarillo dorado - todas las pelotas del mismo color
{255, 215, 0},
{255, 215, 0},
{255, 215, 0},
{255, 215, 0},
{255, 215, 0},
{255, 215, 0},
{255, 215, 0}}};
}
void Engine::startThemeTransition(ColorTheme new_theme) {

View File

@@ -97,7 +97,7 @@ class Engine {
};
// Temas de colores definidos
ThemeColors themes_[6]; // 6 temas: SUNSET, OCEAN, NEON, FOREST, RGB, MONOCHROME
ThemeColors themes_[7]; // 7 temas: SUNSET, OCEAN, NEON, FOREST, RGB, MONOCHROME, LAVENDER
// Sistema de Figuras 3D (polimórfico)
SimulationMode current_mode_ = SimulationMode::PHYSICS;