## 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>
JailDoctor's Dilemma
JailDoc és un Jailer. Als Jailers els agrada començar projectes. A ningú li agrada acabar-los. Els Jailers viuen a la Jail. A la Jail s'hi va a començar projectes. A la Jail s'hi va a ensenyar els projectes. A la Jail s'hi va a aprendre com començar nous projectes. A la Jail s'hi va a ajudar els companys a començar nous projectes.
JailDoc és un Jailer destacat entre els Jailers. Té més projectes començats que ningú i és qui més ajuda als altres a iniciar els seus.
Però un dia, va passar una cosa inesperada. Algú va acabar un projecte. Algú va alliberar el Puzzle Jail Facker. Un autèntic desaprensiu.
Això va fer que JailDoc prenguera una decisió: acabaria i lliuraria un dels seus projectes. Però, quin? JailBattle? Sigmasuá? Calculín Doom? Quin dilema! Finalment, es va arromangar i va decidir acabar i lliurar tots els seus projectes inacabats. Ho aconseguirà?
Jugabilitat
Ajuda a JailDoc a recuperar les peces dels seus projectes, que estan escampades per qualsevol racó de l'Univers Jailer. Hi ha més de 150 peces repartides en 60 pantalles. Algunes són senzilles, però en altres hauràs de calcular molt bé els teus moviments si no vols acabar com un arounder més.
Quan hages recuperat la major part de les peces, dirigeix-te a la Jail per mostrar als Jailers com es finalitza un projecte. Però compte! Bry no et deixarà entrar així com així. Només aquells que han creat un Fire Effect o un Facedor de Tornejos són dignes d'aquesta fita.
Controls
El joc permet tant l'ús del teclat com d'un comandament. Les tecles per a jugar són les següents:
-
Cursors: Per moure's a l'esquerra o dreta i per saltar. Es poden modificar les tecles en el fitxer de configuració, triant entre aquestes opcions:
- O, P per moure's i Q per saltar.
- A, D per moure's i W per saltar.
-
Tecla M: Activa o desactiva la música.
-
Tecla P: Pausa el joc.
-
Tecla ESC: Ix del joc si estàs jugant. Tanca el programa en qualsevol altra circumstància.
-
Tecla F1: Disminueix la mida de la finestra.
-
Tecla F2: Augmenta la mida de la finestra.
-
Tecla F3: Alterna entre el mode de pantalla completa i el mode finestra.
-
Tecla F4: Activa o desactiva els shaders.
-
Tecla F5: Estableix la següent paleta de colors.
-
Tecla F6: Estableix la paleta de colors prèvia.
-
Tecla F7: Activa o desactiva el escalat exacte.
-
Tecla B: Activa o desactiva el marge de colors.
Dades del programa
El programa guarda automàticament la configuració del mode de vídeo i les estadístiques del joc a la teua carpeta personal del sistema. La ubicació d'aquesta carpeta depén del sistema operatiu que utilitzes:
- Windows:
C:\Users\<nom_d'usuari>\AppData\Roaming\jailgames\jaildoctors_dilemma - MacOS:
~/Library/Application Support/jailgames/jaildoctors_dilemma - Linux:
~/.jailgames/jaildoctors_dilemma
Dins de la carpeta es troba el fitxer de configuració config.txt, on es pot modificar la configuració per connectar-se al servei en línia, i els fitxers stats.csv i stats_buffer.csv, que contenen informació sobre les estadístiques del joc.
Agraïments
Gràcies, com sempre, a tots els Jailers per motivar-me a crear aquest joc i per ajudar-me en els moments de dubte en escriure el codi. I, com sempre, un agraïment especial a JailDoc per la seua unitat de Jail_Audio i per qualsevol altre codi, ajuda o ensenyament que haja necessitat per a completar el programa.
Si no he perdut el compte, aquest és el quart joc que aconseguisc crear.
13 de novembre de 2022, JailDesigner


