4 Commits

Author SHA1 Message Date
a9d7b66e83 Refactorizar estilo del proyecto: .h → .hpp, #pragma once, includes desde raíz
Modernizar convenciones de código C++ aplicando las siguientes directivas:

## Cambios principales

**1. Renombrar headers (.h → .hpp)**
- 36 archivos renombrados a extensión .hpp (estándar C++)
- Mantenidos como .h: stb_image.h, stb_image_resize2.h (librerías C externas)

**2. Modernizar include guards (#ifndef → #pragma once)**
- resource_manager.hpp: #ifndef RESOURCE_MANAGER_H → #pragma once
- resource_pack.hpp: #ifndef RESOURCE_PACK_H → #pragma once
- spatial_grid.hpp: #ifndef SPATIAL_GRID_H → #pragma once

**3. Sistema de includes desde raíz del proyecto**
- CMakeLists.txt: añadido include_directories(${CMAKE_SOURCE_DIR}/source)
- Eliminadas rutas relativas (../) en todos los includes
- Includes ahora usan rutas absolutas desde source/

**Antes:**
```cpp
#include "../defines.h"
#include "../text/textrenderer.h"
```

**Ahora:**
```cpp
#include "defines.hpp"
#include "text/textrenderer.hpp"
```

## Archivos afectados

- 1 archivo CMakeLists.txt modificado
- 36 archivos renombrados (.h → .hpp)
- 32 archivos .cpp actualizados (includes)
- 36 archivos .hpp actualizados (includes + guards)
- 1 archivo tools/ actualizado

**Total: 70 archivos modificados**

## Verificación

 Proyecto compila sin errores
 Todas las rutas de includes correctas
 Include guards modernizados
 Librerías externas C mantienen extensión .h

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 13:49:58 +02:00
18a8812ad7 Help Overlay: implementación preliminar 2025-10-12 07:02:22 +02:00
1bb8807060 Refactor fase 10: Implementar BoidManager completo
Cambios realizados:
- Creado BoidManager (source/boids_mgr/) con algoritmo de Reynolds (1987)
  * Separación: Evitar colisiones con vecinos cercanos
  * Alineación: Seguir dirección promedio del grupo
  * Cohesión: Moverse hacia centro de masa del grupo
  * Wrapping boundaries (teletransporte en bordes)
  * Velocidad y fuerza limitadas (steering behavior)
- Añadido BOIDS a enum SimulationMode (defines.h)
- Añadidas constantes de configuración boids (defines.h)
- Integrado BoidManager en Engine (inicialización, update, toggle)
- Añadido binding de tecla J para toggleBoidsMode() (input_handler.cpp)
- Añadidos helpers en Ball: getVelocity(), setVelocity(), setPosition()
- Actualizado CMakeLists.txt para incluir source/boids_mgr/*.cpp

Arquitectura:
- BoidManager sigue el patrón establecido (similar a ShapeManager)
- Gestión independiente del comportamiento de enjambre
- Tres reglas de Reynolds implementadas correctamente
- Compatible con sistema de resolución dinámica

Estado: Compilación exitosa, BoidManager funcional
Próximo paso: Testing y ajuste de parámetros boids

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-11 21:38:05 +02:00
b8d3c60e58 Refactor fase 1: Extraer InputHandler de Engine
Aplicación del Principio de Responsabilidad Única (SRP) - Fase 1/6

## Cambios realizados

### Nuevos archivos
- source/input/input_handler.h - Declaración clase InputHandler
- source/input/input_handler.cpp - Procesamiento eventos SDL (~180 líneas)
- REFACTOR_PLAN.md - Documento de seguimiento del refactor

### Modificaciones en Engine
- **engine.h**: Agregados 24 métodos públicos para InputHandler
- **engine.cpp**:
  - Eliminado handleEvents() (420 líneas)
  - Implementados métodos públicos wrapper (~180 líneas)
  - Renombrados métodos internos con sufijo `Internal`:
    * toggleShapeMode → toggleShapeModeInternal
    * activateShape → activateShapeInternal
    * switchTexture → switchTextureInternal
  - Bucle run() simplificado (5 → 12 líneas)

### Actualización build
- CMakeLists.txt: Agregado source/input/*.cpp a archivos fuente

## Impacto
- **Líneas extraídas**: ~430 del switch gigante de handleEvents()
- **Compilación**:  Exitosa sin errores
- **Funcionalidad**:  100% preservada

## Beneficios
-  Engine desacoplado de eventos SDL
-  InputHandler stateless (fácilmente testeable)
-  Clara separación detección input vs ejecución lógica
-  Preparado para testing unitario de inputs

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 11:39:59 +02:00