From 38b8789884a44237f76d2e9f1a961c5c42b93a08 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sun, 5 Oct 2025 19:44:06 +0200 Subject: [PATCH] =?UTF-8?q?A=C3=B1adir=20tema=20LAVENDER=20+=20propuesta?= =?UTF-8?q?=20Temas=20Din=C3=A1micos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- ROADMAP.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++- source/defines.h | 5 +++-- source/engine.cpp | 27 ++++++++++++++++++++++++++ source/engine.h | 2 +- 4 files changed, 79 insertions(+), 4 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 9a724ca..92233b1 100644 --- a/ROADMAP.md +++ b/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) diff --git a/source/defines.h b/source/defines.h index f0bea87..66c450d 100644 --- a/source/defines.h +++ b/source/defines.h @@ -3,7 +3,7 @@ #include // 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 diff --git a/source/engine.cpp b/source/engine.cpp index 0b6dd91..10ab169 100644 --- a/source/engine.cpp +++ b/source/engine.cpp @@ -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) { diff --git a/source/engine.h b/source/engine.h index 5ea1bb0..dcf33df 100644 --- a/source/engine.h +++ b/source/engine.h @@ -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;