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)
|
||||
- ✅ 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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user