Commit Graph

29 Commits

Author SHA1 Message Date
c5ad8041e8 Fase 2: Refactorización de Room - Extracción del sistema de colisiones
## Cambios principales

### Nuevo componente: CollisionMap
- **collision_map.hpp/cpp**: Nueva clase que encapsula toda la lógica de detección de colisiones
- Responsabilidades extraídas de Room:
  - Determinación de tipos de tile (getTile)
  - Generación de geometría de colisión (superficies, rampas, conveyor belts)
  - Queries de colisión para Player y entidades
  - 14 métodos de detección de colisión
  - Getters para visualización debug

### Modificaciones en Room
- **room.hpp**:
  - Añadido CollisionMap como miembro (unique_ptr)
  - Removidos 7 vectores de geometría de colisión
  - Removidos 13 métodos privados de generación de geometría
  - Añadido getTile(int index) para soporte de animated tiles
  - Añadido destructor explícito (necesario para unique_ptr con forward declaration)

- **room.cpp**:
  - Constructor: Inicializa CollisionMap con tile_map, tile_set_width, conveyor_belt_direction
  - Delegación: Todos los métodos de colisión ahora llaman a collision_map_
  - Restaurados métodos de animated tiles (openTheJail, setAnimatedTiles, updateAnimatedTiles, renderAnimatedTiles)
  - Actualizado openTheJail() para usar enemy_manager_ en lugar de enemies_
  - Debug visualization actualizada para usar getters de CollisionMap

### Build system
- **CMakeLists.txt**: Añadido collision_map.cpp a las fuentes del proyecto

## Métricas
- **Código eliminado de Room**: ~465 líneas de lógica de colisión
- **Nuevo CollisionMap**: 487 líneas (collision_map.cpp)
- **Reducción neta en room.cpp**: Significativa mejora en cohesión

## Verificación
-  Compilación exitosa sin errores
-  Juego inicia y carga recursos correctamente
-  clang-tidy: Sin warnings en código de usuario
-  cppcheck: Sin issues reales (solo false positive en utils.hpp)

## Próximos pasos
- Fase 3: Extracción del sistema de renderizado de tilemap
- Fase 4: Extracción del parseo de archivos
- Fase 5: Limpieza final y reducción de Room a coordinador ligero

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 08:51:01 +01:00
2f90338214 Fase 1: Refactorización de Room - Extracción de gestión de entidades
Extraída la gestión de enemigos e items de Room a managers dedicados,
reduciendo las responsabilidades de la clase Room y mejorando la
separación de concernimientos.

Cambios principales:
- Creado EnemyManager para gestionar enemigos (creación, update, render, colisión)
- Creado ItemManager para gestionar items (creación, update, render, colisión, pickup)
- Room ahora delega toda la gestión de entidades a estos managers
- Room mantiene su interfaz pública sin cambios (retrocompatibilidad total)
- Eliminados vectores enemies_ e items_ de Room (reemplazados por managers)

Archivos nuevos:
- source/game/gameplay/enemy_manager.hpp/cpp
- source/game/gameplay/item_manager.hpp/cpp

Archivos modificados:
- source/game/gameplay/room.hpp/cpp
- CMakeLists.txt

Estado:
- Compilación exitosa
- Carga de assets verificada (325 assets OK)
- Linters ejecutados (clang-tidy y cppcheck)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 08:19:59 +01:00
54fc6d2902 unificats els resources en un namespace 2025-11-11 10:04:57 +01:00
6ea0acd3f3 Pos estava ci fent arreglos varios i m'han obligat a fer commit 2025-11-10 14:27:10 +01:00
b70b728b75 style: deixant guapetes les capçaleres de les classes 2025-11-10 13:53:29 +01:00
5dd463ad5a posss.. mes merdes que no van a cap lloc 2025-11-09 21:51:55 +01:00
288e01e47f treballant en la nova clase Player 2025-11-05 14:15:00 +01:00
3f1c737247 linter 2025-11-03 09:52:54 +01:00
824e7417ad migrat Input a la ultima versió
cohesionats tots els metodes update de les escenes
2025-11-01 22:28:51 +01:00
7441fa2b6b corregides les lectures de fitxers de text en windows. fallava per culpa del final de linea 2025-11-01 18:55:07 +01:00
b80e81dab3 fix: bug de lectura en windows en Room::loadRoomTileFile() 2025-11-01 17:51:05 +01:00
8c6bea897c actualitzada la carpeta release a SDL3
migrat a resources.pack
2025-10-31 22:58:37 +01:00
2f20ac422e eliminats metodes deprecated
migracions finals a time based
migracions de jail_audio a Audio
2025-10-31 10:32:23 +01:00
70d6cbfaf8 [DOC:29/10/2025] la surface ara se pillarà del .ANI
Tots els arxius .ani i .room retocats per a adequarse als canvis.
2025-10-29 14:22:36 +01:00
95dd6b4f70 [DOC:29/10/2025] w i h ja no fan falta, se pilla del .ANI 2025-10-29 12:22:20 +01:00
95b82e5f62 fix: errors de renombrat de variables 2025-10-29 11:56:34 +01:00
8bf9da5fb6 style: organitzada la capçalera de Room 2025-10-29 09:58:49 +01:00
cd836862c0 style: corregides les capçaleres de game/entities 2025-10-29 09:21:05 +01:00
f14a1075ab migrat Enemy a time based 2025-10-28 11:02:22 +01:00
31c84f9676 migrat Game, Player i Item a time based 2025-10-28 10:52:13 +01:00
3179a08dac linter 2025-10-27 18:35:53 +01:00
b1dca32a5b linter 2025-10-27 17:39:23 +01:00
cdb9bde6aa linter 2025-10-27 13:01:11 +01:00
5d8811026d linter 2025-10-27 11:53:12 +01:00
87370dd11d migracio de Title a time based 2025-10-26 23:07:08 +01:00
342177a751 renombrades les clases SSprite a SurfaceSprite 2025-10-26 14:56:56 +01:00
2eadd7d8df mes reestructuracio de fitxers de codi 2025-10-26 14:46:19 +01:00
df4965a84b canviat Options de struct a namespace 2025-10-26 14:01:08 +01:00
8f49e442de redistribuida la carpeta source 2025-10-26 13:02:45 +01:00