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:
49
ROADMAP.md
49
ROADMAP.md
@@ -12,13 +12,14 @@
|
|||||||
- ✅ U - ICOSAHEDRON (Icosaedro D20)
|
- ✅ U - ICOSAHEDRON (Icosaedro D20)
|
||||||
- ✅ I - ATOM (Núcleo + órbitas)
|
- ✅ I - ATOM (Núcleo + órbitas)
|
||||||
|
|
||||||
### Temas Visuales (6/6 Completadas)
|
### Temas Visuales (7/7 Completadas)
|
||||||
- ✅ SUNSET (Atardecer)
|
- ✅ SUNSET (Atardecer)
|
||||||
- ✅ OCEAN (Océano)
|
- ✅ OCEAN (Océano)
|
||||||
- ✅ NEON (Neón vibrante)
|
- ✅ NEON (Neón vibrante)
|
||||||
- ✅ FOREST (Bosque)
|
- ✅ FOREST (Bosque)
|
||||||
- ✅ RGB (Círculo cromático matemático)
|
- ✅ RGB (Círculo cromático matemático)
|
||||||
- ✅ MONOCHROME (Monocromo - blanco puro)
|
- ✅ MONOCHROME (Monocromo - blanco puro)
|
||||||
|
- ✅ LAVENDER (Lavanda - degradado violeta-azul, pelotas doradas)
|
||||||
|
|
||||||
### Sistemas de Presentación
|
### Sistemas de Presentación
|
||||||
- ✅ Transiciones LERP entre temas (0.5s suaves)
|
- ✅ Transiciones LERP entre temas (0.5s suaves)
|
||||||
@@ -202,6 +203,52 @@
|
|||||||
- Si Bitmap: Nueva textura font_atlas.png de mayor resolución
|
- Si Bitmap: Nueva textura font_atlas.png de mayor resolución
|
||||||
- **Retrocompatibilidad:** Mantener API actual de dbgtxt
|
- **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)
|
## Futuras Mejoras (Ideas)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include <SDL3/SDL_stdinc.h> // for Uint64
|
#include <SDL3/SDL_stdinc.h> // for Uint64
|
||||||
|
|
||||||
// Configuración de ventana y pantalla
|
// 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)
|
// 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)
|
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
|
NEON = 2, // Cian, magenta, verde lima, amarillo vibrante
|
||||||
FOREST = 3, // Verdes, marrones, amarillos otoño
|
FOREST = 3, // Verdes, marrones, amarillos otoño
|
||||||
RGB = 4, // RGB puros y subdivisiones matemáticas (fondo blanco)
|
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
|
// Enum para tipo de figura 3D
|
||||||
|
|||||||
@@ -466,6 +466,10 @@ void Engine::handleEvents() {
|
|||||||
startThemeTransition(ColorTheme::MONOCHROME);
|
startThemeTransition(ColorTheme::MONOCHROME);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SDLK_KP_7:
|
||||||
|
startThemeTransition(ColorTheme::LAVENDER);
|
||||||
|
break;
|
||||||
|
|
||||||
// Cambio de sprite/textura dinámico
|
// Cambio de sprite/textura dinámico
|
||||||
case SDLK_N:
|
case SDLK_N:
|
||||||
switchTexture();
|
switchTexture();
|
||||||
@@ -1357,6 +1361,29 @@ void Engine::initializeThemes() {
|
|||||||
{255, 255, 255},
|
{255, 255, 255},
|
||||||
{255, 255, 255},
|
{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) {
|
void Engine::startThemeTransition(ColorTheme new_theme) {
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ class Engine {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Temas de colores definidos
|
// 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)
|
// Sistema de Figuras 3D (polimórfico)
|
||||||
SimulationMode current_mode_ = SimulationMode::PHYSICS;
|
SimulationMode current_mode_ = SimulationMode::PHYSICS;
|
||||||
|
|||||||
Reference in New Issue
Block a user