Implementar PNG_SHAPE y sistema de física mejorado

Nuevas Características:
- PNG_SHAPE (tecla O): Logo JAILGAMES desde PNG 1-bit
  - Extrusión 2D con detección de bordes/relleno configurable
  - Rotación "legible": 90% frente, 10% volteretas aleatorias
  - 15 capas de extrusión con relleno completo (22K+ puntos 3D)
  - Fix: Z forzado a máximo cuando está de frente (brillante)
  - Excluido de DEMO/DEMO_LITE (logo especial)

- Sistema de texturas dinámicas
  - Carga automática desde data/balls/*.png
  - normal.png siempre primero, resto alfabético
  - Tecla N cicla entre todas las texturas encontradas
  - Display dinámico del nombre (uppercase)

- Física mejorada para figuras 3D
  - Constantes SHAPE separadas de ROTOBALL
  - SHAPE_SPRING_K=800 (+167% rigidez vs ROTOBALL)
  - SHAPE_DAMPING_NEAR=150 (+88% absorción)
  - Pelotas mucho más "pegadas" durante rotaciones
  - applyRotoBallForce() acepta parámetros personalizados

Archivos:
- NEW: source/shapes/png_shape.{h,cpp}
- NEW: data/shapes/jailgames.png
- NEW: data/balls/{normal,small,tiny}.png
- MOD: defines.h (constantes PNG + SHAPE physics)
- MOD: engine.cpp (carga dinámica texturas + física SHAPE)
- MOD: ball.{h,cpp} (parámetros física configurables)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-04 13:26:15 +02:00
parent 9eb03b5091
commit 0f0617066e
12 changed files with 411 additions and 34 deletions

View File

@@ -22,7 +22,9 @@
### Sistemas de Presentación
- ✅ Transiciones LERP entre temas (0.5s suaves)
-Hot-swap de sprites con tecla N (ball.png ↔ ball_small.png)
-Carga dinámica de texturas desde data/balls/
- ✅ Hot-swap de sprites con tecla N (cicla entre todas las texturas)
- ✅ PNG_SHAPE (O) - Logo "JAILGAMES" con rotación legible
---
@@ -127,6 +129,13 @@
- [ ] Campos magnéticos (atracción/repulsión)
- [ ] Turbulencia
### Shapes PNG
- [ ] **Voxelización 3D para PNG_SHAPE** (Enfoque B)
- Actualmente: Extrusión 2D simple (píxeles → capas Z)
- Futuro: Voxelización real con detección de interior/exterior
- Permite formas 3D más complejas desde imágenes
- Rotación volumétrica en vez de extrusión plana
### Interactividad
- [ ] Mouse: click para aplicar fuerzas
- [ ] Mouse: drag para crear campos
@@ -136,6 +145,20 @@
## Historial de Cambios
### 2025-10-04 (Sesión 5) - PNG Shape + Texturas Dinámicas
-**PNG_SHAPE implementado** - Tecla O para activar logo "JAILGAMES"
- ✅ Carga de PNG 1-bit con stb_image
- ✅ Extrusión 2D (Enfoque A) - píxeles → capas Z
- ✅ Detección de bordes vs relleno completo (configurable)
- ✅ Tamaño 80% pantalla (como otras figuras)
- ✅ Rotación "legible" - De frente con volteretas ocasionales (3-8s idle)
- ✅ Excluido de DEMO/DEMO_LITE (logo especial)
-**Sistema de texturas dinámicas** - Carga automática desde data/balls/
- ✅ Tecla N cicla entre todas las texturas PNG encontradas
- ✅ Orden alfabético con normal.png primero por defecto
- ✅ Display dinámico del nombre de textura (uppercase)
- 📝 Preparado para voxelización 3D (Enfoque B) en futuro
### 2025-10-04 (Sesión 4) - Modo DEMO
-**Implementado Modo DEMO (auto-play)** - Tecla D para toggle
- ✅ Sistema de acciones aleatorias cada 3-8 segundos (configurable)