WIP: Preparar infraestructura para Modo Logo (easter egg)
ROADMAP: - Añadida tarea #4: Implementar Modo Logo (easter egg) - Documentada integración con DEMO y DEMO LITE - Añadida tarea #5: Mejorar sistema vértices PNG_SHAPE INFRAESTRUCTURA AÑADIDA: - engine.h: Variable logo_mode_enabled_ + estado previo - engine.h: Métodos toggleLogoMode(), enterLogoMode(), exitLogoMode() - defines.h: Constantes LOGO_MODE_* (min balls, scale, timings) - defines.h: Probabilidades de salto desde DEMO/DEMO_LITE PENDIENTE IMPLEMENTAR: - Funciones enterLogoMode() y exitLogoMode() - Integración con tecla K - Lógica salto automático desde DEMO/DEMO_LITE - Excluir PNG_SHAPE de arrays aleatorios - Display visual "LOGO MODE" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
54
ROADMAP.md
54
ROADMAP.md
@@ -74,7 +74,57 @@
|
||||
- ✅ Help text con `--help`
|
||||
- Ejemplo: `./vibe3_physics -w 1920 -h 1080 -f`
|
||||
|
||||
### 4. 🐛 Corregir Escalado de Pelotas en Reposo
|
||||
### 4. 🎯 Implementar Modo Logo (Easter Egg)
|
||||
**Descripción:** Modo especial que muestra el logo JAILGAMES como "marca de agua"
|
||||
**Prioridad:** Alta (característica distintiva)
|
||||
**Estimación:** 2 horas
|
||||
**Detalles:**
|
||||
|
||||
#### Configuración Modo Logo:
|
||||
- **Figura:** Solo PNG_SHAPE (logo JAILGAMES)
|
||||
- **Textura:** Siempre "tiny" (pelota más pequeña)
|
||||
- **Tema:** Siempre MONOCHROME (blanco puro)
|
||||
- **Escala:** 120% (figuras más grandes que normal)
|
||||
- **Pelotas mínimas:** 500
|
||||
- **Tecla manual:** K (activa/desactiva modo logo)
|
||||
|
||||
#### Comportamiento en Modo Logo:
|
||||
- Alterna entre modo SHAPE y modo PHYSICS (como DEMO)
|
||||
- Mantiene configuración fija (no cambia tema/textura/escala)
|
||||
- Es como un "DEMO específico del logo"
|
||||
|
||||
#### Integración con DEMO LITE:
|
||||
- **Requisitos para salto automático:**
|
||||
- Mínimo 500 pelotas
|
||||
- Tema MONOCHROME activo
|
||||
- Si se cumplen → cambia automáticamente textura a "tiny" y escala a 120%
|
||||
- **Duración:** Menos tiempo que DEMO normal (es un "recordatorio")
|
||||
- **Después:** Vuelve a DEMO LITE normal
|
||||
|
||||
#### Integración con DEMO:
|
||||
- **Requisitos:** Mínimo 500 pelotas
|
||||
- **Acción:** Cambia automáticamente a: MONOCHROME + tiny + escala 120%
|
||||
- **Duración:** Menos tiempo que acciones normales
|
||||
- **Después:** Vuelve a DEMO normal
|
||||
|
||||
#### Proporción temporal sugerida:
|
||||
- DEMO/DEMO_LITE normal: 80-90% del tiempo
|
||||
- Modo Logo: 10-20% del tiempo (aparición ocasional como "easter egg")
|
||||
|
||||
### 5. ⏳ Mejorar Sistema de Vértices PNG_SHAPE
|
||||
**Descripción:** Con 50 pelotas no activa modo vértices correctamente
|
||||
**Prioridad:** Baja (mejora visual)
|
||||
**Estimación:** 1 hora
|
||||
**Detalles:**
|
||||
- **Comportamiento actual:** Con 50 pelotas usa filas alternas en bordes
|
||||
- **Comportamiento deseado:** Activar modo VÉRTICES (extremos izq/der de cada fila)
|
||||
- **Problema:** Condición `num_points < 150` no es suficientemente agresiva
|
||||
- **Solución propuesta:**
|
||||
- Ajustar umbrales de activación de vértices
|
||||
- Mejorar algoritmo extractCornerVertices() para detectar puntos clave
|
||||
- Considerar densidad de píxeles en decisión (no solo cantidad absoluta)
|
||||
|
||||
### 5. 🐛 Corregir Escalado de Pelotas en Reposo
|
||||
**Descripción:** Las pelotas cambian de tamaño cuando están quietas (bug visual)
|
||||
**Prioridad:** Alta (bug visible)
|
||||
**Estimación:** 30 minutos
|
||||
@@ -87,7 +137,7 @@
|
||||
- **Investigar:** Ball::render(), scale calculations, depth brightness
|
||||
- **Solución esperada:** Tamaño constante independiente de velocidad
|
||||
|
||||
### 5. ⏳ Sistema de Release
|
||||
### 6. ⏳ Sistema de Release
|
||||
**Descripción:** Empaquetado para distribución standalone
|
||||
**Prioridad:** Baja
|
||||
**Estimación:** 30 minutos
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 720 B After Width: | Height: | Size: 618 B |
@@ -39,7 +39,7 @@ constexpr float GRAVITY_CHANGE_LATERAL_MAX = 0.08f; // Velocidad lateral máxim
|
||||
constexpr float BALL_SPAWN_MARGIN = 0.15f; // Margen lateral para spawn (0.25 = 25% a cada lado)
|
||||
|
||||
// Escenarios de número de pelotas (teclas 1-8)
|
||||
constexpr int BALL_COUNT_SCENARIOS[8] = {1, 10, 100, 500, 1000, 10000, 50000, 100000};
|
||||
constexpr int BALL_COUNT_SCENARIOS[8] = {10, 50, 100, 500, 1000, 5000, 10000, 50000};
|
||||
|
||||
// Estructura para representar colores RGB
|
||||
struct Color {
|
||||
@@ -206,4 +206,15 @@ constexpr int DEMO_LITE_WEIGHT_TOGGLE_PHYSICS = 20; // Toggle física ↔ figur
|
||||
constexpr int DEMO_LITE_WEIGHT_IMPULSE = 10; // Aplicar impulso (10%)
|
||||
// TOTAL: 100
|
||||
|
||||
// Configuración de Modo LOGO (easter egg - "marca de agua")
|
||||
constexpr int LOGO_MODE_MIN_BALLS = 500; // Mínimo de pelotas para activar modo logo
|
||||
constexpr float LOGO_MODE_SHAPE_SCALE = 1.2f; // Escala de figura en modo logo (120%)
|
||||
constexpr float LOGO_ACTION_INTERVAL_MIN = 2.0f; // Tiempo mínimo entre alternancia SHAPE/PHYSICS
|
||||
constexpr float LOGO_ACTION_INTERVAL_MAX = 5.0f; // Tiempo máximo entre alternancia SHAPE/PHYSICS
|
||||
constexpr int LOGO_WEIGHT_TOGGLE_PHYSICS = 100; // Único peso: alternar SHAPE ↔ PHYSICS (100%)
|
||||
|
||||
// Probabilidad de salto a Logo Mode desde DEMO/DEMO_LITE (%)
|
||||
constexpr int LOGO_JUMP_PROBABILITY_FROM_DEMO = 15; // 15% probabilidad en DEMO normal
|
||||
constexpr int LOGO_JUMP_PROBABILITY_FROM_DEMO_LITE = 10; // 10% probabilidad en DEMO LITE
|
||||
|
||||
constexpr float PI = 3.14159265358979323846f; // Constante PI
|
||||
@@ -102,9 +102,15 @@ class Engine {
|
||||
// Sistema de Modo DEMO (auto-play)
|
||||
bool demo_mode_enabled_ = false; // ¿Está activo el modo demo completo?
|
||||
bool demo_lite_enabled_ = false; // ¿Está activo el modo demo lite?
|
||||
bool logo_mode_enabled_ = false; // ¿Está activo el modo logo (easter egg)?
|
||||
float demo_timer_ = 0.0f; // Contador de tiempo para próxima acción
|
||||
float demo_next_action_time_ = 0.0f; // Tiempo aleatorio hasta próxima acción (segundos)
|
||||
|
||||
// Estado previo antes de entrar a Logo Mode (para restaurar al salir)
|
||||
ColorTheme logo_previous_theme_ = ColorTheme::SUNSET;
|
||||
size_t logo_previous_texture_index_ = 0;
|
||||
float logo_previous_shape_scale_ = 1.0f;
|
||||
|
||||
// Batch rendering
|
||||
std::vector<SDL_Vertex> batch_vertices_;
|
||||
std::vector<int> batch_indices_;
|
||||
@@ -137,6 +143,11 @@ class Engine {
|
||||
void randomizeOnDemoStart(bool is_lite);
|
||||
void toggleGravityOnOff();
|
||||
|
||||
// Sistema de Modo Logo (easter egg)
|
||||
void toggleLogoMode(); // Activar/desactivar modo logo manual (tecla K)
|
||||
void enterLogoMode(bool from_demo = false); // Entrar al modo logo (manual o automático)
|
||||
void exitLogoMode(bool return_to_demo = false); // Salir del modo logo
|
||||
|
||||
// Sistema de transiciones LERP
|
||||
float lerp(float a, float b, float t) const { return a + (b - a) * t; }
|
||||
Color getInterpolatedColor(size_t ball_index) const; // Obtener color interpolado durante transición
|
||||
|
||||
Reference in New Issue
Block a user