Implementar tema MONOCHROME (6º tema visual) - Tecla KP_6
- Fondo negro degradado (similar a NEON) - 8 tonos de gris: blanco puro a gris muy oscuro - Estética minimalista monocromática - Ciclo con tecla B incluye nuevo tema - Actualizado README con documentación 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -43,6 +43,7 @@ El nombre refleja su proposito: **ViBe** (vibe-coding experimental) + **Physics*
|
|||||||
| `KP_3` | **Tema NEON (colores vibrantes)** |
|
| `KP_3` | **Tema NEON (colores vibrantes)** |
|
||||||
| `KP_4` | **Tema BOSQUE (verdes naturales)** |
|
| `KP_4` | **Tema BOSQUE (verdes naturales)** |
|
||||||
| `KP_5` | **Tema RGB (fondo blanco, colores matematicos)** |
|
| `KP_5` | **Tema RGB (fondo blanco, colores matematicos)** |
|
||||||
|
| `KP_6` | **Tema MONOCHROME (fondo negro, sprites grises)** |
|
||||||
| `B` | **Ciclar entre todos los temas** |
|
| `B` | **Ciclar entre todos los temas** |
|
||||||
|
|
||||||
### Controles de Simulacion
|
### Controles de Simulacion
|
||||||
@@ -91,7 +92,7 @@ Cuando se activa el debug display con la tecla `H`:
|
|||||||
|
|
||||||
## 🎨 Sistema de Temas de Colores
|
## 🎨 Sistema de Temas de Colores
|
||||||
|
|
||||||
**ViBe1 Delta** incluye 5 temas visuales que transforman completamente la apariencia del simulador:
|
**ViBe3 Physics** incluye 6 temas visuales que transforman completamente la apariencia del simulador:
|
||||||
|
|
||||||
### Temas Disponibles
|
### Temas Disponibles
|
||||||
|
|
||||||
@@ -102,10 +103,11 @@ Cuando se activa el debug display con la tecla `H`:
|
|||||||
| `KP_3` | **NEON** | Colores vibrantes futuristas | Degradado magenta-cian | Magentas, cianes y rosas brillantes |
|
| `KP_3` | **NEON** | Colores vibrantes futuristas | Degradado magenta-cian | Magentas, cianes y rosas brillantes |
|
||||||
| `KP_4` | **BOSQUE** | Naturaleza verde relajante | Degradado verde oscuro-claro | Verdes naturales y tierra |
|
| `KP_4` | **BOSQUE** | Naturaleza verde relajante | Degradado verde oscuro-claro | Verdes naturales y tierra |
|
||||||
| `KP_5` | **RGB** | Colores matematicos puros | Fondo blanco solido | RGB puros y subdivisiones matematicas |
|
| `KP_5` | **RGB** | Colores matematicos puros | Fondo blanco solido | RGB puros y subdivisiones matematicas |
|
||||||
|
| `KP_6` | **MONOCHROME** | Estetica minimalista monocromatica | Degradado negro | 8 tonos de gris (blanco a oscuro) |
|
||||||
|
|
||||||
### Controles de Temas
|
### Controles de Temas
|
||||||
|
|
||||||
- **Seleccion directa**: Usa `KP_1`, `KP_2`, `KP_3`, `KP_4` o `KP_5` para cambiar inmediatamente al tema deseado
|
- **Seleccion directa**: Usa `KP_1` a `KP_6` para cambiar inmediatamente al tema deseado
|
||||||
- **Ciclado secuencial**: Presiona `B` para avanzar al siguiente tema en orden
|
- **Ciclado secuencial**: Presiona `B` para avanzar al siguiente tema en orden
|
||||||
- **Indicador visual**: El nombre del tema aparece temporalmente en el centro de la pantalla con colores tematicos
|
- **Indicador visual**: El nombre del tema aparece temporalmente en el centro de la pantalla con colores tematicos
|
||||||
- **Regeneracion automatica**: Las pelotas adoptan automaticamente la nueva paleta de colores al cambiar tema
|
- **Regeneracion automatica**: Las pelotas adoptan automaticamente la nueva paleta de colores al cambiar tema
|
||||||
|
|||||||
111
ROADMAP.md
Normal file
111
ROADMAP.md
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
# ROADMAP - ViBe3 Physics
|
||||||
|
|
||||||
|
## Estado Actual ✅
|
||||||
|
|
||||||
|
### Figuras 3D (8/8 Completadas)
|
||||||
|
- ✅ Q - SPHERE (Esfera Fibonacci)
|
||||||
|
- ✅ W - WAVE_GRID (Malla ondeante)
|
||||||
|
- ✅ E - HELIX (Espiral helicoidal)
|
||||||
|
- ✅ R - TORUS (Toroide/donut)
|
||||||
|
- ✅ T - CUBE (Cubo rotante)
|
||||||
|
- ✅ Y - CYLINDER (Cilindro)
|
||||||
|
- ✅ U - ICOSAHEDRON (Icosaedro D20)
|
||||||
|
- ✅ I - ATOM (Núcleo + órbitas)
|
||||||
|
|
||||||
|
### Temas Visuales (5/6)
|
||||||
|
- ✅ SUNSET (Atardecer)
|
||||||
|
- ✅ OCEAN (Océano)
|
||||||
|
- ✅ NEON (Neón vibrante)
|
||||||
|
- ✅ FOREST (Bosque)
|
||||||
|
- ✅ RGB (Círculo cromático matemático)
|
||||||
|
- ⏳ MONOCHROME (Monocromo - próximo)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mejoras de Presentación 🎨
|
||||||
|
|
||||||
|
### 1. ⏳ Tema MONOCHROME
|
||||||
|
**Descripción:** Tema monocromo con fondo negro degradado y sprites blancos sin colorear
|
||||||
|
**Prioridad:** Alta
|
||||||
|
**Estimación:** 30 minutos
|
||||||
|
**Detalles:**
|
||||||
|
- Fondo negro degradado (similar a NEON)
|
||||||
|
- Sprites base color blanco (255, 255, 255)
|
||||||
|
- Solo modulación de depth (brillo), sin cambio de hue
|
||||||
|
- Tecla KP_6 para selección directa
|
||||||
|
|
||||||
|
### 2. ⏳ Cambio de Tema con LERP
|
||||||
|
**Descripción:** Transición suave entre temas sin reiniciar escenario
|
||||||
|
**Prioridad:** Alta
|
||||||
|
**Estimación:** 1 hora
|
||||||
|
**Detalles:**
|
||||||
|
- Interpolación lineal (LERP) de colores RGB
|
||||||
|
- Transición gradual de 0.5-1.0 segundos
|
||||||
|
- Mantener pelotas existentes, solo cambiar colores
|
||||||
|
- Fondo degradado también con LERP
|
||||||
|
- No llamar a `initBalls()`, solo actualizar colores
|
||||||
|
|
||||||
|
### 3. ⏳ Cambio de Textura en Caliente
|
||||||
|
**Descripción:** Cambiar sprite/textura sin resetear física
|
||||||
|
**Prioridad:** Media
|
||||||
|
**Estimación:** 1 hora
|
||||||
|
**Detalles:**
|
||||||
|
- Sistema de gestión de múltiples texturas
|
||||||
|
- Cargar texturas al inicio (ball.png, ball_small.png, etc.)
|
||||||
|
- Actualizar collision box dinámicamente según tamaño
|
||||||
|
- Tecla dedicada (ej: `N`) para ciclar texturas
|
||||||
|
- Mantener física actual, solo cambiar render
|
||||||
|
|
||||||
|
### 4. ⏳ Modo DEMO (Auto-play)
|
||||||
|
**Descripción:** Modo demostración automática con acciones aleatorias
|
||||||
|
**Prioridad:** Alta
|
||||||
|
**Estimación:** 1.5 horas
|
||||||
|
**Detalles:**
|
||||||
|
- Toggle con tecla `D`
|
||||||
|
- Timer que ejecuta acciones cada 3-8 segundos
|
||||||
|
- Acciones: cambiar gravedad, activar figura, cambiar tema, impulso
|
||||||
|
- Secuencia pseudo-aleatoria pero visualmente coherente
|
||||||
|
- Pausable con cualquier tecla de usuario
|
||||||
|
- Indicador visual "DEMO MODE" en pantalla
|
||||||
|
|
||||||
|
### 5. ⏳ Sistema de Release
|
||||||
|
**Descripción:** Empaquetado para distribución standalone
|
||||||
|
**Prioridad:** Media
|
||||||
|
**Estimación:** 30 minutos
|
||||||
|
**Detalles:**
|
||||||
|
- Crear carpeta `release/`
|
||||||
|
- Script Python `pack_resources.py` para empaquetar
|
||||||
|
- Incluir SDL3.dll
|
||||||
|
- Incluir icon.png (si existe)
|
||||||
|
- Empaquetar `data/` en archivo .dat o .zip
|
||||||
|
- Target `make release` en Makefile
|
||||||
|
- README.txt con instrucciones
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Futuras Mejoras (Ideas)
|
||||||
|
|
||||||
|
### Performance
|
||||||
|
- [ ] Spatial partitioning para colisiones ball-to-ball
|
||||||
|
- [ ] Level-of-detail para 100K+ pelotas
|
||||||
|
- [ ] GPU compute shaders para física masiva
|
||||||
|
|
||||||
|
### Efectos Visuales
|
||||||
|
- [ ] Trails (estelas de movimiento)
|
||||||
|
- [ ] Heatmaps de velocidad/energía
|
||||||
|
- [ ] Bloom/glow para sprites
|
||||||
|
|
||||||
|
### Física Avanzada
|
||||||
|
- [ ] Colisiones entre partículas
|
||||||
|
- [ ] Viento (fuerza horizontal)
|
||||||
|
- [ ] Campos magnéticos (atracción/repulsión)
|
||||||
|
- [ ] Turbulencia
|
||||||
|
|
||||||
|
### Interactividad
|
||||||
|
- [ ] Mouse: click para aplicar fuerzas
|
||||||
|
- [ ] Mouse: drag para crear campos
|
||||||
|
- [ ] Mouse wheel: ajustar intensidad
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Última actualización:** 2025-10-04
|
||||||
BIN
data/ball.png
BIN
data/ball.png
Binary file not shown.
|
Before Width: | Height: | Size: 162 B After Width: | Height: | Size: 162 B |
BIN
data/ball_small.png
Normal file
BIN
data/ball_small.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 122 B |
@@ -57,7 +57,8 @@ enum class ColorTheme {
|
|||||||
OCEAN = 1, // Azules, turquesas, blancos
|
OCEAN = 1, // Azules, turquesas, blancos
|
||||||
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
|
||||||
};
|
};
|
||||||
|
|
||||||
// Enum para tipo de figura 3D
|
// Enum para tipo de figura 3D
|
||||||
|
|||||||
@@ -316,6 +316,11 @@ void Engine::handleEvents() {
|
|||||||
initBalls(scenario_);
|
initBalls(scenario_);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SDLK_KP_6:
|
||||||
|
current_theme_ = ColorTheme::MONOCHROME;
|
||||||
|
initBalls(scenario_);
|
||||||
|
break;
|
||||||
|
|
||||||
// Control de escala de figura (solo en modo SHAPE)
|
// Control de escala de figura (solo en modo SHAPE)
|
||||||
case SDLK_KP_PLUS:
|
case SDLK_KP_PLUS:
|
||||||
if (current_mode_ == SimulationMode::SHAPE) {
|
if (current_mode_ == SimulationMode::SHAPE) {
|
||||||
@@ -979,6 +984,22 @@ void Engine::initializeThemes() {
|
|||||||
{255, 0, 64} // 345° - Magenta claro-Rojo
|
{255, 0, 64} // 345° - Magenta claro-Rojo
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// MONOCHROME: Fondo negro degradado, sprites blancos monocromáticos (8 tonos grises)
|
||||||
|
themes_[5] = {
|
||||||
|
20.0f / 255.0f, 20.0f / 255.0f, 20.0f / 255.0f, // Fondo superior (gris muy oscuro)
|
||||||
|
0.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f, // Fondo inferior (negro puro)
|
||||||
|
{
|
||||||
|
{255, 255, 255}, // Blanco puro
|
||||||
|
{230, 230, 230}, // Gris muy claro
|
||||||
|
{200, 200, 200}, // Gris claro
|
||||||
|
{170, 170, 170}, // Gris medio-claro
|
||||||
|
{140, 140, 140}, // Gris medio
|
||||||
|
{110, 110, 110}, // Gris medio-oscuro
|
||||||
|
{80, 80, 80}, // Gris oscuro
|
||||||
|
{50, 50, 50} // Gris muy oscuro
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void Engine::checkAutoRestart() {
|
void Engine::checkAutoRestart() {
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Temas de colores definidos
|
// Temas de colores definidos
|
||||||
ThemeColors themes_[5];
|
ThemeColors themes_[6]; // 6 temas: SUNSET, OCEAN, NEON, FOREST, RGB, MONOCHROME
|
||||||
|
|
||||||
// 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