From 970ff224c382332847f2c7880af6586719606e83 Mon Sep 17 00:00:00 2001 From: marti Date: Fri, 2 Jan 2026 23:06:40 +0100 Subject: [PATCH] Fix tile rendering dimensions and alignment, update tile definitions to use height --- DEVLOG.md | 279 ++++++++-- implementación/coordinate_system_analysis.md | 153 ++++++ .../implementation_plan_rotation.md | 34 ++ .../images/dungeon1/doors/door1_closed.png | Bin 248289 -> 250491 bytes src/engine/dungeon/DungeonDeck.js | 54 +- src/engine/dungeon/DungeonGenerator.js | 495 +++++++++--------- src/engine/dungeon/DungeonGenerator.js.temp | 50 ++ src/engine/dungeon/GridSystem.js | 224 +++----- src/engine/dungeon/TileDefinitions.js | 450 ++++++++++++---- src/engine/dungeon/old/DungeonGenerator.js | 181 +++++++ src/engine/dungeon/old/GridSystem.js | 134 +++++ src/engine/game/GameEngine.js | 233 +++------ src/engine/game/old/GameEngine_20260102.js | 196 +++++++ src/main.js | 154 +++--- src/old/main_20260102.js | 172 ++++++ src/view/GameRenderer.js | 237 +++++++-- src/view/UIManager.js | 145 ++++- 17 files changed, 2322 insertions(+), 869 deletions(-) create mode 100644 implementación/coordinate_system_analysis.md create mode 100644 implementación/implementation_plan_rotation.md create mode 100644 src/engine/dungeon/DungeonGenerator.js.temp create mode 100644 src/engine/dungeon/old/DungeonGenerator.js create mode 100644 src/engine/dungeon/old/GridSystem.js create mode 100644 src/engine/game/old/GameEngine_20260102.js create mode 100644 src/old/main_20260102.js diff --git a/DEVLOG.md b/DEVLOG.md index 8dbfc3f..4e6ad39 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -1,55 +1,242 @@ -# Devlog - Sesión 1: Inicialización y Motor 3D +# Devlog - Warhammer Quest (Versión Web 3D) -## Fecha: 30 de Diciembre, 2025 +## Sesión 4: Sistema de Colocación Manual - Estado Actual (2 Enero 2026) + +### Objetivo +Implementar un sistema de colocación manual de tiles donde el jugador: +1. Mueve al bárbaro junto a una puerta +2. Hace click en la puerta para abrir y revelar una nueva tile +3. Puede rotar/mover la tile flotante antes de colocarla +4. Confirma la colocación con el botón "Bajar" + +### Trabajo Realizado + +#### 1. Limpieza de Código +- **Problema**: Código viejo de gameplay mezclado con nuevo sistema de construcción +- **Solución**: + - Copiado `GameEngine.js` y `main.js` a carpetas `old/` con fecha (20260102) + - Reescrito versiones minimalistas enfocadas SOLO en construcción manual + - Añadido sistema de jugador (bárbaro) con movimiento básico + +#### 2. Flujo de Trabajo Implementado +- ✅ Bárbaro aparece en primera tile +- ✅ Click en bárbaro → selección (anillo amarillo) +- ✅ Click en celda → movimiento +- ✅ Click en puerta adyacente → abre y muestra tile flotante +- ✅ Tile flotante a Y=3 con proyección verde/roja en suelo +- ✅ Panel de controles (rotar, mover, bajar) + +#### 3. Problemas Identificados y Parcialmente Resueltos + +**Problema 1: Dimensiones de Tiles** +- **Error**: Usaba `.length` en lugar de `.height` para dimensiones de variantes +- **Impacto**: Rooms aparecían como 1x4 en lugar de 4x4 +- **Solución**: Cambiado a usar `variants.N.width` y `variants.N.height` + +**Problema 2: Rotación de Texturas** +- **Error**: Aplicaba rotación visual a planos con dimensiones ya rotadas +- **Intento de solución**: Usar dimensiones BASE (NORTH) y aplicar rotación Z +- **Estado**: Implementado pero no verificado completamente + +**Problema 3: Posicionamiento Decimal** +- **Error**: Coordenadas de placement eran decimales (1.5, 2.5) +- **Solución**: Añadido `Math.round()` en `selectDoor` para anchor inicial + +### Estado Actual - PROBLEMAS CRÍTICOS + +**🔴 TILES NO SE COLOCAN CORRECTAMENTE** +- Las dimensiones siguen siendo incorrectas para algunos tiles +- La rotación visual no coincide con la proyección lógica +- Las tiles se mueven de posición al bajarlas (T-junction) +- Rooms aparecen deformadas o mal dimensionadas + +### Causa Raíz del Problema + +**Confusión entre dos conceptos:** +1. **Dimensiones lógicas** (celdas que ocupa la tile) - calculadas desde `cells` +2. **Dimensiones visuales** (tamaño del plano 3D) - deberían ser de la textura + +**El problema fundamental:** +- Las texturas están diseñadas para orientación NORTH +- Cuando roto una tile, las CELDAS cambian de posición +- Pero la TEXTURA sigue siendo la misma imagen +- Estoy mezclando dimensiones de celdas rotadas con texturas sin rotar + +### Archivos Modificados +- `src/engine/game/GameEngine.js` - Reescrito (versión limpia) +- `src/main.js` - Reescrito (versión limpia) +- `src/view/GameRenderer.js` - Múltiples cambios en `addTile` y `showPlacementPreview` +- `src/engine/dungeon/DungeonGenerator.js` - Añadido redondeo de coordenadas + +### Próximos Pasos Recomendados +1. **PAUSA**: Reiniciar ordenador, aumentar RAM +2. **REVISIÓN COMPLETA**: Analizar la lógica de dimensiones vs rotación desde cero +3. **SIMPLIFICACIÓN**: Quizás necesitamos un enfoque completamente diferente para el renderizado de tiles rotadas + +--- + +## Sesión 3b: Corrección Crítica de Alineación (2 Enero 2026) + +### Diagnóstico del "Desastre" +Tras refactorizar el generador, las piezas aparecían desalineadas o superpuestas. +- **Causa Raíz**: Inconsistencia de Sistemas de Coordenadas. +- **Detalle**: + - Los nuevos *Corridors* usaban definiciones de salida "Pre-Rotadas" (coordenadas relativas al ancla *después* de rotar). + - Las *Habitaciones y Uniones* (Rooms/Junctions) usaban definiciones "Locales" (coordenadas relativas al tile sin rotar). + - El nuevo `DungeonGenerator` asumía que TODAS las definiciones eran "Pre-Rotadas" y sumaba las coordenadas directamente. + - Esto causaba que Rooms y Junctions rotados hacia el Este/Sur/Oeste se calcularan en posiciones totalmente erróneas (fuera del tile). + +### Solución Implementada +Se unificó todo el sistema al paradigma **Pre-Rotated Relative Offsets**: +1. **Actualización Masiva**: Se reescribieron las definiciones `exitsByRotation` para `corridor_corner`, `junction_t`, `room_dungeon` y `room_objective`. +2. **Lógica Geométrica**: + - **NORTH**: X positivo, Y positivo. + - **EAST**: X positivo, Y negativo (el tile crece hacia abajo). + - **SOUTH**: X negativo, Y negativo (el tile crece hacia izquierda/abajo). + - **WEST**: X negativo, Y positivo (el tile crece hacia izquierda/arriba). +3. **Verificación**: Ahora todas las definiciones de salida coinciden con la geometría real generada por `GridSystem` en cada rotación. + +### Estado +- ✅ **Alineación**: Debería ser perfecta para todos los tipos de tiles y rotaciones. +- ✅ **Código**: Mucho más limpio y sin cálculos trigonométricos en tiempo de ejecución. + +--- + +## Sesión 3: Refinamiento de Generación de Mazmorras (2 Enero 2026) ### Resumen General -En esta sesión se ha establecido la base completa del motor de juego para **Warhammer Quest (Versión Web 3D)**. Se ha pasado de un concepto inicial a una aplicación dockerizada con generación procedimental de mazmorras y visualización isométrica en 3D. +Sesión enfocada en resolver problemas fundamentales de alineación de tiles en la generación de mazmorras. Se identificó que el problema raíz estaba en el uso de cálculos dinámicos de rotación para tiles con definiciones estáticas de salidas. + +### Trabajo Realizado + +#### 1. Análisis del Problema de Rotación +- **Descubrimiento clave**: Las definiciones de tiles en `TileDefinitions.js` tienen salidas con coordenadas y direcciones **estáticas** (relativas a orientación Norte). +- **Problema**: Los cálculos de `getRotatedOffset()` y `getRotatedDirection()` asumían tiles cuadrados y simétricos, fallando con tiles asimétricos (corridors 2x6, L-corners con forma irregular). +- **Impacto**: Corridors y L-corners se colocaban desalineados, creando gaps entre tiles. + +#### 2. Implementación de Configuraciones de Corridor +- **Contexto del manual**: Los corridors tienen 1 puerta fija y 1 puerta variable con 3 posiciones posibles (Norte, Este lateral, Oeste lateral). +- **Solución inicial**: Creamos `exitConfigurations` para corridors con 3 opciones de salida. +- **Decisión**: Corridors **NO rotan**, solo cambian de configuración de salida. +- **Resultado**: Simplifica la lógica pero no resuelve el problema de otros tiles. + +#### 3. Enfoque de Salidas Explícitas por Rotación +- **Decisión de diseño**: Cambiar de cálculos dinámicos a definiciones explícitas. +- **Implementación**: Añadir `exitsByRotation` a cada tile que rota (L-Corner, T-Junction, Rooms). +- **Estructura**: + ```javascript + exitsByRotation: { + [DIRECTIONS.NORTH]: [ /* exits for North orientation */ ], + [DIRECTIONS.EAST]: [ /* exits for East orientation */ ], + [DIRECTIONS.SOUTH]: [ /* exits for South orientation */ ], + [DIRECTIONS.WEST]: [ /* exits for West orientation */ ] + } + ``` + +#### 4. Tiles Actualizados +- ✅ **L-Corner (corridor_corner)**: 4 rotaciones definidas explícitamente +- ✅ **T-Junction (junction_t)**: 4 rotaciones definidas explícitamente +- ✅ **Dungeon Room (room_dungeon)**: 4 rotaciones definidas explícitamente +- ✅ **Objective Room (room_objective)**: 4 rotaciones definidas explícitamente +- ✅ **Corridors**: Mantienen `exitConfigurations` (3 opciones, sin rotación) + +### Estado Actual + +#### Completado +- ✅ Definiciones de `exitsByRotation` para todos los tiles que rotan +- ✅ Definiciones de `exitConfigurations` para corridors +- ✅ Logs de diagnóstico mejorados para debugging + +#### En Progreso +- ⚠️ **DungeonGenerator.js**: Lógica de `step()` parcialmente actualizada + - Se añadió detección de `exitsByRotation` + - **PROBLEMA**: Errores de sintaxis en bucles anidados (11 errores de linting) + - Necesita reestructuración completa de la lógica de iteración + +#### Pendiente +- ❌ Eliminar cálculos de rotación obsoletos (`getRotatedOffset`, `getRotatedDirection`) una vez que `exitsByRotation` funcione +- ❌ Pruebas completas de alineación con las nuevas definiciones +- ❌ Limpieza de código y eliminación de logs de debug + +### Problemas Identificados + +1. **Bucles anidados incorrectos**: La lógica actual tiene 3 niveles de bucles mal estructurados: + - Configuraciones (para corridors) + - Rotaciones (para otros tiles) + - Salidas (para cada rotación/configuración) + +2. **Mezcla de enfoques**: El código intenta manejar simultáneamente: + - `exitConfigurations` (corridors sin rotación) + - `exitsByRotation` (otros tiles con rotación) + - Cálculos dinámicos (legacy, debe eliminarse) + +### Próximos Pasos (Mañana) + +#### Prioridad Alta +1. **Reestructurar `step()` en DungeonGenerator.js**: + - Separar lógica para corridors (exitConfigurations) vs otros tiles (exitsByRotation) + - Simplificar bucles anidados + - Eliminar cálculos de rotación cuando se use `exitsByRotation` + +2. **Verificar alineación**: + - Probar cada tipo de tile en todas sus rotaciones + - Confirmar que no hay gaps ni overlaps + +#### Prioridad Media +3. **Limpieza de código**: + - Eliminar `getRotatedOffset()` y `getRotatedDirection()` (obsoletos) + - Remover logs de debug innecesarios + - Documentar la nueva estructura + +4. **Optimización**: + - Revisar performance de la generación + - Considerar caché de configuraciones válidas + +### Notas Técnicas + +**Ventajas del enfoque `exitsByRotation`**: +- ✅ Elimina errores de cálculo matemático +- ✅ Funciona para cualquier forma de tile (simétrico o asimétrico) +- ✅ Fácil de verificar manualmente +- ✅ Sin ambigüedad en las conexiones + +**Desventajas**: +- ❌ Más código (cada tile requiere 4 definiciones) +- ❌ Propenso a errores manuales al escribir coordenadas +- ❌ Más difícil de mantener si cambian dimensiones de tiles + +### Decisiones de Diseño + +1. **Corridors no rotan**: Solo cambian configuración de puerta (3 opciones) +2. **Otros tiles rotan**: Usan `exitsByRotation` con 4 orientaciones explícitas +3. **Sin cálculos dinámicos**: Las salidas ya están en coordenadas correctas para cada rotación +4. **Logs detallados**: Mantener durante debugging, eliminar en producción + +--- + +## Sesión 2: Refinamiento de Generación (31 Diciembre 2025) + +### Resumen +Implementación de sistema de exploración guiada por jugador y mejoras en la interfaz de usuario. ### Hitos Alcanzados +- ✅ Sistema de movimiento de jugador implementado +- ✅ Selección de puertas para exploración +- ✅ Modal de confirmación para abrir puertas +- ✅ Generación paso a paso según decisiones del jugador +- ✅ Cámara con transiciones suaves entre vistas +- ✅ Mejoras en UI (botones, controles, feedback visual) -#### 1. Infraestructura -* **Dockerización**: Se creó un entorno conteinerizado usando `Dockerfile` y `docker-compose`. La aplicación corre sobre **Nginx** (Frontend) y se construye con **Node.js/Vite**. -* **Estructura del Proyecto**: Configuración de `package.json`, `index.html` limpio, y carpetas organizadas (`src/engine`, `src/view`, `public/assets`). +--- -#### 2. Motor de Juego (Engine) -* **GridSystem**: Implementación de un sistema de coordenadas global y local. Soporte para rotación de baldosas y detección de colisiones mediante matrices de ocupación (`layout`). -* **DungeonGenerator**: Lógica central de generación. - * Gestiona el bucle de "Paso a paso" (Step). - * Conecta baldosas basándose en las salidas (`Exits`) disponibles. - * Valida superposiciones antes de colocar una pieza. -* **DungeonDeck (Reglas)**: Implementación fiel al libro de reglas. - * Mazo de 13 cartas. - * Mezcla inicial de cartas de mazmorra y pasillo. - * Inserción de la "Habitación Objetivo" en la segunda mitad (últimas 7 cartas) para asegurar una duración de partida adecuada. -* **TileDefinitions**: Base de datos de baldosas (Corridor, Corner, T-Junction, Rooms). - * Definición de dimensiones físicas y lógicas. - * Definición de puntos de salida (Norte, Sur, Este, Oeste). - * Asignación de texturas. +## Sesión 1: Inicialización y Motor 3D (30 Diciembre 2025) -#### 3. Visualización 3D (Three.js) -* **GameRenderer**: - * Escena básica con iluminación ambiental y direccional. - * **Visualización de Debug**: `GridHelper` (suelo) y `AxesHelper` (ejes). - * **Renderizado de Baldosas**: - * Creación de "Grill" (rejilla de alambre) para visualizar celdas individuales lógica. - * Implementación de `TextureLoader` para cargar imágenes PNG sobre planos 3D. -* **CameraManager**: - * Cámara Isométrica (`OrthographicCamera`). - * Controles de órbita fijos (N, S, E, O). - * Zoom y Panoramización. -* **Assets**: Integración de texturas (`.png`) para baldosas, movidas a la carpeta `public/assets` para su correcta carga en el navegador. +### Resumen +Establecimiento de la base completa del motor de juego con generación procedimental y visualización 3D. -### Estado Actual -### Estado Actual -### Estado Actual -* El generador crea mazmorras y las visualiza en 3D con texturas. -* **Problemas de Alineación**: Persisten desajustes en las conexiones de mazmorra (efecto zig-zag en puertas dobles) en la generación automática. -* **Decisión de Diseño**: Se detiene el refinamiento de la generación automática aleatoria. El enfoque cambia a implementar la **Exploración Guiada por el Jugador**, donde la mazmorra se genera pieza a pieza según la decisión del usuario, lo que simplificará la lógica de conexión y evitará casos límite generados por el azar puro. - -### Próximos Pasos (Siguiente Sesión) -* Implementar al Jugador (Héroe) y su movimiento. -* Desactivar la generación automática (`generator.step()` automático). -* Crear UI para que el jugador elija "Explorar" en una salida específica. -* Generar solo la siguiente pieza conectada a la salida elegida. -* Implementar la interfaz de usuario (UI) para mostrar cartas y estado del juego. -* Añadir modelos 3D para héroes y monstruos. +### Hitos Alcanzados +- ✅ Infraestructura dockerizada (Nginx + Node.js/Vite) +- ✅ Motor de juego (GridSystem, DungeonGenerator, DungeonDeck) +- ✅ Visualización 3D con Three.js +- ✅ Sistema de cámara isométrica +- ✅ Carga de texturas y assets diff --git a/implementación/coordinate_system_analysis.md b/implementación/coordinate_system_analysis.md new file mode 100644 index 0000000..49649b0 --- /dev/null +++ b/implementación/coordinate_system_analysis.md @@ -0,0 +1,153 @@ +# Análisis del Sistema de Coordenadas + +## GridSystem - Cómo Funciona la Rotación + +En `GridSystem.getGlobalCells()`, las transformaciones son: + +```javascript +// Local coords: lx (columna), ly (fila convertida desde matriz) +// ly = (numberOfRows - 1) - row // Fila 0 de matriz = Y más alto + +switch (rotation) { + case NORTH: + gx = startX + lx; + gy = startY + ly; + break; + case SOUTH: + gx = startX - lx; + gy = startY - ly; + break; + case EAST: + gx = startX + ly; + gy = startY - lx; + break; + case WEST: + gx = startX - ly; + gy = startY + lx; + break; +} +``` + +## Ejemplo: Corridor 2x6 (Ancho=2, Largo=6) + +Layout en matriz (fila 0 arriba, fila 5 abajo): +``` +[1, 1] // Fila 0 -> ly=5 (norte) +[1, 1] // Fila 1 -> ly=4 +[1, 1] // Fila 2 -> ly=3 +[1, 1] // Fila 3 -> ly=2 +[1, 1] // Fila 4 -> ly=1 +[1, 1] // Fila 5 -> ly=0 (sur) +``` + +### Rotación NORTH (Sin rotar) +- Anchor en (0,0) +- Celdas ocupadas: (0,0) (1,0) (0,1) (1,1) ... (0,5) (1,5) +- Salida SUR: celdas (0,0) y (1,0) -> exits en estas posiciones mirando SOUTH +- Salida NORTE: celdas (0,5) y (1,5) -> exits en estas posiciones mirando NORTH + +**Definición de exits para NORTH (Config Straight):** +```javascript +{ x: 0, y: 0, direction: SOUTH }, +{ x: 1, y: 0, direction: SOUTH }, +{ x: 0, y: 5, direction: NORTH }, +{ x: 1, y: 5, direction: NORTH } +``` + +### Rotación EAST +- Anchor en (0,0) +- Transformación: gx = 0 + ly, gy = 0 - lx +- Celda local (lx=0, ly=0): Global (0, 0) +- Celda local (lx=1, ly=0): Global (0, -1) +- Celda local (lx=0, ly=5): Global (5, 0) +- Celda local (lx=1, ly=5): Global (5, -1) + +El corridor ahora es horizontal, creciendo hacia la derecha (+X), con ancho en dirección -Y. + +**Celdas ocupadas:** +- (0,0), (0,-1) - extremo oeste +- (1,0), (1,-1) +- (2,0), (2,-1) +- (3,0), (3,-1) +- (4,0), (4,-1) +- (5,0), (5,-1) - extremo este + +**Definición de exits para EAST (Config Straight):** +Salida WEST (era SUR): en el extremo oeste +```javascript +{ x: 0, y: 0, direction: WEST }, +{ x: 0, y: -1, direction: WEST } +``` + +Salida EAST (era NORTE): en el extremo este +```javascript +{ x: 5, y: 0, direction: EAST }, +{ x: 5, y: -1, direction: EAST } +``` + +### Rotación SOUTH +- Anchor en (0,0) +- Transformación: gx = 0 - lx, gy = 0 - ly +- Celda local (lx=0, ly=0): Global (0, 0) +- Celda local (lx=1, ly=0): Global (-1, 0) +- Celda local (lx=0, ly=5): Global (0, -5) +- Celda local (lx=1, ly=5): Global (-1, -5) + +El corridor crece hacia abajo (-Y) y hacia la izquierda (-X). + +**Celdas ocupadas:** +- (0,0), (-1,0) - extremo norte (era sur) +- (0,-1), (-1,-1) +- (0,-2), (-1,-2) +- (0,-3), (-1,-3) +- (0,-4), (-1,-4) +- (0,-5), (-1,-5) - extremo sur (era norte) + +**Definición de exits para SOUTH (Config Straight):** +Salida NORTH (era SUR original): en el extremo norte +```javascript +{ x: 0, y: 0, direction: NORTH }, +{ x: -1, y: 0, direction: NORTH } +``` + +Salida SOUTH (era NORTE original): en el extremo sur +```javascript +{ x: 0, y: -5, direction: SOUTH }, +{ x: -1, y: -5, direction: SOUTH } +``` + +### Rotación WEST +- Anchor en (0,0) +- Transformación: gx = 0 - ly, gy = 0 + lx +- Celda local (lx=0, ly=0): Global (0, 0) +- Celda local (lx=1, ly=0): Global (0, 1) +- Celda local (lx=0, ly=5): Global (-5, 0) +- Celda local (lx=1, ly=5): Global (-5, 1) + +El corridor es horizontal, creciendo hacia la izquierda (-X), con ancho en dirección +Y. + +**Celdas ocupadas:** +- (0,0), (0,1) - extremo este (era sur) +- (-1,0), (-1,1) +- (-2,0), (-2,1) +- (-3,0), (-3,1) +- (-4,0), (-4,1) +- (-5,0), (-5,1) - extremo oeste (era norte) + +**Definición de exits para WEST (Config Straight):** +Salida EAST (era SUR original): en el extremo este +```javascript +{ x: 0, y: 0, direction: EAST }, +{ x: 0, y: 1, direction: EAST } +``` + +Salida WEST (era NORTE original): en el extremo oeste +```javascript +{ x: -5, y: 0, direction: WEST }, +{ x: -5, y: 1, direction: WEST } +``` + +## Conclusión +Las definiciones actuales de corridors están ✅ **CORRECTAS**. + +El problema debe estar en el `DungeonGenerator.js`. diff --git a/implementación/implementation_plan_rotation.md b/implementación/implementation_plan_rotation.md new file mode 100644 index 0000000..3456fe1 --- /dev/null +++ b/implementación/implementation_plan_rotation.md @@ -0,0 +1,34 @@ +# Paradigm Shift: Explicit Rotations & Corridors + +## Goal +To eliminate dynamic rotation calculations which caused alignment issues, specifically for asymmetric tiles like Corridors (2x6). We will implement explicit exit definitions for all 4 rotations for Corridors, just like we did for Rooms. + +## Steps + +### 1. Update `TileDefinitions.js` +- Modify `corridor_straight` and `corridor_steps`. +- Change `exitConfigurations` from an array of simple arrays to an array of objects. +- Each object will represent a configuration (Straight, Corner-Left, Corner-Right) but will contain `exitsByRotation` for `NORTH`, `EAST`, `SOUTH`, `WEST`. +- Pre-calculate coordinates for these rotations based on the 2x6 layout. + +### 2. Rewrite `DungeonGenerator.js` +- **Simplify `step()`**: + - Iterate through `TileDefinitions` that might apply. + - Handle `pendingExits`. +- **New Alignment Logic**: + - Pick a card. + - If it has `exitConfigurations` (Corridors), iterate them. + - Inside, iterate 4 Rotations. + - Inside, iterate Exits. + - If it has simple definitions (Rooms), iterate 4 Rotations. + - Inside, iterate Exits. +- **Placement**: + - Calculate `GlobalPos = TargetConnection - LocalExitPos`. + - Check Validity (Opposite Direction). + - Check `canPlace`. +- **Cleanup**: Remove deprecated methods like `getRotatedOffset`. + +## Expected Outcome +- Corridors align perfectly in all directions. +- No gaps. +- Code is easier to understand (no complex matrix rotation math in JS, just lookups). diff --git a/public/assets/images/dungeon1/doors/door1_closed.png b/public/assets/images/dungeon1/doors/door1_closed.png index 3af314c76273f0350489e1f13f5486079be10288..5da90c677f6ee264dfe121aafb3147e2baa1d00f 100644 GIT binary patch delta 182035 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�xZ_%`z) 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

1mdH6;j%%x$yjSCN6S+ z83N9!sD{(V>3r65@3>8;ljHpK!u$J`QY!u&IQAV{P3^&VkMxD#7&e0Bz(mAq5>F8DO%bnRZe_Q#wY51;JWFKR`y7a{zW=uB-^im1B zWu-IQ!P~xb3aiG`rUP=!R>z!n1?gs8vSDyNZg?ArPGC$kljqJ`+^`dQ;wd?kol$p* zbM$(Dr9iKh+bxlc7Mn{Hp*4E7QZ9ZXyNxm}DYseHq@`}H3WYLXs6&Mw`B4perS?jQ3$ZUWTO_&8rExf#C^B&ube=splhFhd98o^I6P@qLzh&0g+~c4E$0b&C+$)6Ubnu*H>R8rJe(=cf~ki^LGfG)Q--smL3(wFlXFPnufBPy?vSGO$*J!n8uqvDG#a1XhacEbj+#P7=7-B6(}os=CrThaj8`kYVVKzVQm>_ zqd0U!ChO9Kn%ARhuq-PvMm~RObYoQsTz7(xeDm#hq*QqS{DtT9%CbcAk;tiNze<%Q zxHag87_@UbCX9An7RI_VhSBcOe^`!PF2GybX>|~S`l|9#Ir3*pOT4^%c#yf}RCSUL z5zMwu+Ja^mJBNt!+g&UZ;v&EOxHE``+5!8RMLUKN1Kw}cmj_ZXw2GKjc=H@|KvwFQt@1)k* zW<1s4R4CRDtQ$ldaLrJUf2>}cbzzHhi zH@Q$+6=K~wi+2HUgF=w4>M-jK=iPJ^2`OVH$jdr6B|RNxn%wS0TII+)YK)B5vzkR+ zm$SS}e<|s0+ShQO!_uhJBmprj#3eo^W@9Wq-mT;FqNojA!!w9pf3Bb4^gFQDVaCo* zniA%Cur*~~k)zJ~@Ss??UMVzelax}8f{eEF0GsAi=bleHxKx`OB0Fld9GxXBc;^@- zO3Mmo(jKA1ZW<2v=n1jLK8ol{9cnclnUvKQ(~P46*PIyEaI_|eo3WxZTT9yW1Y9;+ z*VLn_K}A~342r?de^M|>vGuV)9}{rcF^)A>nyy#eb~Sy5W0o53&+9~XMg?0aT! zny#04qICsfYez3`EW-+U!!Q`*=|G)`H5pwx-VVx4lWT`)Cb7FxW(}}4_wqLFZ;jK& zulF$(45NKd)vjq+L(e+b7?R#vOS3FXyRzImwNIg=Y&nK>_P|9FiG-^OoP^kqzc;JWXLXvsZV21jowrD)-n zcGkGkdZG2qe|bCOY~a)9U%1}h*_M+?v#CmQDus1XXfYoz!-Jk7%|U8 zG??Mkf7WnbKg0Wj#XE-&mei`kn-h}g?CgALg;L8y{-O(lN!PO33$TR45v{1o#;Zfb zScO7QF>;g+RgRzN33{7?g1!CH#RIGc!O(f?P9 zE;PfVe2YoGe$;Q9rcQfjabvxz+MTR1;(cJB6p5ZY(FaN`l6Sh$G-g(A*Vd^%(}ouAeQ4SVE>22^EWk3yC=;}& zf5Lf_CENne$@EblpO-ngSi>5^q>gJJT#EW{oRbvaYiC$ZJa@3{{UdKiXFskS$CJq9 zlV3NQCXL&^^Rz{7`$6#PH(FxkdQIB-6v=+hNQRHj&z~!pxM)((g%G`dHVBs#{i2<# zHJr9hY66a&GS85u+{!GzP(i|<=WV71pl?(e>nDI zF1PhWZLQ;7;Pw1ODMG5msIb|xtU|w|y+@m`r8eb=TIY+?X}mPELfLp(CcACqRA=!| zn{E$}!w`%kF7p8Dxnv(3^gb#`!4+O+aO)aTzg7w49sm1p0g}%ZhFK-*=0)bw+i<^K#Tw zqzQ_LEq4B1MkBa5>Ck$(8Yd~JcZDgjdSP2*3C>cgVLPp?N9I}zug@=(TJdhMM9*k} z)GN-wUUgX8DYY)k!u$0)f2k6UB?Q{gXX0MY*J=S5CgsBc(|l47nH?qoc38=n)>=lZ zm(qL2e?wqwJ!N6A6$<-1Hy)F*%)JR>qShonbuHC?yQpr$(v11 zt>8T=-AL*3aNvz$Ir5EDT~xK+J4Y#)lsT^p&)Z6!HR`EW(%vx6e{fn(?CC~9rFzW{ zO40tr7*DQ=R1)8Q_*QDc{7!}$Fuq+bT=ok-DwHsqfAN<1^vlnj){U3fSN7YLlroq~83pI;?46kQ$|KWK#mvL6w8EY* ze0l!`4PiNA^e>BiGxO!-COUfvSxn@|xGB4*&DznrnEG(@u z@Psu;7Ma-|Gne9hG|{(vm4nGxa;xe^@0KGU>=iC)=cxM3lwKaBh+4I%*3@n}`HjV^ zI@%47??VqaW1(rP_d)wKj3G5u00b)#;yK!x3?H-Ke?yhc!&%A=H z+kJ?sWw3vBkwGa*3v(msC&b9Q1ddW@MNNp?vT)mX*=&6zl|-Lysl#?`&T2RvddPXJ zY|oxDOYlPXwDw5f2V*hDJ?!hXck+YBy!kWP95a)_QVl%B4(7 zy0bC?e+lI4*pG~NA}Y78AowtY)`F-JLl0QUl%iai3b$r!DNvi-e7z06yuWkV56BQOHoE2%k8*w3aV5$19FzR;h47T)4D3F<#kD8?*($I zr)aeigCV!9{j+hZiO(`mj-B@$Ixo0TJ@e|{lq=E*&J9o_BNOL7VG3D>c+4wC-rOlh1dCO+^i~8I=T=WcVJ>~ePY^0Vs%qD_Rev+9gjm&A;$7RjtB1~H;gJ%f|-Ct133%x zVS|~?grWueYOwRwui?~~lGTna%y>$T|{oQ7&gmWK_ zUI(>ioVOT@aP%&yr}EG~#yN}i3k)4n+jiz@Q#jOA5qVS54r6nX9xK64YHcn!3yU)> z)=o!{CWzLj9k}+Xu@A)eHekJWP2FItoP*t%iJH%}*69Q~ezLK&OFCMaZG{cvX0$)B zU9v_eKPqtBD3np~!_OtOAfe5PqyUB`I>wxm+vu}^&fU2M99fTq(<*6fcu1)|BsPrU z>9o<>w4u)a898SirngC-7Luj5N}gnh*2N;zeH64~v-*73nr6zr&!u~vxgbrKzhDCu zf5~JGGaRk9d4|jheM&lhR!cL#m$@`bQ_~5O=DN5+`^Nep zyPJo5cg&Hc9Q$u~vDDhXT8-_P%pbn~aPxu1O+9|qhkta=%ZYW_xTS+%Z@@tZ+VBa|eZuH8g!gUxxeVRp|rmau{?G;0{fu*QgM@VqYc(aCi>eK3+VFgy># z(-OfnTxTYkrA2#hXGv6-+%o#3f9|%_Dq?{_vg5S)sV60?cqvBA7}Q!YcuJKU$c*V2 zi>oyDBIl8vp9yEJdgJFJ)lb`TZ_@GgIB8QuAM}w$iSFyf9!(Q;PEtj7vv8{QCW*v&jQ5fQ=dwH4K&o^9VVm+FRwRMZRI8j?!DA;Cc+7oK zpqMo6Gwq>+kMWfS29_8+sTT5lT(nZKjG4`tM2A#)I&b*s2|kd^brzagdN8ce4|2}2E-M!f-fsQzUDrNg(0d`3MD#Kc zlvYSpwZDBJu9!2VuKftZQ1Ab}vt<-B7{<~N0eNxZ@wptcY^U@}8I`3i%ARyfZ}%(* zl$>xwc%WhQ`zo~%oE&|l%W7zmr!NLgP-TSR&=vX+vSse^S+ES#!oYO9+m1 z?DSr!St$R~s^FVmQl)c2dl2iU1Ze1X;Knq=AnsrXTo?>Gd)isus-IEsP||d$Z4*~z z*mD-PsT7@|T5nEyTcOf+CrcouL$Fc zRt%Pp&mSM-t~G+xe=TvPjn4IY!8`R02#sNgG0?|g30Br+?>V1O9D5=6N^4)(kIcsp z-|+nUe7Ehe=gj+Yupf!-Aqt zCFiU%s3xmnu7h0U)o-m&&0CN@>!h(Wn$r7bksHS<7g3w+f3v6cj4zp-t_-Uh*I_!x zv14Mv2gwn?`{pC>*Bj+>RS!h4^YSv}lwb)&YgppK`}HC~=+GA;x`o6|`vK#~>5xUZ zHCo?=qc@Iibujer&be^fR-AFSUZW4rn;QR)BlB{8nwPRr<$h9cqmNY6h#@kn zq_bS*sh14Ze@NBwwjWv?4>eRCrLqP;Lu-vujQZpe;W>BNgO8L6-cd+c3(FSy7(QT! z;oH}bY^M|Z?aH#8SeBI#JV(89t5@ERE8je6AJA=LR5^7Voz)tG(KEd@m47*_$C5*q z)HYNym0ROzo!AC75A4v?T54sOjBj3=^^kiG3~eN?e`Uuv!{Qg7wlm%bdM{j$U3egd zm|<89sv79E6HFkwWfHk{sI<~K#({Abb5(mZBLDy(07*naRC*#>r)oQI^=dYQ;LXGN z6N00q!uI;|AeCQBRu-)fo=%G<#^lAqvI?WR;fOZyvON)kQ!DDavEQz=Ht4PsoDRKw z9DMuwe?jm}?>McSI&bF0>RrScCGNX(f>=%f>t1Bw*cPE?sAh&eHT?|xH63mqRRez7 z`90R_!C{Ogw=x5Ob3!&wC>T0!_}M%uqCu`@stmfbRG}PbqtZvA4^7-s6FjM?B0`lK z9v>FASV`9%ZvwUt28Empxm9k*1vfgzSw3IBf8Y(Q&U1k<6;D0j{r#Qo^rQv3vBWiUeZPt{I_-h`eo%~FxN)78zSj$@k365A`Ne#i z4mORve!d*naHsDwJH92i#31YJ=$&JBi;n^M$lSuAdfXZClGRn=30qWi1k{F z+-0*S*A6Y5@7a%F7gBxalHO^};KLJ*f6UP{W9Ws^PM!1Ou+Go!8N=na&mI^vT}(=| z_t}c}iUvaIXmz8#Ev@buWRt52GjsPCUcMZV07$Svc30Q`{}V03f0kbK zqDX=T0tq0;H$}MHpmQ&-MkIULT%*k7A1% z`+~>sqiku-K>lZ0&LjJnI{F%^MqF6NNVH(o#O3rrtA!jBwP{L{lk=X_NZ@&#nz2-B z+W=2*!lf%IqY9k72i1s2#F$E|f0g2#m;<|%Kg;;})gpz`lrl+2nsE|C?V@-oEn{m# zD<=#n)#wzCvJX^{!8(r%UZUp}X0KTMASUluN=dY+FdcGQhxyRZMxUqF!YyT@^Jr~2 z2Z`#YA~E1p#cQ7D32Koj@3?EEA~GoNXV|2XZbq|TYb~*5)tQ`^LUWaff2`GAl15z~ z=)r~2pXoT`pm(+-GEW)bM_l-&sMzGTUTPi4mhqy|5}Q^^%&5j_j0FlX6*$TPRN<%q=Q=P>ICUZfbXSUc_ zw=0*6=RBXdt~WYTqFtuIb=@R|XC^^79SNlrm(v}~au$8SRwO=GBJlqBwQkd9(V8%opo>_@O6<4O1!Zl=a!@N$mN&jO z6*K;tR7DA^v!a=Xf7c$}6{U0{afrn9aM*+HmZR+SW&}W}B-N8*CYFTm8mDK%kb`Li z!{30?x;P|y!y1Lxg6OCz$!V!e8$0I8c0|E^tA@dnW5#;N!|6iriINM}d-fxdwRq0m z_+4dV<$;znJ_Jeo4CngGmSNp)QdVnK9)crbM-{w9Rhrlee|}&{7|}|l1=*1iu~X{} z@2#N7$B42}NZAU7dhCPDC{oVjWjMJrT6>O|__%+f?H`zI;Qn$CZR{@^_|ZS8t#L~- z5|syI7cWPZ&tg-ZeO<@$JCMtel@0KsJY)yKxHC{K!a@tvL}5c`BZw3vL05YkX|c|{ zEKF`@4gp%@f3~kc!CS{^KB3hK<23uWiTG#f2d4p9pel~Dx@a5>r{76u1~sF+Z)AoOVW7T}rW~N;pFQ;m^I;s+2lh%^nfz42`AGCwRvRUk z*MgSPLr2j&0Vu!Ji{;q1fvlFL^-DQQsm^iiU@dc)(bkf4VO?(oAJ|glG@l4I;FJLk zC3T+nCvLY-oK7cMJ&rSntjE9=P^Pd}nO__P{0|HhhjQjS=6L0gY@p4)zf zf37js)6pEIU{Yk6ytpSuC#2RUr`Ret7*GV~Wwvb;59fRCxf52AnP}b9l`zkaqmWY} z=7e(|Vc7}x3~$q zX14hKz-vt_u(4w7GdU%iuDrXw2P}`%9VhQN@`f`9Z%z+5Z>hj{AKu|@lOkK==R=e# zg2~si3qZq`cD$dM!x=M(v>&c3r6)PKG>LM)IX`lDzNafK47Y7#TW`dA5WF1Bm%45P zF&3V-oz^qnO z=(TXWK5@OS9Q%r*@!7*0mT4w#8-9|P`o&KiIpGX!@j!RO-8@S-s}|PV^OwJG111)U z)+*k6j8&xcl76(5l6gJtzK|Q#FPHmo104+K+cT377%N4$b${ZQBya;k0$=i%XK(`~ z0WX(~a07P)&mP}Umj`hJJAZxTNCz5+(}v}A&nW~-PEtxl(Y4~#XHNcvA@kgBT=y#} z{>1(A8P00V1O&$vPSmb3=IKA_4*Kf|S}FCaSDvN?-K8BKdq=nl+3+BE+dfPWZxHaB&E#fkC*6i10V#izWAJ%3~~cI26HESS@$xR zO>zSo5ik1`qm4x5jc0LzBTGV2mlv0Kaswg)fBu)8asyBZ*Va7%6L9;*m-KQ2MGNyt zNkH5WRL$($vzJ7313Z7cJo0dU#E<{pT9F(z1U1o$wB*HqA)S$BaV%rmYqTuhP>sn2 znR8}QJZlB1L{bN31Lw2lq9h`$m0~iE-sSJrmE-IKOKWn1vl^?!@2-{Nwr+yt?h-@Q z&B!RO!QxK@e;zES%Iq{#@RS^B+R?FCC$ZvSwZwNvggFF{QJR0>w93A3Vi+88TXCCA zw3d0imlv1P8lyGVbe!{aWvNZD{ii9AYGty4RE`0iG-BZEnc8I+v>h8Co}V~!q*g=; zY-E93bs-HXV5x;n17m1LlUjvha7LbdIkN&7oRKUa3=1a$pt=p5I4)74)(aylC)u! zailzQ+o_I|dZMRHEq&k*#vEo^E0mT8omPYE zX3}kyWdO!&sr$_D*T?LZwR& zBpn^qljw4_CU`3f;UR*G`9MWcPJ0({UGaDpKwc@C$uFcNmO0}mj#?=xzV<5sCTl5K zdKgwaPLsqrgLR}L#o1CT)=Af62|;daP0)WSwRL%cv<%*1QfEC5vXL=iESZ=;3XW&n zd4KyL>f%x{&hTjNXd}U-M#{%@F11cys?*^YrIL6x7iUc&?E}EX?$Dww7#SF zE5SId_5?S}O>$5bdMy&mZcQ-ns!B+si~Td@BCyKd$+ZyXGbuNUE+fiWS<``4b~u0K zWf|R6Lt#0YJF=JYORWW44HW3wh=ZtPRxMm0tu+o_M?*J#2%F7F={Fvc$-j)E3TR8N zmi5@!;}c3d7JsHIN2?pDG`4tPRO6N%T16<4R1=e#Fjh#zv8}{fIBMfCv*<69Jg8&N z7@IKahWEn5^TrTsL^X-N=3Y>_VwHbGVcE(-QwnPWs^?+KEaa}}MUec?h)VYuWzF8? zHl3ZK7Bz^;ncO5a(t1U=fl3*pYP#(4oHqC{F`pJbd=%N6V52r#DU>FGlQu#lFSi6e z3b1YH%Jn#8bQG7%9owdO|LzAGeI)Zd)@YWn;H-?VPP5QOg0-|#*>fH*z9@f%OWmP1 zN)(zgS`F)`L!+63=G}IqyH3rGm=d#_Flb_o?CIeCd@m){W0mpYJmaht@nY?GKT&HU zzocBf#QAf7`9^m^BK=~buTjSAL$os(4N_7Z9&2N)AlXOhCiTLk9ov3GWi6-3-k5wq zEBTe5r?V{LC}0G6?ft|wog{yD8Y9{muIrP`idDxb#hMG+K*|Rx9)#JC)~#YcZaiH- zaU44_R!&V5kHpjSGu}*m_0`ub=QGQ<-|*>!EZ~k5v0ZTNqAHeDSF9DMEGf&FZ#%?I z;f>?X=U?;1S6^{#SN`o^{~wNRC*_7hULcq0Ot68Xh8Lq3EM8jnrHFr&s&%?9~?*CYz9jY1Rf)(wJl!y;lb zw4v3^d71d#Z@=P*J5L`Hw1iO=AEe6@kArPn`Tgv2?1Ub^7S4Drykya$E(YvO$#@+c2rDbH3OQqz-r`wI&v7wE}S<5`#VNk?l z9}#t7G&L&TO6tjb4+!GrC<$!?Rb|eng<3uDKYgH-#(lWQGyxrSp7y5@=|csjai`Dtf;CAi zy>w#Sxa~LD$x+yj4_K<~Ol`+$Ngq1zu*PG%Z~$}8&@$dC(fURyFt^fCwh~*W)QmG; zx<}f}At+~hOEP~_u3(fy8AWiGlk;+$seRnGH9E|K>Pb;dj#j!#J5fxCT@4~e5!HDu z#JZu4Ea6L$V(fXD`KSN(k6a!e__u%kpL}@wlW3aj(?IUa2s`G3-a3n)Xb2s`nvu#= z@_iz~`F!H>%^Q?4tj8`?0i${U=>xHJW)$z=e~(3zkH(jAdjlE)w3m!~13dwkm&$ts zT>*)gD0~BB3e)d?&${0D^WXlLm3#v#e}DctzxjuMA|4y>-~FEi8#pZ&w6;7wKVyL< zOkDR>c4FQL{1M1i5`U^HuKPM-4e~*K``H(qPAA^|_=CVc?Sc=EQZw7O31HHCX|IpZ z)p~4_&eLin(-KxgFygIONaE+nRnRxF$!$&;JE&gCbaE(X;#DIL@%?e#Cd zeBf7KeoZNzfBED8;?sAZFer?kWlv}nxk%!vmP*qy%4x2MfzW!4VDYFGV#~B%$hD*T zf_EatYRGP|D~0X?U~Ii%o#o-~e_r--+ESYMQes_kVZtCij(uCDkZ3IQgf@;CrMF>} zqc=s$o!&D^35c_42yWqSo++hBFT*H)`}_aS+sDuO!yo=9Km715&IMW?I&-D*%A%bW zAz4AfCK@O^K0{7N=U*WN+}bMh&BhOWx)r}y53%q_9e?{Tu$g6YrVw&YDZfoMMP)F z>7dlY5qDg0xHO4Zqh?CZoK7d{9pu7oyF_5PzjT%^!7&jrGDnXpo3N=X?sw6B1^k{k=#aV@F zTAJUj59EkQ)0UIxSHJ(?Fvjy75B}qif8_1m+t(uL6g&nCqklNtw4`KEeRLP9lrDpu zXpM8ER!O~JgTzjolDMWTb%v40f4oYr!R>}nII5AsG)W2~uxrVFPqQE6;tmlu$>LT4EAvUv_zXQdRX z-K)fDfBr~VW`6VA|AU7&U-Hv;-|)k?f8nU|{k2M=RHHUKIvEYE1KL>Pv6Ab``E-vl zqSUVWMj#MlA=ixa6JegQA#nfrhHrlOD+)NzegHu;X@4MH6iRf)N|Q^LB6RRj8rB&; z|MhQq^ZBn)VdAgf{*7G4wi=6ISi0(HCti}KGr`YL@rLc^^_oODTdCI!dN% z&3f$o>CgWT4W6DPak{61vC_kue8Azztx>4#`5+9VsIyuQyMxW=yyJ4ZFa>#GeEpl> za{KVa4}af(^9uVct&^+JtGx$@rW83~hk4?>+*4g;J#MIys2y(WllV%T!8*Am?MK9U z&pb)#w~QFPMvRneypl^L=1B04r>FNL1?J??)2ryrwL%$7J$8Pk+3NpvKn3L%VEtuY zEWi8x-;ccWNQ4aqtrW(R;8~7{Hc(RJ$NhUrNPj7by?N)PX^x{exNTQ1r!yEMzc6Dt zhAHjQzrpCvzTHs9u*~z|QYnm;2JPf0=~|RT$~#UwmeZNVpP*NM++}2yV&=2Y0$+Ub zE0*QVn>U|xdAM*Kk!4v%S-^ZV+8zIbtPb9u; zt$(_ljFfaWj2T>{@iKcM@M4hBz#!S_WXVZjj=lsT5~oN(@gINt3u`=x$HDV@AVPP_OtC;#i*Or=}Wa$h1%OC!ow;w-pTd%A! zaynP`yzz7#T>OM_P*g;hMr#pm^ed*uS${*RogCA+X=?U-aEm+N{Pi1pt^DQB-|+pr z5A@cFY3AYXexTYxSxfIm3aB>Fb;V5!wkh`VMAsef4JRAO6^iP(5ZLu5T4EZroml)# zurpN^bQU~D8MgzkHQVutZ~pdYfk-+<*%Iq|Lsv~Ho#*_F51{QdAfx^DBqwX(LKkik z)vWXq(Dby?lr-j_)|Ef~?K^&YdY8n514w_7Pq&rZ`ycr5?k5R77{jy#deO{Q;Z+!h zPw9Lt=OB(7>qTJZ9I0lZH&;k|XZ!TbKmXtV%){lv)6=u0suqtjj@}B+Ta>bbdg{WR z(B)U5RVt5C8seynFwir{@nGV_fWgpx27FqQb7N;9NkfN%(4m9KObNH1U52 z3A;lYk~lRmI8VZkbT&Tc+O}cJxgJ^b2*<0 ze&)^nBk0Dv51+X1S0>+iczlad9n}gSw;M`XP@OGC?DotNcS@;TPKJHo2f$ShT4+yg zqBu}UELt@wV+vBHv8^k|vCAmWEqH$$*pC~%Rs1BQHfksLighy5rnf;O@3NMCNvRa1 zIQvVzSibo3i=Vk+OsCjFx&?~t&7B^v?XT5$D>gwqvsis!RIia+bH>tDZf!u`~ zq#bwXdqG^F+4oI;nW@vP_&ZcrgfMYFEm);-HZZxFKeJNE5{zCAcO$fYOdJDqG)(4L{Kf#3RO) zuy#a^J;s7zlt!z>X1x!?0BNw+$~Cnljw6$feTb<#7|;Frj{P_|;sI6h?e{b2EF) zxXE+sCsInh|M-Ewe)BCyOFW$JWDH>}Zyp|LF`}JgaUR>1EM-f=buA^W9LYsdOv7kV zR&Te+)A~&O=l=_B4Jl?G&lm2_C%m_mUYYzfqL5l{cqL=KAG-u6s$qYtsU55icporb zw6YyXa1)nsl81qtFvilf+!kwJpp=MDPx8X{E zUUxn`U-|CcPxK1+mkX&>l+H{(P|88?8KoUH3*mV30^Kyda~pr*m_27cy?e*^KYT}T zl@Jz|DKO6qMh|yP1LGY^YjP3pUMm@tA~;E+ibzX#J6bDdGl?49C{k7&QMhpQF6k|2 zh8mXJ&25{rYTUW?1H7B3}Fi7m~bIbyCm(z)6)dC zLnM_BjtaBMjF<&G*W6<8!$!|(!mFE z5ty5ChKgq2u2R&b{@?!xcXyARPG{bJ{sme)-u?8R+q!Z6;gfVlocuVfbCTd1 zusl1kCQ1u(Pa8dyyE2yOy$!0f5nvoJ1;L)wD%9DU8nleD(tOROaHvSxZ{qDRqYF|8 zV6jPy`zRF$y(uQ=$@!3zmoZ%CGpQ6F&v!hYmkfymGBmuq5S(1ItudmFEsCx!xhJ$e zqkUk}jy-MU3_duTYRukI_rx+S>``u5r{%=M<;0htf5w+`i33{!@|Vtu15*;0K3SM1 zOs(V(jUy#uz2U6k&6hKZ11*1#mj~Y5-HjwxC8zX?PpMT5ueCPPSQOWu(aH`9*vv8) zZu`!8J~2-d^Ax1ypvBm#ltEiVN6}j*C`&>Px}`NzEkf`Zw~O9E+lF@rYUAO&u-n8K zFrs_MIZdyf#m`u+CBmKih$0uPh1Nu3XsnfeixL`e%87m7$+>bmEf|06ndXJx|I`2A zbh_jD=^g*;KmLUe&mXxzKhjHOixKYwe&_~X98jfXYL(~7k+K}%yENpjvs4=1PJ>@4 zBfeIf=)7~HDWN9RHKDB&+B9+qbH>n`s7X>v9NRj|t_aelDM_#b-cG;Vj%AtW{|`dH zR2hfKDxlM!pV_V}&dYyQRjE#KRRD{sp_&n@s-K8S;%@uXCzkVBGW8lXUD~B6miff( zIkFvsgLcO8=JAn-`!}FFPq!=aI5;meC07iY^ZAjlzy5pf-@N6sx1UKmq&4m?3rDP! z68Y)<_p<9ap9LcUoX(5PuUn;-jItI=qm|4uO+>kuy~YetvOIsYFA?h2iBU4RZR=y{ zSA~P56|E{VO|G{{uSc-l3aix6%$gAaPG~L7<~DpCVfHM`iO@UNPCTtQwtR^9Iv$uV zZER(bpZ`euc<(sUL9ddV_s&xaq_XpHzGw2_-Arkf=k?0z{+q*99H0+-oCzh_H352rI>3i9B~1*2p>ta75Xj2@KQ zo*8@zF#C$viJN2Iq-u)+aT$cx0fdoIC{_JfonRTWwj1D~^= zxJ7a~uqM!S0xe$hlfM%cgp+PW$GvI|7>;?d!0D zPR!H&2u~<-igH^nS$-#GqM1VJnaKv`X(o74O8d#OOcUwI{Q0}T@b2S}T(2wl7a;@~ z1XF|(#j@6hZ5MBcXt5nAO^k`l{T+JSY1@sv(}~h5>$>5re1-;Lnjhi^tkQ9}7Hb?Bi>7K(!lq@09+F-B$1SZU)6q718q zoz`2UJ4A~>MQ>A=RfnqcYo#kAAjU|yE0Gm=X_cZ>D^d?uclnYD^)wW$ZgSkFR)jo zUQ@ZwIkv-+_7_CXz&g2BDX>7$ILTc+g7?NcJRCU8Mz zgcXKjyFR~mH)1Xn9r-Cmo}ZpDRtxMdI2Lc29^Uf#mtXSbmtPUW3F8CzkB@XT>+PAJ z-o4|)yANEiSHe8gTVtB$SFonD(o8qK!uWr(DlOt0XRX9($Mw@&vE6m8WwER~>vpA; zB4e1YN6$iV9?m#=7xB&u1=*TiP6?y4VzfqUD<_~*04Wd(>#AdRg>##n{4~&n7Hzfp zc|OxS$_{0$vGTiVirQaZ+FBAc3Oa(^nI~EDwqD6C;_X7~JA2&6m{4Ja^2hV-D&c<% zV=>l(wj9SH{+*7L&8(#}G_>LymO@sC7-clIZrf`D#d$Zd=#}$w7DikuY)8cyUK1}? z8)=v$j4(5Rp||Jjkh5jvyk$9x_;_~eaAj0lPc*t<^RsA|k9-Vg1x$Xy>V=LL^26v9 z^;XC+kNuQ?#gsS0wqsy}Bb9`ExlHpn9&yCJZj6M2IKmc8rs5&kG+*DVUtc7$?{cZE0il zk#lCgR}RvR%zYSkzj#$LtGF)%^36>_Z-xND8pn|OSx1U0nQ(hM(6^vi$hXLG66 zTF^*Mh}v2dnPM6p2e01cCSZ(6z+}WUtcW6dc;$1^Wwb1#EHxJ7@?z;(!ZT8i9i>0n zoKlq-KGV=6IBi*GFNetSqEg5nmnOE*PC_Kj@^fyrlaegQgEPbYXk}EX6i?SD{NdU6 z$a=l;o8SJH)A^oK;P3wKAGv>A-thSszvibOzvtuAJFGU$^ThM@#&K+f`OI{lP&97a zhO&12>>^Hil(Fn7N*wyw2EJcO7-|4NODPl+W#5fLWXvz(E&&F2pbnOmsCcxfA{wvu z+h4H9(n#g!|Eyjh0D>76$3%xCXLOcCh_`a0h(++u$5F9&nqHKY^Q?ar0hCgx)+D~F zB-t^|vy2x?$7Sgf+~1$+T@j`;UwwJui!VMGXN6xlEoZtme7Jt%vo~+pw~cMvS+7@~ zKK{Vd^Cza@S*AO3iFof`9ni7|5h0gzmRcHphz>pwu)66gC>8Cng7WS@hL{%W2 z7(vK)r9}_W?^Y7cgvNC|WK>5?f=XkD4661bJ%<6BG-bL71K1!|F6>I98tYeyYx+Jm$5}}>Q#Q#YeFjz&Y`TP zm;`1K0&LC$3B;@LOcIewI#|8o-7GdsV>mDOd^#dWOQ_zt_=z<~_L$g?gVr>`%%Cbo zMUIwX?AmH;v|gkLXAHf6c60|9WQ=N*rsl?N+leXB+eYb`UK^r9>`cxK1dX_Wj8=mf zAca4rG`&`gH$1N^Rtr(OR7tqSl4XJ2D|tN7y>-%!uk9skJ?@3$1=g!2Ggm7T= zFrQ|wc^3zbwWAzaht!ML17eO1r!=QUTtaG)v#XNNNpF>gB6v^EqGhOqzR{INJ0;Ww zW7*Ro2|8nFO0j*~*w_V#d%JNu&7d_uy?-ZDmwDp%pZybWKYPnh?|+h>l9xjpLm_>+ zT*S^><>s=jJ5Sds81F-eawnph}Q^WXwY*H=aGU*4JCC z0AH&RwNvJZa#PvzFX&?_we#I~mkE>uD1W+MIn6U)zWq!n#W_=36HJJ8gn5xAqZ*j< zm@(cmg@uRv2R>e(`P=v3^WArUqn5;1zx_4;aQ}O5w`czJAOA)?Hk`BUaYt*zNy&)l zc3U~347o}!1S_~}??#qiBTCPjX?mh$ncH4Y6KE%o?3S@8R_8ck#CU_%f>u{pw154% zpeR>QMevR{_xGcyW-;0k^MO~6qr@R^vK*!G?Yp12t_R+U=fvvqMa9U=N-NZW)QLyJ zpy=e`n2`}qC%29_FR(vpWVG>sRZ9N(N-Lx$vvZUc>`s@5YEeUBYaFyD_E0r&9j4Na zyi9UQXk!S@peSPxCvOPrHMT2KtAEsjT*C)lHn%3SHX$~$9pcT%O(x-L+}0ZkqoZ^- zlu&Nf=x%7OG5az4BH*>0fE%4-C})*~)tHv&>0j8 zV?4$%q+0U1ec44ez-v8d!pH)6NZ4fT3%yIa$`1Rgv6fzBSJ3qMj4H5d$lUt)en^d0 zxPQZ4A12Gg-9=JZL&-cjkAHWT*&F#Rj~D)t3)>MTh3YH@hOt)D5TRDBA}o_wu^%Z( z$GVFa!+AG8Plce=2p3hZQC?8i+M&~EIOnMw+>V_$En}1u>a~`U-I`W@`sqhb=LhcY z@A&rHztP!IU5Fg_Z{G0v<6C-f-0hO+@?K~Jr_&-*w<=`l+qN^!fq(UO<%mhbLdr-& zHW!|68?{8vr+MfB8h)CvejLE!L5};l!O3AbB_W%)CT7X?dgG^eAJFf9q&)xh%e`2} z;hw+y`+wwoIpe2*4->U?toK~*&fJ|&v?3?_FrUOGXkeKaoHOjl#>aObPzoL&-k_D? z`yYSAdB;2pnbTK+-hb&a=5apo+2dzet9bwZBg$N@S%fgN9XDz@Xd`Q`m3%R#X&P~1O(`Pv>8)|Z4ew-OSQRXj$4A3) zq=9oE57}|*uxh~nKrk0d4IpiPosnwen5P+ItSsRDM3^kwo_{1YS2BxV*kdM)myqb7 z^>Bf!;hc~g4PCy>t+jFLYN84loF!*uMAvE?K*bS39(b0QKZD#LWSph6e&sP~xr`u zL#4)GjCvixbbra4O4QpL%&-i4KgsCO$c#LMiP}10cG7%TBBAr9bD1t!ZE2~Kdg8X< zNG)MXr_^E0R9cc!U5>9MCvG{*!>~lG6Lg2S7D5pJOUlHUn4BF7fr3^JuTHp_&{}Rp zoi0VSDmT%lyJ#84mu}RD2J3G8`MV5x224%j-h=(5jekOQK_Jy4H${dA#|=F=T}d)+ zC;?=DDE}6Fs{C(C8NsMfX)lpiE6Z-947R?Eh~<0G|5J>$w2tWtMp3vFQ9mms`ydfE zn^&VD%1Tc~S&k~9m3c4-Q^{Cs=t}-fR$FS9V2L)GJ;^OwBXkb$JZfkvT2u1R)RIJ< z6+%w17Ju)8gl<|9#0d)BMM$TVaQ)gar?%b)WnR--fg-%XoU)wlR3oRtd6{{7jyyd- z$->vMgtmQG9s!UJ{b?g3)q&Ra$&T+p)86JI)%6wH!y3u`*zsr#FRj z0c$FE&a$l=xmKnSSc0daan9i;;h$v`anHEPv40J>OG-(`-8K+B{Q5U1tn+;HhkyO$ zUM$CcaDSQk?2FHcM;cC&l@u$=IFuGwvQY--1G9cH-6^JJVcRy2Sjef;wMdgrA@KO{ zfU=6~ZR7gk9adW=pQt^FNX$4sethC|TDaa;a=I~33$4Su5AQkFm70gk;PS{k&wTjs zj(-?e&L_#u&&!!77!`>uRGl zanZ=g#Qglg9_3bNm3X=b?9FIB(AbrIKM2laoR{TUYt)h{s*jVG#v0A!99kQk*7Bto z6xv#b3V5XK^dPND(NAuPvRIS{Qtut@M1RlPjf~3LtLD~VtuVe~P9&l^Iht;Cqo8S=nFsht zdKRf9w30txH(DO@T6R0N4FjaHG7?dsl@$us%dNr~dEg=Y1=%qus;;9CF=T8b;i%A} z;8l%Oq{sAvkC&HV`@s3+1?3LAhv!?Fbyx=s|xFGP_36 znn4@6@pvbnqguon6P&OGy>*llNxE^wFM+msE$57IWi{9MQ$@kJb$RUa9%DL zqp0QJ{g2-foag%d#1RjkZ_mUmT8~@``@+Df+z*^d}$zx&nk#@siQG%1`N_z2!FFf8_#vyxGWQQ z=SggYRhH?g98A-N$vASV9C;m#ri%A=;I*aCV$IL6I~0^u247pfF58t7%5!h^|84Kx zdTh(m^sHx`=bY;hu`{y{?yhcC+Xz`gAS6o&gW$$o8QMq~Y&TrmS4R9BSUx?7kF zX#WKel93u=nd+vxs(&)~-Vw15bIx)0#Wx~~3w%+Pb^;=XlsCCEcdWHyt}({V9sl`2Ln;YQ_x?ouTxB{w;x429QWI^;f_ z)k?l}Zt%v)RbKy)HO5k~&Tu#^OkNHKgW(=GQJxIfx7|j}YkzA@+sb4tb8sUI#(|O8 zfZ!*BG3>Qs?p>gp+Kd)O8;UN4HJS=!B)>(WFttlYy{hP;9&F-@l=;J;R8P)htYJ+z zf-@YJ!y5s+chUB1rC7qkd0B)*S0zf}zQ53v#o1xot2g$tGM%Q}$P88ZY zY}Xv;iHBv9*=cHMd#Bcla|Tt!n_;#59oiX!wbYRuYJW=QFng?Vk|dep+W@`|W}URW zlW@PPTrf&+q@2<6sR&EW3FI-Qj13ZT+-t=QZ=2RK*D+oHGLObsjE)#1uS<6Up{8*; zvl^@xigDM5YQ@B?lSbuA&4r>AO^bUz6~U`Wx@RFL5jv!jP}b3U;eNmKw0-31>6uRF zcsL8TWq-S1on=`LZ`IND<%O5)6=N0iG)vN_dkyKb>?!ljr*BXVZr3kCDb{8%q>B(9Oe@qfhQhcDS;qokcrAAiov^M!}U2hsEo zg6z6y?7DG2eZk{Vk6XS}ElNq!T-*xfB!LLiya@ENOFG&&-|SEe-+Xgtngd^c`IYFy zM^9R{(SrtRE^n2FQIK0>-y%7P+c*&^d&6j9_88qc%#Q2rE`A;(T%kUa6U~@o^wwm9 zY=0f2t(dwLc&FbU#HJc;+=g3g18-9(O)8C&Wxy>20LwI4$ysITl%fk71pwz~F-N{Yzf`avIO=1y@RibR{umn%e zkn3yp>T%kWOO@xe3)vtyIr!xLNPi2kcW8qcEfuYZ82nHi=2AwsqdY0K!oBSS@AyAs8nQgn1iDNA_(ekBEZp=NpIP0c#CY2-Ms$i{@}Ta=Bb7rEokR zpmo-Dqt)`JA^T1amao75nthM74zqI{mW7yhP?|7#)>V3ZRdpt(XvMH@H%iUSA+Ssm zL%Q8>eE#?~+kR(W7QX!Idw)15(Xw5^E7UHm zq9u5Vc%@0uPVMw0N|ufyk0E_W4#GB+B+hucZnTjb5z}}Oth61h(to7Zs5y;5FS))s zZ!w!1QM?wXog@SXFA&3AC{5ZW+IBHEIwwO?r>Rj)PYgM;wSuP+ae(xmtzrN^K`r7jN&*4rsarIGGp>a{5m0cZu^dR zUNrfV-Xy{XE2cqjC4alU>Ve_Vou(|hRf#)byk}*ErG-MbN-2f=cE?*ym|n9!Iyvna zEiF|aP9iL5m6GIuFjj8Nx@sPd2eeV7-mqPS7NwSP082|m56qAEmR<_2N(pML4A8X} zRU_5NK}3@ediW+(uc$tr#c)6yxYid?GMli<;levOtVnsC1ZwOI9n+Sp0Y%Yi~myui0awR#CNCV=zWMIJGreEd=LB znAaHi7yZ^12!Fvz8{m2o?33y;D@6nht&ZF%M55eV$9u~ZJgId|iWtC-c62Jzo~uy_Rs zr_+&+=6F8gec*O^A=iysJI6y{Sq@xoS0PH2!gjx*O@HJ3a1fKNx7_ZDd687!-bG>7 zswBj!A(L=6FinANmqR?peNe>nuN+JK?GBb-d`(V~mzU4L11TrG7vP;yhUceeZucwG zG?R12XeBw)$r2{nl=B`1@1PpT)0yRXrgce=^dYdv#P>gZ4-j8TikYTGwc@NLOf$+D zo}Zui>3>iEDJZ8^i2wi~07*naRO{`I(r`R1Ow&S6jT9r#EpeO<%*#C57M|1b0H$NC zkeV;~CInkIQXdsqhioWrY!=#yTEmHS(Hx?A61q}mlbXdiH+9iF7LTDaY4`Cv8NSsqG*dNIk0?W}p&ELZ_J+5XKFoX~d}wG>QKmA@hF~V*y3*b} z1>-ET7UM(?tCAY?4?7}srMh4oDy_?Kx_>GymoOv~M>h7rY>mvThVd39EyfT$rB*hj zv14PkdWb}vMs-CmZOnHh=0Ly7)mxUz&lz&81gk(9Vr{hAn5+m%tWh*ITAxkwH(aow z6SEBIjHL{;Nge(zt)wEIyb+&>$)Tyu>x@lQjiAY?k!xo5mfRA@^O5$_ z`F#5<6cKNQYM>m4!x875TrySXcDwR?d1mpVBJ?4=nSG~O2*%EP0l%uwbU1KW4upB( z`ST~4!Fh+WhEq6VeZf$fT;OuOGJgk&HNM`iD5aUhOi+?JlTu{gcWQ1N&(oU}|2sQa z{`i0UV`?dE>y4T-K6sH9V(8j(e*A)Uz0sSbCw2uX4Hqe}rNZfW!sBTurZCY^I6tu* zj#%f|KYe72Q2>X@Nr0Gf@=LAaKws}SK7ah?t@UzR4lK(e;KKWkw@xxztbdh!m=tB> zaGu;Ga^P3F?AH|{A?wPguGHcCA((;AHGIBf*$?j5Go zaXVDQEC?D$&N6$MLy#(98kmeO;bOJQfZusT*$b$G(ZXi)s*m}Qu+79gD002=h+~|j z^;xYjxyS}0R85H@FlHQZ9e-sSt+XMbRA_Cfr3}fh8k%=8Nd{{$bZV}WcxYrUQISk` zKj^sLdM0gI4vXZ6l!Dfc6dN{->S@eIx)#-%5PZcn>xaqDdW&un0#^snv*u2!c{uAu z0j0*c+6?tn?VS{Nrf?VrJQ;G&Zjr;ljb3}Vf&(&!;3rmBNbF=XDSt;)>nJVQ|285M zUI)Q~EPoA#8>hf%m+5X%RTRKVSDX!!pRPrs+Nxmg4I+GSj00j+w+t1fwHB<$8ii67 z9}K;zag*0_eht+g#*UU(mjh0TX-^wbEL$gGTUCj2PLg2N*kC0SzAMP8bFgl(rbMJ` zjX}H7!jQ(awIU^H zN@2Ug<|YSmN@#1b%HX|bnj9rdw1sz;#frL*vBB#;jHAY2gGDuI!xi1oBMnm)=m62!A)#&2h+H%_cwmxcXqIR`uc0aJPFs| z3;ES~gLf8`#ed8aXL`RrlS;-r&oa-nE^HjFDz|mzd_0b!{+OxsJ4=!ix~532nbYx+ z?|u0LoHbl7SLS))c6lboL~WVF=}0RLXBaYA$&A-dGcO17wX&xyF`!|Ao+-76)b}-z z$$N48T0`)bnu~ZsUXul@+*o3+^6zqCZ}+j66pWTqR)6c)e!YA1kytA;5K(>%)QC0m zo=5vBOcReE9x(_#b=@;tOwtCDkU&aDZlmK18cW0a;s1z|0n@uEd`hiY?Zv@g#5bX} zxX2s%ZS$2)a;R|JATXmuifcV3OLbUU6>5T2L-pry-pZ}rjJW2~n5@ECMaq@dGR9AY zX=dHhkbgQW0Y)mxpi#q2CP7sr8zWb&6$x!cG1-~k>M(RRnrTFnX#SV&xk{HHDAfrT zqS0?`C9UOk2S1}*K`A{h0SfOOF?ETbt{Q8D$f9X)U{RH_hzH(UZ+cLU$E*sGTDRWh z`!Ld4a?V32(s0V-^^CQes@rIpiL@83G0Kj_(0`qjqli03+vzn|M(J_D8$~zftxD8p zNM^@8M=OnKb;x^V*v-hRapV6pN+=RySe2nXy$;#Bm`gcJm*S@k4K{kVZwWZQA%2lT8xgWRTvr z_K}B&58Q57rb9pjTijW<73)0b(@Fd!1GA1EB|uFnVSfi{WMj@nGPkW3hkpo?8`4U9^Ab&y3<7hJfFonX z_u;Ig>;7g&)hP7P@H=O*r7#gVE(eTr#Fnw$h)1LIhUjUv(aa?CqmgAIb0&lJj$S%t z&vYXy8y6flMNtS@gAbmZD@}Dl;TVAoD%GXMQ_^sjk4-~Ca9(CfF;e?zNPqN>*FstD zT3V9JB3>xTSg$yL!r4jYOEt15xunn)%2p2Zk;5FQwXiD$ztV@qSr5O?aGyIZ7YH?a zWX5@Dl5W^~6C-OA8M1a7Z6}1WQ)KXfT&ik=Jtww339Y~i0oz(Pq8qeG)oqaj)Q?DG zQzh(f98R@Wl-20MfGzIBOn<81W(l#D;gfKr(#Ao?Fv*U#iw`ua#5D+;McR>r*wD1W zdr82w%3{6a<+e&(IS!+R;_JK}2UnMHwAJkq#~`-I*g-gT(ok@1Ai-|@WGO5m%OD8 zjZ7(pEk%?H!)s;HwTZMjOtjW0t;-=jK)h~TDr*z8lebR%Yh99Vy%LX&)tYU)v+p}b zTb%Qhm^d8|?0FNlX3jKIndX^2ZltvGcs}Eu;_358ZkHGF?41rmQa6@uUnR(JnVFY~ z+qN<*#r?jC8qhk7b$=|&%;a`%_d8Q?Ghv#rMn1gODwB6yuP?aZFgT2c`@2vYq%7r~<&P$M<^?0zg(Ja#>tp;aCD3le?fHUN# zpv$0f4imbIbKY3XG{Yfhaw%k0aou5(=;)ocU_j+8c_)P7ZwbR&Q<;_kwR5=&7fTsA zTu}_DA|o5dQGa_Sc!z4xlnlP*P z^$|gkGS(S#jW`8yD0>t#_o1utdLVdlRHsrYwJ~`!QVktya?mO@i7fKf2Ne7)YP257 zDGTe#hzhASd4028C^Wol1Z|jHc%%5XF2047Ah&|+j(@}Q!0a8V?(Dgso7~JLGTOZ5 zu}H(_^?o~yc-mkP=2mag1}zkz;QEP@3$Y|>6FE3dGK|(uvBgBrMcn8%U~IrRHTwJF zdC^t+`a;yULz>Ir@aYjREr%ZCmhZKpDe%q_f<&t4C1tq0abNC2vX zbAehK&VM4+=`cT9EALwkb(u8=rSfRKj$zR&Br=J(M!aH8p8Ih*(aKRvMQO!h3BJA28-i=4m3O%>I-qrL)Y7?0@$=!C8Wz zC6+uTrfEVO%hU5kXad&ZoK$hp`Sj@%IY+E<1Rt zCYJn$K54)f3wtVTX=nBZ#f-I%Tno27Qh!S0#4H$XD_?dslulNgH*=tO^7C3NGW>HQ zd8{?FZ|i_DdM2+(Q;@jOEN!+@D@{S_MY7>Xe!TB+oB~s@oI$8jalR@U;l` z1{9Tw8j7A&${X=QHxU^#Ou%XwOKX?Us|{{c?R^B5Rm`}686z3?T5EF4;0(b^Qew?e zO%Y6xwJ04yOA29WRpv~_(u%Z#Ix-(Dr4a|(U&8P7+d*iMXU-1amNAB+pnvv42!6=n z9mX1TZJ-)CCNXLj5x=xrNGWr_uQc?KH1{_XDWwQdlggguaH_4d#Z1g1G7%z|9+kJW zq@A{CRmBcaMcAVHxTrGtY^A<^&f17jBPGGNcinV^s={kqwfi3P7)u5!2rrEjO zH$FTB_83JSc06*uzOcuQWq%56tHn6Wwr;ds#6~fMAM-&fxqVwD2&^>LTv<0!@Ak%9 z&Q%CAWguR*`^xQd8FRPqxMDHNG9PA2X`MZXg5_9mDUn@nj`RCxw{* zUc>Q}F|^j%UQ2^$7Zg(!Xa(0-rQRzOm0QyGiVBkA4+xlNS>4#0_a+WRBXIF z`~5XPNuzolxPN!S@l@KNNytszxiOPMW>|BO3=}_EVl0%}a858QGMFyxF;R+K5?UY6 znNo7e7<7kP%ivXw;k_M|#@OKcfTpG*tiD!dUg@oTR>l}o%H$@k!BnJmvu%;roLynAYN}9wKsCfIAa7eUwF=$)0w6lu)=*8nsj&&Sx}*>va_&%y9N^TN2+)m(<6n=g&NB zA7l>N8;va0rv^38OjBpO-^g2(BuxtshcBS1w;8GP7ILGNLaiO|gR~Zvw8B%`d47H( zmV&dM$$#1J_F$>K$d?sO%7t97bUpLM7hj;3nch54FVC=b@&vu+HyLp)mADJ~VNaWY z8HfHKUGT~=`9)%IUm~d#e9qE0ETX+WpC7TtbHCj<&NJ0^dKE3cwhkWxpFV#xT-XZL zDlgB^SZn$4coN+|hO|en_ba&;(!TTb%`-iNrGN7A`TF)DdEhibE)X9MqFmBO`mg)O za#+~H!k_!W4^R}gZRh#r7i@9CQnA-cN*g(gmOozMrNRve`KK&X#oAf;MOvYnBF4zJ z-g$ZX$md((Qyh^6Ez`+-^PHI+9Deiz(yP4H$j!}I!@g!>+`0XqpZN$(+^F8NKNarf z8GrTog?x!}LL1NIL|(k@H_}!(o+fEcXvuvk*|F_n(yM!>)|q*d3qaR;+@N;4RT9Jd zvtLjrC|{kidZKGJ5IC8t#XHcm;rg^PpP-%39F~c08vFeMc>Hl1a78Uy^Ibxqta9|a zOYmEkXQJ1^%o_Z)t~B(@ecxI4i0?*jrhg@g3Ac6h+2SWh(-yk$uh#pG)5BTvKlaG; z^~!yV0&z zZzpGId1__e=n`E?Vqt9(ie+By>AAowmA590w$L>D^&6=+n~<^%0p}#Ft0)Zyx_=dv zO(}VxaV)(io}X{b3V!%-!fS)ocI41VtCPWWDI@ZdiqF;5EhN@@b#_n z%J=o7%LowP+M#cOqC7o+>ZSgeh9XxnP^#C%vWXz%zTXMX(Yu!Kf&lI~E(f->b381B z?9p9|YhQ_xT4vOWecObx&?_lrwzx}fjkUa#E3?z&RM17Uva;oM1eEFF4S%!T);l>D z=4GPf&TJnw=5IWEc@KAv(&ffg!SM0(Qgrg40%e)oX=nI)mPset*D)+rzdKy z%+riD3hNwNI|*beMO?4a-dDQT z1Y_B@jjl$^t%-E?`S!%@XMgDMv!DMdzx~_4!;gOSW9G^6v!DGL-g_P&K5)Ih(0b$V z|AW8(Z9b3p^}gQM|IgQ7`;Y%>-);hz{rT5l^Kd%yqu>4=Qr`KKpZp)Bm^hu!G9yVl zKm6ejIUdh^{P>ys{e@C8hvgu%(v&2=yjP~li*>_K+}0Z@Cn15SOn>f`Wm&MwvhFLr zNM25@BM=Q?HNtlL$>lIAmePW;(7f6BJ4 zlw3)1BW`#0ZD-xL!GAlNMvU#C*eZn2Q!=GUDQlG*3Mw=7`cmrOZyVRkO}q$7S~Zu; z^FMz7TD-6K^}fE%`h(y9hsx^8x^5UFldrBC+qSXo>tKj=au&()?Y^?@kx~m&n6Sq4 z@_c36;-Ez+yba9rnOZepfBMMBr%#f@k`l%$mZ3~TH$re@|9_SFu{DPC@q~4bElM6x zQw<*+&M0b5V}>RB<9wKLK5$qLcpu()albPC{@Z+rtu@k~2`-?KSlrfMGam$tvZY;O zP1DBp@`3{9X%v?2|OKM}U9j`PR#q;HfnhT4c&`R-i`3O`V&qrd8 zQre}=;c$L)`+xUZQFIPVz*>tlinwiTd8Jc{DRaNBbo&4FH~!Y&`q$sT7VqnQy{~V( z{`>#oAE{|_l#(PC(rZCXSR4D z7ZH85T3PRRZtI=6M@*N@p3=W^UG&wjni@xw9}BP_bwbZ1zJmQ zeUGf$%G2#5A8#^i{_ya?`E+7lW_*yOQdGw};eW!t(iC1{t6hoc=hs=^N^YEo+Gkw> zX6nfGp63~(Uo#36tySis(%R$3-dD+?9t6_c$g{7fgP>2a61GFeSW$W9(y%3Sy*{Co zW!ra&%I!ltKM1Ja3q$I8-$d4I#C<)aw`r^Rf{Lg<+|Fz%!-SwQJBT}!uS1z(S}^gNUinkX(#2x zzHc}$_JzZ|NH@qjQj8o93-|lVeY=xu;&eQrm7(NHZJCk_lbI#j+8{CCS!f8NNE2?N z^Oi6aZLx&B)3Uw^xgPk;8~7!%jq%D%0v>z!@AQ%b>m%k13lBWTx_PJff9ikE{4BjAc0- zC?$(Lu~m%sI2SlSoH?H#1;3yK&;1|$hky0qzx~7CSMP_)`+8sR>tELTpa1dyqJMt# zH^0w%yW*_na6EDT@PX6$#A!KV6x5Q@%5azuq*B<6fKR6|;e%%i3+KZlN?CGDy^WN#D#@0`M3P#;62uf{1}ihtd_|o)6pD`3;ViKOXK130c|~+&h7SsR*v)ekuN?x zu*H>aUvZP=zx(}v_^$qXU+?REeP`=G`Q6{`|LY(B@67Ye4}S9p+^=_@KYu?BslOEr z{&5x)XB7jt%v{8V(VG(BW-V;nN-breeiYa1%P`GqY85YDZ;iM|ob$r+dyTg4omK@N z8fK3-0Y6W)(ugUs$2&1f;M#mxi0jHvfA-T~`K6^rwZX$qq0FI51J!7&{sv=hvA z%$dvO%DQgCeKLl17ZXxgu?Qj1dokcm5SdK`Dh04t(*&Bi1P{muLR;Pkzebc;G+#>wh!6Kj!c2eZ8;ma{V`d z_=oD>{>y)fpa0p{T%T{mnDLW1@3oddJZr5C*$0+r-&S6ppSfLL*nhSgm+O`LeI><2 z+@pY7duN^&jPaBrrctyeOf$|qa*oi%G+kQ7de1aZJe(g!%Po@jL~EUS_LyPRoo1PD zm;CDu@4r>W^3_-0!zeLKrIcBgnTN+m=6NASVKA-RMk$%r8p|{h=9yd~>+OQ~2M)&* zMl05JrMAX2%^0Pb=6^s+3F|aD7EExITv+dS^1iby2Od6rKr4fFnzYA(Y^Y-3YMR4& zCa27@1perc{?U7t^1j~J`}%);{k#9pzt=y0`UFUhk$0ZMVZj)~{Vw~Z)|zcw1;5f7 z#<`(vb-3Wz)=lQpZ;kv;+#}QE1^?d~*Ow=0vl++nbimn(Fn>*yl2A=>LEC+!A`nS11HMuCyRQ=6NQBiFrEGl!P^1FBfTp1;?H; zS}XRrVT@y%C-R=K&QfaUcvzrIm{)C*+2Wj&+=C|nlv3!m;wL8=-vdEmoMB&gE-zPV zZ2aYa|KH*d{(s;P)gS%Q|ET}UU-=K(`y>6n-q-v3f7AMlf8k&4m+O`Dmk;!&X|2+# zP}W=TBS)vBjfCJ~G~OC=7RFlZ{Vg-ajBF%jH2W4QB@WJ; zm**=sSWu1oWv8?(c`YT&JiIr4@r&>HVEO0$!Rh?KGJl^rofk^Z+%Gr2`TS83+Qzci z{r~a`EcAl)0Xt2c=Y?Dw*Za<54d>&`a$MNff^(YO8=1t^CTqFhBFp6Q z#uB3t*H@R>V7=id|Kt~3%4ZCEKuE#jDg06<{1`rP`f$P@Cd$1sKX|S$E3srgeZJ7! sO-_RTFYT;&U+?REy|4H6zP{c1XUv>!&ziT7{r~^~07*qoM6N<$f};l&_W%F@ delta 179703 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 { - const tileDef = TILES.find(t => t.id === item.id); + // FIXED: Access by Key string directly + const tileDef = TILES[item.id]; + if (tileDef) { for (let i = 0; i < item.count; i++) { pool.push(tileDef); } + } else { + console.error(`❌ Missing Tile Definition for ID: ${item.id}`); } }); - // Helper to pull random cards const drawRandom = (source, count) => { const drawn = []; for (let i = 0; i < count; i++) { if (source.length === 0) break; const idx = Math.floor(Math.random() * source.length); drawn.push(source[idx]); - source.splice(idx, 1); // Remove from pool + source.splice(idx, 1); } return drawn; }; - // --- Step 1 & 2: Bottom Pool (6 Random + Objective) --- + // --- Step 1 & 2: Bottom Pool --- const bottomPool = drawRandom(pool, 6); - // Add Objective Card - const objectiveDef = TILES.find(t => t.id === objectiveTileId); + const objectiveDef = TILES[objectiveTileId]; if (objectiveDef) { bottomPool.push(objectiveDef); } else { console.error("Objective Tile ID not found:", objectiveTileId); - // Fallback: Add a generic room if objective missing? } - // --- Step 3: Shuffle Bottom Pool --- this.shuffleArray(bottomPool); - // --- Step 4: Top Pool (6 Random) --- + // --- Step 4: Top Pool --- const topPool = drawRandom(pool, 6); - // Note: No shuffle explicitly needed for Top Pool if drawn randomly, - // but shuffling ensures random order of the 6 drawn. this.shuffleArray(topPool); - // --- Step 5: Stack (Top on Bottom) --- - // Array[0] is the "Top" card (first to be drawn) + // --- Step 5: Stack --- this.cards = [...topPool, ...bottomPool]; console.log(`Deck Generated: ${this.cards.length} cards.`); @@ -93,15 +76,12 @@ export class DungeonDeck { } draw() { - if (this.cards.length === 0) { - return null; // Deck empty - } - return this.cards.shift(); // Take from top + if (this.cards.length === 0) return null; + return this.cards.shift(); } - // Useful for Campaign logic: Insert a specific card at position insertCard(tileId, position = 0) { - const tileDef = TILES.find(t => t.id === tileId); + const tileDef = TILES[tileId]; if (tileDef) { this.cards.splice(position, 0, tileDef); } diff --git a/src/engine/dungeon/DungeonGenerator.js b/src/engine/dungeon/DungeonGenerator.js index 47faeca..25887f1 100644 --- a/src/engine/dungeon/DungeonGenerator.js +++ b/src/engine/dungeon/DungeonGenerator.js @@ -1,296 +1,317 @@ + import { DIRECTIONS } from './Constants.js'; import { GridSystem } from './GridSystem.js'; import { DungeonDeck } from './DungeonDeck.js'; -import { TILES } from './TileDefinitions.js'; + +const PLACEMENT_STATE = { + WAITING_DOOR: 'WAITING_DOOR', + PLACING_TILE: 'PLACING_TILE', + COMPLETE: 'COMPLETE' +}; export class DungeonGenerator { constructor() { this.grid = new GridSystem(); this.deck = new DungeonDeck(); - this.pendingExits = []; // Array of global {x, y, direction} this.placedTiles = []; - this.isComplete = false; + this.availableExits = []; // Exits where player can choose to expand + + // Placement State + this.state = PLACEMENT_STATE.WAITING_DOOR; + this.currentCard = null; + this.placementRotation = DIRECTIONS.NORTH; + this.placementX = 0; + this.placementY = 0; + this.selectedExit = null; + + // Callbacks for UI + this.onStateChange = null; + this.onPlacementUpdate = null; } startDungeon(missionConfig) { - // 1. Prepare Deck (Rulebook: 13 cards, 6+1+6) - // We need an objective tile ID from the config - const objectiveId = missionConfig.type === 'quest' ? 'room_objective' : 'room_dungeon'; // Fallback for now + const objectiveId = missionConfig?.type === 'quest' ? 'room_objective' : 'room_dungeon'; this.deck.generateMissionDeck(objectiveId); - // 2. Rulebook Step 4: "Flip the first card. This is the entrance." - const startCard = this.deck.draw(); - - if (!startCard) { - console.error("Deck is empty on start!"); + // 1. Draw and place first card automatically at origin + const firstCard = this.deck.draw(); + if (!firstCard) { + console.error("❌ Empty deck"); return; } - // 3. Place the Entry Tile at (0,0) - // We assume rotation NORTH by default for the first piece - const startInstance = { - id: `tile_0_${startCard.id}`, - defId: startCard.id, - x: 0, - y: 0, - rotation: DIRECTIONS.NORTH - }; + this.placeCardFinal(firstCard, 0, 0, DIRECTIONS.NORTH); + console.log(`🏰 Dungeon started with ${firstCard.name}`); - if (this.grid.canPlace(startCard, 0, 0, DIRECTIONS.NORTH)) { - this.grid.placeTile(startInstance, startCard); - this.placedTiles.push(startInstance); - this.addExitsToQueue(startInstance, startCard); - console.log(`Dungeon started with ${startCard.name}`); - } else { - console.error("Failed to place starting tile (Grid collision at 0,0?)"); - } + // 2. Transition to door selection + this.state = PLACEMENT_STATE.WAITING_DOOR; + this.notifyStateChange(); } - step() { - if (this.isComplete) return false; - if (this.pendingExits.length === 0) { - console.log("No more exits available. Dungeon generation stopped."); - this.isComplete = true; + /** + * Player selects a door to expand from + */ + selectDoor(exitPoint) { + console.log('[DungeonGenerator] selectDoor called with:', exitPoint); + console.log('[DungeonGenerator] Current state:', this.state); + console.log('[DungeonGenerator] Available exits:', this.availableExits); + + if (this.state !== PLACEMENT_STATE.WAITING_DOOR) { + console.warn("Not in door selection mode"); return false; } - const card = this.deck.draw(); - if (!card) { - console.log("Deck empty. Dungeon complete."); - this.isComplete = true; + if (!exitPoint) { + console.error("exitPoint is undefined!"); return false; } - // We process exits in groups now? - // Or simply: When we pick an exit, we verify if it is part of a larger door. - // Actually, 'pendingExits' contains individual cells. - // Let's pick one. - const targetExit = this.pendingExits.shift(); + // Validate exit exists + const exitExists = this.availableExits.some( + e => e.x === exitPoint.x && e.y === exitPoint.y && e.direction === exitPoint.direction + ); - // 1. Identify the "Global Reference Point" for the door this exit belongs to. - // (If door is 2-wide, we want the One with the LOWEST X or LOWEST Y). - // WE MUST FIND ITS SIBLING if it exists in 'pendingExits'. - // This stops us from trying to attach a door twice (once per cell). - - // Simple heuristic: If we have an exit at (x,y), check (x+1,y) or (x,y+1) depending on dir. - // If the sibling is also in pendingExits, we effectively "consume" it too for this placement. - - // Better: Find the "Left-Most" or "Bottom-Most" cell of this specific connection interface. - // And use THAT as the target. - - const targetRef = this.findExitReference(targetExit); - console.log(`Attempting to place ${card.name} at Global Ref ${targetRef.x},${targetRef.y} (${targetRef.direction})`); - - const requiredInputDirection = this.getOppositeDirection(targetRef.direction); - let placed = false; - - // Try to fit the card - // We iterate input exits on the NEW card. - // We only look at "Reference" exits on the new card too (min x/y) to avoid duplicate attempts. - const candidateExits = this.UniqueExits(card); - - for (const candidateExit of candidateExits) { - - const rotation = this.calculateRequiredRotation(candidateExit.direction, requiredInputDirection); - - // Now calculate ALIGNMENT. - // We want the "Min Cell" of the Candidate Door (after rotation) - // To overlap with the "Neighbor Cell" of the "Min Cell" of the Target Door? - // NO. - // Target Door Min Cell is at (TX, TY). - // Its "Connection Neighbor" is at (NX, NY). - // We want Candidate Door (Rotated) Min Cell to be at (NX, NY). - - // 1. Calculate the offset of Candidate 'Min Cell' relative to Tile Origin (0,0) AFTER rotation. - const rotatedOffset = this.getRotatedOffset(candidateExit, rotation); - - // 2. Calculate the global connection point input - const connectionPoint = this.getNeighborCell(targetRef.x, targetRef.y, targetRef.direction); - - // 3. Tile Position - const posX = connectionPoint.x - rotatedOffset.x; - const posY = connectionPoint.y - rotatedOffset.y; - - if (this.grid.canPlace(card, posX, posY, rotation)) { - // Success - const newInstance = { - id: `tile_${this.placedTiles.length}_${card.id}`, - defId: card.id, - x: posX, - y: posY, - rotation: rotation - }; - - this.grid.placeTile(newInstance, card); - this.placedTiles.push(newInstance); - - // Add NEW exits - this.addExitsToQueue(newInstance, card); - - // Cleanup: Remove the used exit(s) from pendingExits - // We used targetRef. We must also remove its sibling if it exists. - // Or simply: filter out any pending exit that is now blocked. - this.cleanupPendingExits(); - - placed = true; - break; - } + if (!exitExists) { + console.warn("Invalid exit selected"); + return false; } - if (!placed) { - console.log(`Could not fit ${card.name}. Discarding.`); - // If failed, return the exit to the pool? - // Or discard the exit as "Dead End"? - // For now, put it back at the end of queue. - this.pendingExits.push(targetExit); + this.selectedExit = exitPoint; + + // Draw next card + this.currentCard = this.deck.draw(); + if (!this.currentCard) { + console.log("Deck empty - dungeon complete"); + this.state = PLACEMENT_STATE.COMPLETE; + this.notifyStateChange(); + return false; } + // Calculate initial placement position (3 units above the connection point) + const connectionPoint = this.neighbor(exitPoint.x, exitPoint.y, exitPoint.direction); + + // Start with NORTH rotation + this.placementRotation = DIRECTIONS.NORTH; + const variant = this.currentCard.variants[this.placementRotation]; + + // Find the exit on the new tile that should connect to selectedExit + const requiredDirection = this.opposite(exitPoint.direction); + const matchingExits = variant.exits.filter(e => e.direction === requiredDirection); + + if (matchingExits.length > 0) { + // Use first matching exit as anchor + const anchor = matchingExits[0]; + this.placementX = Math.round(connectionPoint.x - anchor.x); + this.placementY = Math.round(connectionPoint.y - anchor.y); + } else { + // Fallback: center on connection point + this.placementX = Math.round(connectionPoint.x); + this.placementY = Math.round(connectionPoint.y); + } + + this.state = PLACEMENT_STATE.PLACING_TILE; + this.notifyPlacementUpdate(); + this.notifyStateChange(); + + console.log(`📦 Placing ${this.currentCard.name} at (${this.placementX}, ${this.placementY})`); return true; } - // --- Helpers --- - getNeighborCell(x, y, dir) { - switch (dir) { - case DIRECTIONS.NORTH: return { x: x, y: y + 1 }; - case DIRECTIONS.SOUTH: return { x: x, y: y - 1 }; - case DIRECTIONS.EAST: return { x: x + 1, y: y }; - case DIRECTIONS.WEST: return { x: x - 1, y: y }; - } + /** + * Rotate placement tile 90° clockwise + */ + rotatePlacement() { + if (this.state !== PLACEMENT_STATE.PLACING_TILE) return; + + const rotations = [DIRECTIONS.NORTH, DIRECTIONS.EAST, DIRECTIONS.SOUTH, DIRECTIONS.WEST]; + const currentIndex = rotations.indexOf(this.placementRotation); + this.placementRotation = rotations[(currentIndex + 1) % 4]; + + console.log(`🔄 Rotated to ${this.placementRotation}`); + this.notifyPlacementUpdate(); } - findExitReference(exit) { - // If facing North/South, Reference is Minimum X. - // If facing East/West, Reference is Minimum Y. + /** + * Move placement tile by offset + */ + movePlacement(dx, dy) { + if (this.state !== PLACEMENT_STATE.PLACING_TILE) return; - // This function assumes 'exit' is from pendingExits (Global coords). - // It checks if there is a "Lower" sibling also in pendingExits. - // If so, returns the lower sibling. BEFORE using this exit. + this.placementX += dx; + this.placementY += dy; - let bestExit = exit; - - // Check for siblings in pendingExits that match direction and are < coordinate - // This is O(N) but N is small. - for (const other of this.pendingExits) { - if (other === exit) continue; - if (other.direction !== exit.direction) continue; - - if (exit.direction === DIRECTIONS.NORTH || exit.direction === DIRECTIONS.SOUTH) { - // Check X. Adjacent implies y same, x diff 1. - if (other.y === exit.y && Math.abs(other.x - exit.x) === 1) { - if (other.x < bestExit.x) bestExit = other; - } - } else { - // Check Y. adjacent implies x same, y diff 1. - if (other.x === exit.x && Math.abs(other.y - exit.y) === 1) { - if (other.y < bestExit.y) bestExit = other; - } - } - } - return bestExit; + console.log(`↔️ Moved to (${this.placementX}, ${this.placementY})`); + this.notifyPlacementUpdate(); } - UniqueExits(tileDef) { - // Filter tileDef.exits to only return the "Reference" (Min x/y) for each face/group. - // This prevents trying to attach the same door 2 times. - const unique = []; - const seen = new Set(); // store "dir_coord" keys + /** + * Check if current placement is valid + */ + isPlacementValid() { + if (!this.currentCard || this.state !== PLACEMENT_STATE.PLACING_TILE) return false; - // Sort exits to ensure we find Min first - const sorted = [...tileDef.exits].sort((a, b) => { - if (a.direction !== b.direction) return a.direction.localeCompare(b.direction); - if (a.x !== b.x) return a.x - b.x; - return a.y - b.y; - }); - - for (const ex of sorted) { - // Identifier for the "Door Group". - // If North/South: ID is "Dir_Y". (X varies) - // If East/West: ID is "Dir_X". (Y varies) - // Actually, we just need to pick the first one we see (since we sorted by X then Y). - // If we have (0,0) and (1,0) for SOUTH. Sorted -> (0,0) comes first. - // We take (0,0). We assume (1,0) is part of same door. - - // Heuristic: If this exit is adjacent to the last added unique exit of same direction, skip it. - const last = unique[unique.length - 1]; - let isSameDoor = false; - - if (last && last.direction === ex.direction) { - if (ex.direction === DIRECTIONS.NORTH || ex.direction === DIRECTIONS.SOUTH) { - // Vertical door, check horizontal adjacency - if (last.y === ex.y && Math.abs(last.x - ex.x) <= 1) isSameDoor = true; - } else { - // Horizontal door, check vertical adjacency - if (last.x === ex.x && Math.abs(last.y - ex.y) <= 1) isSameDoor = true; - } - } - - if (!isSameDoor) { - unique.push(ex); - } - } - return unique; + const variant = this.currentCard.variants[this.placementRotation]; + return this.grid.canPlace(variant, this.placementX, this.placementY); } - getRotatedOffset(localExit, rotation) { - // Calculate where the 'localExit' ends up relative to (0,0) after rotation. - // localExit is the "Reference" (Min) of the candidate door. - - let rx, ry; - const lx = localExit.x; - const ly = localExit.y; - - switch (rotation) { - case DIRECTIONS.NORTH: rx = lx; ry = ly; break; - case DIRECTIONS.SOUTH: rx = -lx; ry = -ly; break; - case DIRECTIONS.EAST: rx = ly; ry = -lx; break; - case DIRECTIONS.WEST: rx = -ly; ry = lx; break; + /** + * Confirm and finalize tile placement + */ + confirmPlacement() { + if (this.state !== PLACEMENT_STATE.PLACING_TILE) { + console.warn("Not in placement mode"); + return false; } - return { x: rx, y: ry }; - } - - getOppositeDirection(dir) { - switch (dir) { - case DIRECTIONS.NORTH: return DIRECTIONS.SOUTH; - case DIRECTIONS.SOUTH: return DIRECTIONS.NORTH; - case DIRECTIONS.EAST: return DIRECTIONS.WEST; - case DIRECTIONS.WEST: return DIRECTIONS.EAST; + if (!this.isPlacementValid()) { + console.warn("❌ Cannot place tile - invalid position"); + return false; } + + console.log(`[confirmPlacement] Placing at (${this.placementX}, ${this.placementY}) rotation: ${this.placementRotation}`); + + // Round to integers (tiles must be on grid cells) + const finalX = Math.round(this.placementX); + const finalY = Math.round(this.placementY); + + console.log(`[confirmPlacement] Rounded to (${finalX}, ${finalY})`); + + // Place the tile + this.placeCardFinal( + this.currentCard, + finalX, + finalY, + this.placementRotation + ); + + // Reset placement state + this.currentCard = null; + this.selectedExit = null; + this.state = PLACEMENT_STATE.WAITING_DOOR; + + this.notifyPlacementUpdate(); // Clear preview + this.notifyStateChange(); + console.log("✅ Tile placed successfully"); + return true; } - calculateRequiredRotation(localDir, targetGlobalDir) { - const dirs = [DIRECTIONS.NORTH, DIRECTIONS.EAST, DIRECTIONS.SOUTH, DIRECTIONS.WEST]; - const localIdx = dirs.indexOf(localDir); - const targetIdx = dirs.indexOf(targetGlobalDir); - const diff = (targetIdx - localIdx + 4) % 4; - return dirs[diff]; + /** + * Internal: Actually place a card on the grid + */ + placeCardFinal(card, x, y, rotation) { + console.log('[placeCardFinal] Card:', card); + console.log('[placeCardFinal] Card.variants:', card.variants); + console.log('[placeCardFinal] Rotation:', rotation, 'Type:', typeof rotation); + + const variant = card.variants[rotation]; + console.log('[placeCardFinal] Variant:', variant); + + const instance = { + id: `tile_${this.placedTiles.length}`, + defId: card.id, + x, y, rotation, + name: card.name + }; + + this.grid.placeTile(instance, variant, card); + this.placedTiles.push(instance); + + // Update available exits + this.updateAvailableExits(instance, variant, x, y); } - addExitsToQueue(tileInstance, tileDef) { - for (const exit of tileDef.exits) { - const globalPoint = this.grid.getGlobalPoint(exit.x, exit.y, tileInstance); - const globalDir = this.grid.getRotatedDirection(exit.direction, tileInstance.rotation); + /** + * Update list of exits player can choose from + */ + updateAvailableExits(instance, variant, anchorX, anchorY) { + console.log('[updateAvailableExits] ===== NUEVO CODIGO ===== Called for tile:', instance.id); + console.log('[updateAvailableExits] Variant exits:', variant.exits); + console.log('[updateAvailableExits] Anchor:', anchorX, anchorY); - // Check if blocked immediately - const neighbor = this.getNeighborCell(globalPoint.x, globalPoint.y, globalDir); - const key = `${neighbor.x},${neighbor.y}`; + // Add new exits from this tile + for (const ex of variant.exits) { + const gx = anchorX + ex.x; + const gy = anchorY + ex.y; - if (!this.grid.occupiedCells.has(key)) { - this.pendingExits.push({ - x: globalPoint.x, - y: globalPoint.y, - direction: globalDir + const leadingTo = this.neighbor(gx, gy, ex.direction); + const isOccupied = this.grid.isOccupied(leadingTo.x, leadingTo.y); + + console.log(`[updateAvailableExits] Exit at (${gx}, ${gy}) dir ${ex.direction} -> leads to (${leadingTo.x}, ${leadingTo.y}) occupied: ${isOccupied}`); + + if (!isOccupied) { + this.availableExits.push({ + x: gx, + y: gy, + direction: ex.direction, + tileId: instance.id }); + console.log('[updateAvailableExits] ✓ Added exit'); } } + + console.log('[updateAvailableExits] Total available exits now:', this.availableExits.length); + + // Remove exits that are now blocked or connected + this.availableExits = this.availableExits.filter(exit => { + const leadingTo = this.neighbor(exit.x, exit.y, exit.direction); + return !this.grid.isOccupied(leadingTo.x, leadingTo.y); + }); + } + + /** + * Get current placement preview data for renderer + */ + getPlacementPreview() { + if (this.state !== PLACEMENT_STATE.PLACING_TILE || !this.currentCard) { + return null; + } + + const variant = this.currentCard.variants[this.placementRotation]; + const cells = this.grid.calculateCells(variant, this.placementX, this.placementY); + const isValid = this.isPlacementValid(); + + return { + card: this.currentCard, + rotation: this.placementRotation, + x: this.placementX, + y: this.placementY, + cells, + isValid, + variant + }; + } + + // --- Helpers --- + + notifyStateChange() { + if (this.onStateChange) { + this.onStateChange(this.state); + } } - cleanupPendingExits() { - // Remove exits that now point to occupied cells (blocked by newly placed tile) - this.pendingExits = this.pendingExits.filter(ex => { - const neighbor = this.getNeighborCell(ex.x, ex.y, ex.direction); - const key = `${neighbor.x},${neighbor.y}`; - return !this.grid.occupiedCells.has(key); - }); + notifyPlacementUpdate() { + if (this.onPlacementUpdate) { + const preview = this.getPlacementPreview(); + this.onPlacementUpdate(preview); + } + } + + neighbor(x, y, dir) { + switch (dir) { + case DIRECTIONS.NORTH: return { x, y: y + 1 }; + case DIRECTIONS.SOUTH: return { x, y: y - 1 }; + case DIRECTIONS.EAST: return { x: x + 1, y }; + case DIRECTIONS.WEST: return { x: x - 1, y }; + } + } + + opposite(dir) { + const map = { + [DIRECTIONS.NORTH]: DIRECTIONS.SOUTH, + [DIRECTIONS.SOUTH]: DIRECTIONS.NORTH, + [DIRECTIONS.EAST]: DIRECTIONS.WEST, + [DIRECTIONS.WEST]: DIRECTIONS.EAST + }; + return map[dir]; } } diff --git a/src/engine/dungeon/DungeonGenerator.js.temp b/src/engine/dungeon/DungeonGenerator.js.temp new file mode 100644 index 0000000..d018998 --- /dev/null +++ b/src/engine/dungeon/DungeonGenerator.js.temp @@ -0,0 +1,50 @@ + + tryPlaceCard(card, targetExit) { + const requiredDirection = this.opposite(targetExit.direction); + const targetCell = this.neighbor(targetExit.x, targetExit.y, targetExit.direction); + + const rotations = [DIRECTIONS.NORTH, DIRECTIONS.EAST, DIRECTIONS.SOUTH, DIRECTIONS.WEST]; + // const shuffled = this.shuffle(rotations); + + // 🔧 DEBUG: Force SOUTH rotation only + const forcedRotations = [DIRECTIONS.SOUTH]; + console.log('⚠️ FORCED ROTATION TO SOUTH ONLY FOR TESTING'); + + let bestPlacement = null; + let maxConnections = -1; + + for (const rotation of forcedRotations) { + const rotatedExits = this.rotateExits(card.exits, rotation); + const candidates = rotatedExits.filter(e => e.direction === requiredDirection); + + for (const candidate of candidates) { + const anchorX = targetCell.x - candidate.x; + const anchorY = targetCell.y - candidate.y; + + if (this.grid.canPlace(card, anchorX, anchorY, rotation)) { + let score = 0; + for (const exit of rotatedExits) { + const globalX = anchorX + exit.x; + const globalY = anchorY + exit.y; + const neighbor = this.neighbor(globalX, globalY, exit.direction); + if (this.grid.occupiedCells.has(`${neighbor.x},${neighbor.y}`)) { + score++; + } + } + + if (score > maxConnections) { + maxConnections = score; + bestPlacement = { card, anchorX, anchorY, rotation }; + } + } + } + } + + if (bestPlacement) { + this.placeTileAt(bestPlacement.card, bestPlacement.anchorX, bestPlacement.anchorY, bestPlacement.rotation); + console.log(`✅ Best Placement Selected: Score ${maxConnections}`); + return true; + } + + return false; + } diff --git a/src/engine/dungeon/GridSystem.js b/src/engine/dungeon/GridSystem.js index b3a147f..de2a7a5 100644 --- a/src/engine/dungeon/GridSystem.js +++ b/src/engine/dungeon/GridSystem.js @@ -1,184 +1,106 @@ -import { DIRECTIONS } from './Constants.js'; export class GridSystem { - /** - * The GridSystem maintains the "Source of Truth" for the dungeon layout. - * It knows which cells are occupied and by whom. - * Dependencies: Constants.js (DIRECTIONS) - */ constructor() { - // We use a Map for O(1) lookups. - // Key: "x,y" (String) -> Value: "tileId" (String) + // Map "x,y" -> "tileId" this.occupiedCells = new Map(); - - // We also keep a list of placed tile objects for easier iteration if needed later. this.tiles = []; } /** - * Checks if a tile can be placed at the given coordinates with the given rotation. - * Needs: The Tile Definition (to know size), the target X,Y, and desired Rotation. + * Checks if a specific VARIANT can be placed at anchorX, anchorY. + * Does NOT rotate anything. Assumes variant is already the correct shape. */ - canPlace(tileDef, startX, startY, rotation) { - // 1. Calculate the real-world coordinates of every single cell this tile would occupy. - const cells = this.getGlobalCells(tileDef, startX, startY, rotation); + canPlace(variant, anchorX, anchorY) { + const layout = variant.layout; + const rows = layout.length; - // 2. Check each cell against our Map of occupied spots. - for (const cell of cells) { - const key = `${cell.x},${cell.y}`; - if (this.occupiedCells.has(key)) { - return false; // COLLISION! Spot already taken. + for (let row = 0; row < rows; row++) { + const rowData = layout[row]; + const cols = rowData.length; + + for (let col = 0; col < cols; col++) { + // If cell is 0 (empty), skip + if (rowData[col] === 0) continue; + + // Calculate Global Position + // Matrix Row 0 is Top (Max Y). Matrix Row Max is Bottom (Y=0). + const lx = col; + const ly = (rows - 1) - row; + + const gx = anchorX + lx; + const gy = anchorY + ly; + const key = `${gx},${gy}`; + + // Collision Check + if (this.occupiedCells.has(key)) { + return false; + } } } - return true; // All clear. + return true; } /** - * Officially registers a tile onto the board. - * Should only be called AFTER canPlace returns true. + * Registers the tile cells as occupied. */ - placeTile(tileInstance, tileDef) { - const cells = this.getGlobalCells(tileDef, tileInstance.x, tileInstance.y, tileInstance.rotation); + placeTile(tileInstance, variant) { + const layout = variant.layout; + const rows = layout.length; + const anchorX = tileInstance.x; + const anchorY = tileInstance.y; - // Record every cell in our Map - for (const cell of cells) { - const key = `${cell.x},${cell.y}`; - this.occupiedCells.set(key, tileInstance.id); - } - - // Store the instance - this.tiles.push(tileInstance); - console.log(`Placed tile ${tileInstance.id} at ${tileInstance.x},${tileInstance.y}`); - } - - /** - * THE MAGIC MATH FUNCTION. - * Converts a simplified abstract tile (width/length) into actual grid coordinates. - * Handles the Rotation logic (N, S, E, W). - * NOW SUPPORTS: Matrix Layouts (0 = Empty). - */ - getGlobalCells(tileDef, startX, startY, rotation) { - const cells = []; - const layout = tileDef.layout; - - // Safety check: if no layout, fallback to full rectangle (optional, but good for stability) - // usage: const w = tileDef.width; const l = tileDef.length; - - if (!layout) { - console.error("Tile definition missing layout. ID:", tileDef?.id); - console.warn("Invalid tileDef object:", tileDef); - return cells; - } - - const numberOfRows = layout.length; // usually equals tileDef.length - - // Iterate through matrix rows - for (let row = 0; row < numberOfRows; row++) { + for (let row = 0; row < rows; row++) { const rowData = layout[row]; - const numberOfCols = rowData.length; // usually equals tileDef.width + const cols = rowData.length; - for (let col = 0; col < numberOfCols; col++) { - const cellValue = rowData[col]; - - // CRITICAL: Skip empty cells (0) - if (cellValue === 0) continue; - - // Map Matrix (Row, Col) to Local Grid (lx, ly) - // Matrix Row 0 is the "Top" (Max Y). - // Matrix Row (Rows-1) is the "Bottom" (Y=0). - // So: ly = (numberOfRows - 1) - row - // lx = col + for (let col = 0; col < cols; col++) { + if (rowData[col] === 0) continue; const lx = col; - const ly = (numberOfRows - 1) - row; + const ly = (rows - 1) - row; - let gx, gy; + const gx = anchorX + lx; + const gy = anchorY + ly; + const key = `${gx},${gy}`; - // Apply Rotation to the local (lx, ly) point relative to (0,0) anchor - switch (rotation) { - case DIRECTIONS.NORTH: - // Standard: +X is Right, +Y is Forward - gx = startX + lx; - gy = startY + ly; - break; - case DIRECTIONS.SOUTH: - // 180 degrees: Extension goes "Backwards" and "Leftwards" relative to pivot - gx = startX - lx; - gy = startY - ly; - break; - case DIRECTIONS.EAST: - // 90 degrees Clockwise: Width becomes "Length", Length becomes "Width" - // x' = y, y' = -x - gx = startX + ly; - gy = startY - lx; - break; - case DIRECTIONS.WEST: - // 270 degrees Clockwise (or 90 Counter-Clockwise) - // x' = -y, y' = x - gx = startX - ly; - gy = startY + lx; - break; - default: - gx = startX + lx; - gy = startY + ly; - } + this.occupiedCells.set(key, tileInstance.id); + } + } + this.tiles.push(tileInstance); + console.log(`[Grid] Placed ${tileInstance.id} at ${anchorX},${anchorY} (Rot: ${tileInstance.rotation})`); + } - // We could also store the 'cellValue' (height) if we wanted. - cells.push({ x: gx, y: gy, value: cellValue }); + /** + * Helper to return global cells for logic/renderer without modifying state. + */ + calculateCells(variant, anchorX, anchorY) { + const cells = []; + const layout = variant.layout; + const rows = layout.length; + + for (let row = 0; row < rows; row++) { + const rowData = layout[row]; + const cols = rowData.length; + + for (let col = 0; col < cols; col++) { + if (rowData[col] === 0) continue; + + const lx = col; + const ly = (rows - 1) - row; + + const gx = anchorX + lx; + const gy = anchorY + ly; + + cells.push({ x: gx, y: gy, value: rowData[col] }); } } return cells; } /** - * Transforms a local point (like an exit definition) to Global Coordinates. - * Useful for calculating where an exit actually ends up on the board. + * Helper to see if a specific global coordinate is occupied */ - getGlobalPoint(localX, localY, tileInstance) { - let gx, gy; - const startX = tileInstance.x; - const startY = tileInstance.y; - const rotation = tileInstance.rotation; - - switch (rotation) { - case DIRECTIONS.NORTH: - gx = startX + localX; - gy = startY + localY; - break; - case DIRECTIONS.SOUTH: - gx = startX - localX; - gy = startY - localY; - break; - case DIRECTIONS.EAST: - gx = startX + localY; - gy = startY - localX; - break; - case DIRECTIONS.WEST: - gx = startX - localY; - gy = startY + localX; - break; - default: - gx = startX + localX; - gy = startY + localY; - } - return { x: gx, y: gy }; - } - - /** - * Rotates a direction (N, S, E, W) by a given amount. - * Useful for calculating which way an exit faces after the tile is rotated. - */ - getRotatedDirection(originalDirection, tileRotation) { - // N=0, E=1, S=2, W=3 - const dirs = [DIRECTIONS.NORTH, DIRECTIONS.EAST, DIRECTIONS.SOUTH, DIRECTIONS.WEST]; - const idx = dirs.indexOf(originalDirection); - - let rotationSteps = 0; - if (tileRotation === DIRECTIONS.EAST) rotationSteps = 1; - if (tileRotation === DIRECTIONS.SOUTH) rotationSteps = 2; - if (tileRotation === DIRECTIONS.WEST) rotationSteps = 3; - - const newIdx = (idx + rotationSteps) % 4; - return dirs[newIdx]; + isOccupied(x, y) { + return this.occupiedCells.has(`${x},${y}`); } } diff --git a/src/engine/dungeon/TileDefinitions.js b/src/engine/dungeon/TileDefinitions.js index 1fafe70..d1ff467 100644 --- a/src/engine/dungeon/TileDefinitions.js +++ b/src/engine/dungeon/TileDefinitions.js @@ -1,151 +1,379 @@ import { DIRECTIONS, TILE_TYPES } from './Constants.js'; -export const TILES = [ - { +export const TILES = { + // ------------------------------------------------------------------------- + // CORRIDOR STRAIGHT + // ------------------------------------------------------------------------- + 'corridor_straight': { id: 'corridor_straight', name: 'Corridor', type: TILE_TYPES.CORRIDOR, - width: 2, - length: 6, textures: ['/assets/images/dungeon1/tiles/corridor1.png'], - layout: [ - [1, 1], // y=5 (North) - [1, 1], - [1, 1], - [1, 1], - [1, 1], - [1, 1] // y=0 (South) - ], - exits: [ - // South - { x: 0, y: 0, direction: DIRECTIONS.SOUTH }, - { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, - // North - { x: 0, y: 5, direction: DIRECTIONS.NORTH }, - { x: 1, y: 5, direction: DIRECTIONS.NORTH } - ] + variants: { + [DIRECTIONS.NORTH]: { + width: 2, height: 6, + layout: [[1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]], + exits: [ + { x: 0, y: 0, direction: DIRECTIONS.SOUTH }, { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, + { x: 0, y: 5, direction: DIRECTIONS.NORTH }, { x: 1, y: 5, direction: DIRECTIONS.NORTH } + ] + }, + [DIRECTIONS.SOUTH]: { + width: 2, height: 6, + layout: [[1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]], + exits: [ + { x: 0, y: 0, direction: DIRECTIONS.SOUTH }, { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, + { x: 0, y: 5, direction: DIRECTIONS.NORTH }, { x: 1, y: 5, direction: DIRECTIONS.NORTH } + ] + }, + [DIRECTIONS.EAST]: { + width: 6, height: 2, + layout: [[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]], + exits: [ + { x: 0, y: 0, direction: DIRECTIONS.WEST }, { x: 0, y: 1, direction: DIRECTIONS.WEST }, + { x: 5, y: 0, direction: DIRECTIONS.EAST }, { x: 5, y: 1, direction: DIRECTIONS.EAST } + ] + }, + [DIRECTIONS.WEST]: { + width: 6, height: 2, + layout: [[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]], + exits: [ + { x: 0, y: 0, direction: DIRECTIONS.WEST }, { x: 0, y: 1, direction: DIRECTIONS.WEST }, + { x: 5, y: 0, direction: DIRECTIONS.EAST }, { x: 5, y: 1, direction: DIRECTIONS.EAST } + ] + } + } }, - { + + // ------------------------------------------------------------------------- + // CORRIDOR STEPS + // ------------------------------------------------------------------------- + 'corridor_steps': { id: 'corridor_steps', name: 'Steps', type: TILE_TYPES.CORRIDOR, - width: 2, - length: 6, textures: ['/assets/images/dungeon1/tiles/stairs1.png'], - layout: [ - [1, 1], - [1, 1], - [1, 1], - [1, 1], - [1, 1], - [1, 1] - ], - exits: [ - // South - { x: 0, y: 0, direction: DIRECTIONS.SOUTH }, - { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, - // North - { x: 0, y: 5, direction: DIRECTIONS.NORTH }, - { x: 1, y: 5, direction: DIRECTIONS.NORTH } - ] + variants: { + [DIRECTIONS.NORTH]: { + width: 2, height: 6, + layout: [[1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]], + exits: [ + { x: 0, y: 0, direction: DIRECTIONS.SOUTH }, { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, + { x: 0, y: 5, direction: DIRECTIONS.NORTH }, { x: 1, y: 5, direction: DIRECTIONS.NORTH } + ] + }, + [DIRECTIONS.SOUTH]: { + width: 2, height: 6, + layout: [[1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]], + exits: [ + { x: 0, y: 0, direction: DIRECTIONS.SOUTH }, { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, + { x: 0, y: 5, direction: DIRECTIONS.NORTH }, { x: 1, y: 5, direction: DIRECTIONS.NORTH } + ] + }, + [DIRECTIONS.EAST]: { + width: 6, height: 2, + layout: [[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]], + exits: [ + { x: 0, y: 0, direction: DIRECTIONS.WEST }, { x: 0, y: 1, direction: DIRECTIONS.WEST }, + { x: 5, y: 0, direction: DIRECTIONS.EAST }, { x: 5, y: 1, direction: DIRECTIONS.EAST } + ] + }, + [DIRECTIONS.WEST]: { + width: 6, height: 2, + layout: [[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]], + exits: [ + { x: 0, y: 0, direction: DIRECTIONS.WEST }, { x: 0, y: 1, direction: DIRECTIONS.WEST }, + { x: 5, y: 0, direction: DIRECTIONS.EAST }, { x: 5, y: 1, direction: DIRECTIONS.EAST } + ] + } + } }, - { + + // ------------------------------------------------------------------------- + // CORNER (L-Shape) + // ------------------------------------------------------------------------- + 'corridor_corner': { id: 'corridor_corner', name: 'Corner', type: TILE_TYPES.CORRIDOR, - width: 4, - length: 4, textures: ['/assets/images/dungeon1/tiles/L.png'], - layout: [ - [1, 1, 1, 1], // y=3 (Top) - [1, 1, 1, 1], // y=2 (East Exit here at x=3) - [1, 1, 0, 0], // y=1 - [1, 1, 0, 0] // y=0 (South Exit here at x=0,1) - ], - exits: [ - // South - { x: 0, y: 0, direction: DIRECTIONS.SOUTH }, - { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, - // East - { x: 3, y: 2, direction: DIRECTIONS.EAST }, - { x: 3, y: 3, direction: DIRECTIONS.EAST } - ] + variants: { + [DIRECTIONS.NORTH]: { + width: 4, height: 4, + layout: [ + [1, 1, 1, 1], + [1, 1, 1, 1], + [1, 1, 0, 0], + [1, 1, 0, 0] + ], + exits: [ + { x: 0, y: 0, direction: DIRECTIONS.SOUTH }, { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, + { x: 3, y: 2, direction: DIRECTIONS.EAST }, { x: 3, y: 3, direction: DIRECTIONS.EAST } + ] + }, + [DIRECTIONS.EAST]: { + width: 4, height: 4, + layout: [ + [1, 1, 0, 0], + [1, 1, 0, 0], + [1, 1, 1, 1], + [1, 1, 1, 1] + ], + exits: [ + { x: 0, y: 0, direction: DIRECTIONS.SOUTH }, { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, + { x: 2, y: 3, direction: DIRECTIONS.NORTH }, { x: 3, y: 3, direction: DIRECTIONS.NORTH } + ] + }, + [DIRECTIONS.SOUTH]: { + width: 4, height: 4, + layout: [ + [0, 0, 1, 1], + [0, 0, 1, 1], + [1, 1, 1, 1], + [1, 1, 1, 1] + ], + exits: [ + { x: 2, y: 3, direction: DIRECTIONS.NORTH }, { x: 3, y: 3, direction: DIRECTIONS.NORTH }, + { x: 0, y: 0, direction: DIRECTIONS.WEST }, { x: 0, y: 1, direction: DIRECTIONS.WEST } + ] + }, + [DIRECTIONS.WEST]: { + width: 4, height: 4, + layout: [ + [1, 1, 1, 1], + [1, 1, 1, 1], + [0, 0, 1, 1], + [0, 0, 1, 1] + ], + exits: [ + { x: 3, y: 2, direction: DIRECTIONS.EAST }, { x: 3, y: 3, direction: DIRECTIONS.EAST }, + { x: 0, y: 1, direction: DIRECTIONS.WEST }, { x: 0, y: 0, direction: DIRECTIONS.WEST } + ] + } + } }, - { + + // ------------------------------------------------------------------------- + // T-JUNCTION + // ------------------------------------------------------------------------- + 'junction_t': { id: 'junction_t', name: 'T-Junction', type: TILE_TYPES.JUNCTION, - width: 6, - length: 4, textures: ['/assets/images/dungeon1/tiles/T.png'], - layout: [ - [1, 1, 1, 1, 1, 1], // y=3 - [1, 1, 1, 1, 1, 1], // y=2 (West at x=0, East at x=5) - [0, 0, 1, 1, 0, 0], // y=1 - [0, 0, 1, 1, 0, 0] // y=0 (South at x=2,3) - ], - exits: [ - // South - { x: 2, y: 0, direction: DIRECTIONS.SOUTH }, - { x: 3, y: 0, direction: DIRECTIONS.SOUTH }, - // West - { x: 0, y: 2, direction: DIRECTIONS.WEST }, - { x: 0, y: 3, direction: DIRECTIONS.WEST }, - // East - { x: 5, y: 2, direction: DIRECTIONS.EAST }, - { x: 5, y: 3, direction: DIRECTIONS.EAST } - ] + variants: { + [DIRECTIONS.NORTH]: { + width: 6, height: 4, + layout: [ + [1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1], + [0, 0, 1, 1, 0, 0], + [0, 0, 1, 1, 0, 0] + ], + exits: [ + { x: 2, y: 0, direction: DIRECTIONS.SOUTH }, { x: 3, y: 0, direction: DIRECTIONS.SOUTH }, + { x: 0, y: 2, direction: DIRECTIONS.WEST }, { x: 0, y: 3, direction: DIRECTIONS.WEST }, + { x: 5, y: 2, direction: DIRECTIONS.EAST }, { x: 5, y: 3, direction: DIRECTIONS.EAST } + ] + }, + [DIRECTIONS.EAST]: { + width: 4, height: 6, + layout: [ + [1, 1, 0, 0], + [1, 1, 0, 0], + [1, 1, 1, 1], + [1, 1, 1, 1], + [1, 1, 0, 0], + [1, 1, 0, 0] + ], + exits: [ + { x: 2, y: 0, direction: DIRECTIONS.SOUTH }, { x: 3, y: 0, direction: DIRECTIONS.SOUTH }, + { x: 2, y: 5, direction: DIRECTIONS.NORTH }, { x: 3, y: 5, direction: DIRECTIONS.NORTH }, + { x: 0, y: 2, direction: DIRECTIONS.WEST }, { x: 0, y: 3, direction: DIRECTIONS.WEST } + ] + }, + [DIRECTIONS.SOUTH]: { + width: 6, height: 4, + layout: [ + [0, 0, 1, 1, 0, 0], + [0, 0, 1, 1, 0, 0], + [1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1] + ], + exits: [ + { x: 2, y: 3, direction: DIRECTIONS.NORTH }, { x: 3, y: 3, direction: DIRECTIONS.NORTH }, + { x: 5, y: 0, direction: DIRECTIONS.EAST }, { x: 5, y: 1, direction: DIRECTIONS.EAST }, + { x: 0, y: 0, direction: DIRECTIONS.WEST }, { x: 0, y: 1, direction: DIRECTIONS.WEST } + ] + }, + [DIRECTIONS.WEST]: { + width: 4, height: 6, + layout: [ + [0, 0, 1, 1], + [0, 0, 1, 1], + [1, 1, 1, 1], + [1, 1, 1, 1], + [0, 0, 1, 1], + [0, 0, 1, 1] + ], + exits: [ + { x: 3, y: 2, direction: DIRECTIONS.EAST }, { x: 3, y: 3, direction: DIRECTIONS.EAST }, + { x: 0, y: 5, direction: DIRECTIONS.NORTH }, { x: 1, y: 5, direction: DIRECTIONS.NORTH }, + { x: 0, y: 0, direction: DIRECTIONS.SOUTH }, { x: 1, y: 0, direction: DIRECTIONS.SOUTH } + ] + } + } }, - { + + // ------------------------------------------------------------------------- + // ROOM DUNGEON + // ------------------------------------------------------------------------- + 'room_dungeon': { id: 'room_dungeon', name: 'Dungeon Room', type: TILE_TYPES.ROOM, - width: 4, - length: 4, textures: [ '/assets/images/dungeon1/tiles/room_4x4_circle.png', '/assets/images/dungeon1/tiles/room_4x4_orange.png', '/assets/images/dungeon1/tiles/room_4x4_squeleton.png' ], - layout: [ - [1, 1, 1, 1], // y=3 (North Exit at x=1,2) - [1, 1, 1, 1], - [1, 1, 1, 1], - [1, 1, 1, 1] // y=0 (South Exit at x=1,2) - ], - exits: [ - // South - { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, - { x: 2, y: 0, direction: DIRECTIONS.SOUTH }, - // North - { x: 1, y: 3, direction: DIRECTIONS.NORTH }, - { x: 2, y: 3, direction: DIRECTIONS.NORTH } - ] + variants: { + [DIRECTIONS.NORTH]: { + width: 4, height: 4, + layout: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], + exits: [ + { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, { x: 2, y: 0, direction: DIRECTIONS.SOUTH }, + { x: 1, y: 3, direction: DIRECTIONS.NORTH }, { x: 2, y: 3, direction: DIRECTIONS.NORTH } + ] + }, + [DIRECTIONS.EAST]: { + width: 4, height: 4, + layout: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], + exits: [ + { x: 0, y: 1, direction: DIRECTIONS.WEST }, { x: 0, y: 2, direction: DIRECTIONS.WEST }, + { x: 3, y: 1, direction: DIRECTIONS.EAST }, { x: 3, y: 2, direction: DIRECTIONS.EAST } + ] + }, + [DIRECTIONS.SOUTH]: { + width: 4, height: 4, + layout: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], + exits: [ + { x: 1, y: 3, direction: DIRECTIONS.NORTH }, { x: 2, y: 3, direction: DIRECTIONS.NORTH }, + { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, { x: 2, y: 0, direction: DIRECTIONS.SOUTH } + ] + }, + [DIRECTIONS.WEST]: { + width: 4, height: 4, + layout: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], + exits: [ + { x: 3, y: 1, direction: DIRECTIONS.EAST }, { x: 3, y: 2, direction: DIRECTIONS.EAST }, + { x: 0, y: 1, direction: DIRECTIONS.WEST }, { x: 0, y: 2, direction: DIRECTIONS.WEST } + ] + } + } }, - { + + // ------------------------------------------------------------------------- + // ROOM OBJECTIVE + // ------------------------------------------------------------------------- + 'room_objective': { + id: 'room_objective', + name: 'Dungeon Room', + type: TILE_TYPES.ROOM, + textures: [ + '/assets/images/dungeon1/tiles/room_4x4_circle.png', + '/assets/images/dungeon1/tiles/room_4x4_orange.png', + '/assets/images/dungeon1/tiles/room_4x4_squeleton.png' + ], + variants: { + [DIRECTIONS.NORTH]: { + width: 4, height: 4, + layout: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], + exits: [ + { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, { x: 2, y: 0, direction: DIRECTIONS.SOUTH }, + { x: 1, y: 3, direction: DIRECTIONS.NORTH }, { x: 2, y: 3, direction: DIRECTIONS.NORTH } + ] + }, + [DIRECTIONS.EAST]: { + width: 4, height: 4, + layout: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], + exits: [ + { x: 0, y: 1, direction: DIRECTIONS.WEST }, { x: 0, y: 2, direction: DIRECTIONS.WEST }, + { x: 3, y: 1, direction: DIRECTIONS.EAST }, { x: 3, y: 2, direction: DIRECTIONS.EAST } + ] + }, + [DIRECTIONS.SOUTH]: { + width: 4, height: 4, + layout: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], + exits: [ + { x: 1, y: 3, direction: DIRECTIONS.NORTH }, { x: 2, y: 3, direction: DIRECTIONS.NORTH }, + { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, { x: 2, y: 0, direction: DIRECTIONS.SOUTH } + ] + }, + [DIRECTIONS.WEST]: { + width: 4, height: 4, + layout: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], + exits: [ + { x: 3, y: 1, direction: DIRECTIONS.EAST }, { x: 3, y: 2, direction: DIRECTIONS.EAST }, + { x: 0, y: 1, direction: DIRECTIONS.WEST }, { x: 0, y: 2, direction: DIRECTIONS.WEST } + ] + } + } + }, + + // ------------------------------------------------------------------------- + // ROOM OBJECTIVE + // ------------------------------------------------------------------------- + 'room_objective': { id: 'room_objective', name: 'Objective Room', type: TILE_TYPES.OBJECTIVE_ROOM, - width: 4, - length: 8, textures: [ '/assets/images/dungeon1/tiles/room_4x8_altar.png', '/assets/images/dungeon1/tiles/room_4x8_tomb.png' ], - layout: [ - [1, 1, 1, 1], - [1, 1, 1, 1], - [1, 1, 1, 1], - [1, 1, 1, 1], - [1, 1, 1, 1], - [1, 1, 1, 1], - [1, 1, 1, 1], - [1, 1, 1, 1] // South Exit - ], - exits: [ - { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, - { x: 2, y: 0, direction: DIRECTIONS.SOUTH } - ] + variants: { + [DIRECTIONS.NORTH]: { + width: 4, height: 8, + layout: [ + [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], + [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1] + ], + exits: [ + { x: 1, y: 0, direction: DIRECTIONS.SOUTH }, { x: 2, y: 0, direction: DIRECTIONS.SOUTH } + ] + }, + [DIRECTIONS.EAST]: { + width: 8, height: 4, + layout: [ + [1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1] + ], + exits: [ + { x: 0, y: 1, direction: DIRECTIONS.WEST }, { x: 0, y: 2, direction: DIRECTIONS.WEST } + ] + }, + [DIRECTIONS.SOUTH]: { + width: 4, height: 8, + layout: [ + [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], + [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1] + ], + exits: [ + { x: 1, y: 7, direction: DIRECTIONS.NORTH }, { x: 2, y: 7, direction: DIRECTIONS.NORTH } + ] + }, + [DIRECTIONS.WEST]: { + width: 8, height: 4, + layout: [ + [1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1], + [1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1] + ], + exits: [ + { x: 7, y: 1, direction: DIRECTIONS.EAST }, { x: 7, y: 2, direction: DIRECTIONS.EAST } + ] + } + } } -]; +}; diff --git a/src/engine/dungeon/old/DungeonGenerator.js b/src/engine/dungeon/old/DungeonGenerator.js new file mode 100644 index 0000000..b151796 --- /dev/null +++ b/src/engine/dungeon/old/DungeonGenerator.js @@ -0,0 +1,181 @@ +import { DIRECTIONS } from './Constants.js'; +import { GridSystem } from './GridSystem.js'; +import { DungeonDeck } from './DungeonDeck.js'; + +export class DungeonGenerator { + constructor() { + this.grid = new GridSystem(); + this.deck = new DungeonDeck(); + this.pendingExits = []; + this.placedTiles = []; + this.isComplete = false; + } + + startDungeon(missionConfig) { + const objectiveId = missionConfig?.type === 'quest' ? 'room_objective' : 'room_dungeon'; + this.deck.generateMissionDeck(objectiveId); + + const firstCard = this.deck.draw(); + if (!firstCard) { + console.error("❌ Deck empty!"); + return; + } + + // Place first tile with NORTH variant + this.placeTileAt(firstCard, 0, 0, DIRECTIONS.NORTH); + console.log(`🏰 Dungeon started with ${firstCard.name}`); + } + + step() { + if (this.isComplete || this.pendingExits.length === 0) { + this.isComplete = true; + return false; + } + + const card = this.deck.draw(); + if (!card) { + this.isComplete = true; + return false; + } + + const targetExit = this.pendingExits.shift(); + const placed = this.tryPlaceCard(card, targetExit); + + if (!placed) { + this.pendingExits.push(targetExit); + console.warn(`⚠️ Failed to place ${card.name} - returning exit to pending queue`); + } + + return true; + } + + tryPlaceCard(card, targetExit) { + console.log(`\n🃏 Trying to place card: ${card.name} (ID: ${card.id})`); + + // Use standard opposite logic for Directions (String) since names don't change + const requiredDirection = this.opposite(targetExit.direction); + const targetCell = this.neighbor(targetExit.x, targetExit.y, targetExit.direction); + + const rotations = [DIRECTIONS.NORTH, DIRECTIONS.EAST, DIRECTIONS.SOUTH, DIRECTIONS.WEST]; + const shuffled = this.shuffle(rotations); + + let bestPlacement = null; + let maxConnections = -1; + + // Try ALL rotations + for (const rotation of shuffled) { + // 1. Get the pre-calculated VARIANT for this rotation + const variant = card.variants[rotation]; + if (!variant) continue; + + const variantExits = variant.exits; + + // 2. Find candidate exits on this variant that face the required direction + // Note: variant.exits are ALREADY correctly oriented for this rotation + const candidates = variantExits.filter(e => e.direction === requiredDirection); + + for (const candidate of candidates) { + // Determine absolute anchor position + // Since variant coords are all positive relative to (0,0), anchor calculation is simple subtraction + const anchorX = targetCell.x - candidate.x; + const anchorY = targetCell.y - candidate.y; + + if (this.grid.canPlace(card, anchorX, anchorY, rotation)) { + // Start Score at 0 + let score = 0; + + // Calculate score + for (const exit of variantExits) { + const globalX = anchorX + exit.x; + const globalY = anchorY + exit.y; + + const neighbor = this.neighbor(globalX, globalY, exit.direction); + const neighborKey = `${neighbor.x},${neighbor.y}`; + + if (this.grid.occupiedCells.has(neighborKey)) { + score++; + } + } + + // Prefer higher score. + if (score > maxConnections) { + maxConnections = score; + bestPlacement = { card, anchorX, anchorY, rotation }; + } + } + } + } + + if (bestPlacement) { + this.placeTileAt(bestPlacement.card, bestPlacement.anchorX, bestPlacement.anchorY, bestPlacement.rotation); + console.log(`✅ Placed ${card.name} at (${bestPlacement.anchorX}, ${bestPlacement.anchorY}) Rot:${bestPlacement.rotation} Score:${maxConnections}`); + return true; + } + + console.log(`❌ Could not place ${card.name} in any rotation`); + return false; + } + + placeTileAt(tileDef, x, y, rotation) { + const instance = { + id: `tile_${this.placedTiles.length}`, + defId: tileDef.id, + x, y, rotation + }; + + this.grid.placeTile(instance, tileDef); // Grid system now handles looking up the variant + this.placedTiles.push(instance); + + // Add exits from the variant + const variant = tileDef.variants[rotation]; + + for (const exit of variant.exits) { + const globalX = x + exit.x; + const globalY = y + exit.y; + const neighborCell = this.neighbor(globalX, globalY, exit.direction); + const key = `${neighborCell.x},${neighborCell.y}`; + + // Only add exit if it leads to empty space + if (!this.grid.occupiedCells.has(key)) { + this.pendingExits.push({ + x: globalX, + y: globalY, + direction: exit.direction + }); + } + } + + // Cleanup pending exits that are now connected + this.pendingExits = this.pendingExits.filter(ex => { + const n = this.neighbor(ex.x, ex.y, ex.direction); + return !this.grid.occupiedCells.has(`${n.x},${n.y}`); + }); + } + + neighbor(x, y, direction) { + switch (direction) { + case DIRECTIONS.NORTH: return { x, y: y + 1 }; + case DIRECTIONS.SOUTH: return { x, y: y - 1 }; + case DIRECTIONS.EAST: return { x: x + 1, y }; + case DIRECTIONS.WEST: return { x: x - 1, y }; + } + } + + opposite(direction) { + switch (direction) { + case DIRECTIONS.NORTH: return DIRECTIONS.SOUTH; + case DIRECTIONS.SOUTH: return DIRECTIONS.NORTH; + case DIRECTIONS.EAST: return DIRECTIONS.WEST; + case DIRECTIONS.WEST: return DIRECTIONS.EAST; + } + } + + shuffle(arr) { + const copy = [...arr]; + for (let i = copy.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [copy[i], copy[j]] = [copy[j], copy[i]]; + } + return copy; + } +} diff --git a/src/engine/dungeon/old/GridSystem.js b/src/engine/dungeon/old/GridSystem.js new file mode 100644 index 0000000..780f78f --- /dev/null +++ b/src/engine/dungeon/old/GridSystem.js @@ -0,0 +1,134 @@ +import { DIRECTIONS } from './Constants.js'; + +export class GridSystem { + /** + * The GridSystem maintains the "Source of Truth" for the dungeon layout. + * It knows which cells are occupied and by whom. + * Dependencies: Constants.js (DIRECTIONS) + */ + constructor() { + // We use a Map for O(1) lookups. + // Key: "x,y" (String) -> Value: "tileId" (String) + this.occupiedCells = new Map(); + + // We also keep a list of placed tile objects for easier iteration if needed later. + this.tiles = []; + } + + /** + * Checks if a tile can be placed at the given coordinates with the given rotation. + * Needs: The Tile Definition (to know size), the target X,Y, and desired Rotation. + */ + canPlace(tileDef, startX, startY, rotation) { + // 1. Calculate the real-world coordinates of every single cell this tile would occupy. + const cells = this.getGlobalCells(tileDef, startX, startY, rotation); + + // 2. Check each cell against our Map of occupied spots. + for (const cell of cells) { + const key = `${cell.x},${cell.y}`; + if (this.occupiedCells.has(key)) { + return false; // COLLISION! Spot already taken. + } + } + return true; // All clear. + } + + /** + * Officially registers a tile onto the board. + * Should only be called AFTER canPlace returns true. + */ + placeTile(tileInstance, tileDef) { + const cells = this.getGlobalCells(tileDef, tileInstance.x, tileInstance.y, tileInstance.rotation); + + // Record every cell in our Map + for (const cell of cells) { + const key = `${cell.x},${cell.y}`; + this.occupiedCells.set(key, tileInstance.id); + } + + // Store the instance + this.tiles.push(tileInstance); + console.log(`Placed tile ${tileInstance.id} at ${tileInstance.x},${tileInstance.y}`); + } + + /** + * THE CORRECTED MAGIC MATH FUNCTION. + * Now uses Pre-Calculated Variants from TileDefinitions. + * NO DYNAMIC ROTATION MATH performed here. + * All variants are treated as "North" oriented blocks. + */ + getGlobalCells(tileDef, startX, startY, rotation) { + const cells = []; + + // 1. Retrieve the specific variant for this rotation + const variant = tileDef.variants[rotation]; + if (!variant) { + console.error(`Missing variant for rotation ${rotation} in tile ${tileDef.id}`); + return cells; + } + + const layout = variant.layout; + + if (!layout) { + console.error("Variant missing layout. ID:", tileDef?.id, rotation); + return cells; + } + + const numberOfRows = layout.length; + + // Iterate through matrix rows + for (let row = 0; row < numberOfRows; row++) { + const rowData = layout[row]; + const numberOfCols = rowData.length; + + for (let col = 0; col < numberOfCols; col++) { + const cellValue = rowData[col]; + + // Skip empty cells (0) + if (cellValue === 0) continue; + + // Map Matrix (Row, Col) to Local Grid (lx, ly) + // Matrix Row 0 is the "Top" (Max Y) relative to the tile's origin + // Matrix Row (Rows-1) is the "Bottom" (Y=0) + // lx grows right (col) + // ly grows up (rows reversed) + const lx = col; + const ly = (numberOfRows - 1) - row; + + // SIMPLIFIED LOGIC: + // Since the variant layout is ALREADY rotated, we always just ADD the offsets. + // We treat every variant as if it's placed "North-wise" at the anchor point. + + const gx = startX + lx; + const gy = startY + ly; + + cells.push({ x: gx, y: gy, value: cellValue }); + } + } + return cells; + } + + /** + * Transforms a local point (like an exit definition) to Global Coordinates. + * Simplified: Just adds offsets because variants carry pre-rotated coords. + */ + getGlobalPoint(localX, localY, tileInstance) { + const startX = tileInstance.x; + const startY = tileInstance.y; + + // Simple translation. Rotation is handled by the variant properties upstream. + return { + x: startX + localX, + y: startY + localY + }; + } + + /** + * DEPRECATED / LEGACY + * Kept just in case, but shouldn't be needed with explicit variants. + */ + getRotatedDirection(originalDirection, tileRotation) { + // With explicit variants, the exit.direction is ALREADY the final global direction. + return originalDirection; + } +} diff --git a/src/engine/game/GameEngine.js b/src/engine/game/GameEngine.js index 3c25e28..2605e87 100644 --- a/src/engine/game/GameEngine.js +++ b/src/engine/game/GameEngine.js @@ -1,196 +1,105 @@ - import { DungeonGenerator } from '../dungeon/DungeonGenerator.js'; -import { TurnManager } from './TurnManager.js'; -import { GAME_PHASES } from './GameConstants.js'; -import { Entity } from './Entity.js'; +/** + * GameEngine for Manual Dungeon Construction with Player Movement + */ export class GameEngine { constructor() { this.dungeon = new DungeonGenerator(); - this.turnManager = new TurnManager(); - this.missionConfig = null; - this.player = null; + this.selectedEntity = null; + this.isRunning = false; - this.selectedPath = []; - this.selectedEntityId = null; - - // Simple event callbacks (external systems can assign these) - this.onPathChange = null; // (path) => {} - this.onEntityUpdate = null; // (entity) => {} - this.onEntityMove = null; // (entity, path) => {} - this.onEntitySelect = null; // (entityId, isSelected) => {} - - this.setupEventHooks(); - } - - setupEventHooks() { - this.turnManager.on('phase_changed', (phase) => this.handlePhaseChange(phase)); + // Callbacks + this.onEntityUpdate = null; + this.onEntityMove = null; + this.onEntitySelect = null; + this.onPathChange = null; } startMission(missionConfig) { - this.missionConfig = missionConfig; - console.log(`[GameEngine] Starting mission: ${missionConfig.name}`); - - // 1. Initialize Dungeon (Places the first room) + console.log('[GameEngine] Starting mission:', missionConfig.name); this.dungeon.startDungeon(missionConfig); - // 2. Initialize Player - // Find a valid starting spot (first occupied cell) - const startingSpot = this.dungeon.grid.occupiedCells.keys().next().value; - const [startX, startY] = startingSpot ? startingSpot.split(',').map(Number) : [0, 0]; + // Create player at center of first tile + this.createPlayer(1.5, 2.5); // Center of 2x6 corridor - console.log(`[GameEngine] Spawning player at valid spot: ${startX}, ${startY}`); - this.player = new Entity('p1', 'Barbaro', 'hero', startX, startY, '/assets/images/dungeon1/standees/barbaro.png'); - if (this.onEntityUpdate) this.onEntityUpdate(this.player); - - // 3. Start the Turn Sequence - this.turnManager.startGame(); + this.isRunning = true; } - update(deltaTime) { - // Continuous logic + createPlayer(x, y) { + this.player = { + id: 'p1', + name: 'Barbarian', + x: Math.floor(x), + y: Math.floor(y), + texturePath: '/assets/images/dungeon1/standees/barbaro.png' + }; + + if (this.onEntityUpdate) { + this.onEntityUpdate(this.player); + } + + console.log('[GameEngine] Player created at', this.player.x, this.player.y); } - handlePhaseChange(phase) { - console.log(`[GameEngine] Phase Changed to: ${phase}`); - } - - // --- Interaction --- onCellClick(x, y) { - if (this.turnManager.currentPhase !== GAME_PHASES.HERO) return; - - console.log(`Cell Click: ${x},${y}`); - - // 1. Selector Check (Click on Player?) - if (this.player.x === x && this.player.y === y) { - if (this.selectedEntityId === this.player.id) { - // Deselect - this.selectedEntityId = null; - console.log("Player Deselected"); - if (this.onEntitySelect) this.onEntitySelect(this.player.id, false); - - // Clear path too - this.selectedPath = []; - this._notifyPath(); - } else { - // Select - this.selectedEntityId = this.player.id; - console.log("Player Selected"); - if (this.onEntitySelect) this.onEntitySelect(this.player.id, true); + // If no player selected, select player on click + if (!this.selectedEntity && this.player && x === this.player.x && y === this.player.y) { + this.selectedEntity = this.player; + if (this.onEntitySelect) { + this.onEntitySelect(this.player.id, true); } + console.log('[GameEngine] Player selected'); return; } - // If nothing selected, ignore floor clicks - if (!this.selectedEntityId) return; - - // 2. Check if valid Floor (Occupied Cell) - if (!this.dungeon.grid.occupiedCells.has(`${x},${y}`)) { - console.log("Invalid cell: Void"); - return; - } - - // 3. Logic: Path Building (Only if Selected) - - // A. If clicking on last selected -> Deselect (Remove last step) - if (this.selectedPath.length > 0) { - const last = this.selectedPath[this.selectedPath.length - 1]; - if (last.x === x && last.y === y) { - this.selectedPath.pop(); - this._notifyPath(); - return; - } - } - - // B. Determine Previous Point (Player or Last Path Node) - let prevX = this.player.x; - let prevY = this.player.y; - - if (this.selectedPath.length > 0) { - const last = this.selectedPath[this.selectedPath.length - 1]; - prevX = last.x; - prevY = last.y; - } - - // Note: Manhattan distance 1 = Adjacency (No diagonals) - const dist = Math.abs(x - prevX) + Math.abs(y - prevY); - - if (dist === 1) { - // Check Path Length Limit (Speed) - if (this.selectedPath.length < this.player.stats.move) { - this.selectedPath.push({ x, y }); - this._notifyPath(); + // If player selected, move to clicked cell + if (this.selectedEntity === this.player) { + if (this.canMoveTo(x, y)) { + this.movePlayer(x, y); } else { - console.log("Max movement reached"); - } - } else { - // Restart path if clicking adjacent to player - const distFromPlayer = Math.abs(x - this.player.x) + Math.abs(y - this.player.y); - if (distFromPlayer === 1) { - this.selectedPath = [{ x, y }]; - this._notifyPath(); + console.log('[GameEngine] Cannot move there'); } } } - onCellRightClick(x, y) { - if (this.turnManager.currentPhase !== GAME_PHASES.HERO) return; - if (!this.selectedEntityId) return; // Must satisfy selection rule + canMoveTo(x, y) { + // Check if cell is walkable (occupied by a tile) + return this.dungeon.grid.isOccupied(x, y); + } - // Must be clicking the last tile of the path to confirm - if (this.selectedPath.length === 0) return; + movePlayer(x, y) { + // Simple direct movement (no pathfinding for now) + const path = [{ x, y }]; - const last = this.selectedPath[this.selectedPath.length - 1]; - if (last.x === x && last.y === y) { - console.log("Confirming Move..."); - this.confirmMove(); + this.player.x = x; + this.player.y = y; + + if (this.onEntityMove) { + this.onEntityMove(this.player, path); } - } - confirmMove() { - if (this.selectedPath.length === 0) return; - - const target = this.selectedPath[this.selectedPath.length - 1]; - const pathCopy = [...this.selectedPath]; - - // 1. Trigger Animation Sequence - if (this.onEntityMove) this.onEntityMove(this.player, pathCopy); - - // 2. Update Logical Position - this.player.setPosition(target.x, target.y); - - // 3. Cleanup - this.selectedPath = []; - this._notifyPath(); - - // Note: Exploration is now manual via door interaction - } - - _notifyPath() { - if (this.onPathChange) this.onPathChange(this.selectedPath); - } - - exploreExit(exitCell) { - console.log('[GameEngine] Exploring exit:', exitCell); - - // Find this exit in pendingExits - const exit = this.dungeon.pendingExits.find(ex => ex.x === exitCell.x && ex.y === exitCell.y); - - if (exit) { - // Prioritize this exit - const idx = this.dungeon.pendingExits.indexOf(exit); - if (idx > -1) { - this.dungeon.pendingExits.splice(idx, 1); - this.dungeon.pendingExits.unshift(exit); - } - - // Trigger exploration - this.turnManager.triggerExploration(); - this.dungeon.step(); - this.turnManager.setPhase(GAME_PHASES.HERO); - } else { - console.warn('[GameEngine] Exit not found in pendingExits'); + // Deselect after move + this.selectedEntity = null; + if (this.onEntitySelect) { + this.onEntitySelect(this.player.id, false); } + + console.log('[GameEngine] Player moved to', x, y); + } + + isPlayerAdjacentToDoor(doorExit) { + if (!this.player) return false; + + const dx = Math.abs(this.player.x - doorExit.x); + const dy = Math.abs(this.player.y - doorExit.y); + + // Adjacent means distance of 1 in one direction and 0 in the other + return (dx === 1 && dy === 0) || (dx === 0 && dy === 1); + } + + update(time) { + // Minimal update loop } } diff --git a/src/engine/game/old/GameEngine_20260102.js b/src/engine/game/old/GameEngine_20260102.js new file mode 100644 index 0000000..3c25e28 --- /dev/null +++ b/src/engine/game/old/GameEngine_20260102.js @@ -0,0 +1,196 @@ + +import { DungeonGenerator } from '../dungeon/DungeonGenerator.js'; +import { TurnManager } from './TurnManager.js'; +import { GAME_PHASES } from './GameConstants.js'; +import { Entity } from './Entity.js'; + +export class GameEngine { + constructor() { + this.dungeon = new DungeonGenerator(); + this.turnManager = new TurnManager(); + this.missionConfig = null; + + this.player = null; + + this.selectedPath = []; + this.selectedEntityId = null; + + // Simple event callbacks (external systems can assign these) + this.onPathChange = null; // (path) => {} + this.onEntityUpdate = null; // (entity) => {} + this.onEntityMove = null; // (entity, path) => {} + this.onEntitySelect = null; // (entityId, isSelected) => {} + + this.setupEventHooks(); + } + + setupEventHooks() { + this.turnManager.on('phase_changed', (phase) => this.handlePhaseChange(phase)); + } + + startMission(missionConfig) { + this.missionConfig = missionConfig; + console.log(`[GameEngine] Starting mission: ${missionConfig.name}`); + + // 1. Initialize Dungeon (Places the first room) + this.dungeon.startDungeon(missionConfig); + + // 2. Initialize Player + // Find a valid starting spot (first occupied cell) + const startingSpot = this.dungeon.grid.occupiedCells.keys().next().value; + const [startX, startY] = startingSpot ? startingSpot.split(',').map(Number) : [0, 0]; + + console.log(`[GameEngine] Spawning player at valid spot: ${startX}, ${startY}`); + this.player = new Entity('p1', 'Barbaro', 'hero', startX, startY, '/assets/images/dungeon1/standees/barbaro.png'); + if (this.onEntityUpdate) this.onEntityUpdate(this.player); + + // 3. Start the Turn Sequence + this.turnManager.startGame(); + } + + update(deltaTime) { + // Continuous logic + } + + handlePhaseChange(phase) { + console.log(`[GameEngine] Phase Changed to: ${phase}`); + } + + // --- Interaction --- + onCellClick(x, y) { + if (this.turnManager.currentPhase !== GAME_PHASES.HERO) return; + + console.log(`Cell Click: ${x},${y}`); + + // 1. Selector Check (Click on Player?) + if (this.player.x === x && this.player.y === y) { + if (this.selectedEntityId === this.player.id) { + // Deselect + this.selectedEntityId = null; + console.log("Player Deselected"); + if (this.onEntitySelect) this.onEntitySelect(this.player.id, false); + + // Clear path too + this.selectedPath = []; + this._notifyPath(); + } else { + // Select + this.selectedEntityId = this.player.id; + console.log("Player Selected"); + if (this.onEntitySelect) this.onEntitySelect(this.player.id, true); + } + return; + } + + // If nothing selected, ignore floor clicks + if (!this.selectedEntityId) return; + + // 2. Check if valid Floor (Occupied Cell) + if (!this.dungeon.grid.occupiedCells.has(`${x},${y}`)) { + console.log("Invalid cell: Void"); + return; + } + + // 3. Logic: Path Building (Only if Selected) + + // A. If clicking on last selected -> Deselect (Remove last step) + if (this.selectedPath.length > 0) { + const last = this.selectedPath[this.selectedPath.length - 1]; + if (last.x === x && last.y === y) { + this.selectedPath.pop(); + this._notifyPath(); + return; + } + } + + // B. Determine Previous Point (Player or Last Path Node) + let prevX = this.player.x; + let prevY = this.player.y; + + if (this.selectedPath.length > 0) { + const last = this.selectedPath[this.selectedPath.length - 1]; + prevX = last.x; + prevY = last.y; + } + + // Note: Manhattan distance 1 = Adjacency (No diagonals) + const dist = Math.abs(x - prevX) + Math.abs(y - prevY); + + if (dist === 1) { + // Check Path Length Limit (Speed) + if (this.selectedPath.length < this.player.stats.move) { + this.selectedPath.push({ x, y }); + this._notifyPath(); + } else { + console.log("Max movement reached"); + } + } else { + // Restart path if clicking adjacent to player + const distFromPlayer = Math.abs(x - this.player.x) + Math.abs(y - this.player.y); + if (distFromPlayer === 1) { + this.selectedPath = [{ x, y }]; + this._notifyPath(); + } + } + } + + onCellRightClick(x, y) { + if (this.turnManager.currentPhase !== GAME_PHASES.HERO) return; + if (!this.selectedEntityId) return; // Must satisfy selection rule + + // Must be clicking the last tile of the path to confirm + if (this.selectedPath.length === 0) return; + + const last = this.selectedPath[this.selectedPath.length - 1]; + if (last.x === x && last.y === y) { + console.log("Confirming Move..."); + this.confirmMove(); + } + } + + confirmMove() { + if (this.selectedPath.length === 0) return; + + const target = this.selectedPath[this.selectedPath.length - 1]; + const pathCopy = [...this.selectedPath]; + + // 1. Trigger Animation Sequence + if (this.onEntityMove) this.onEntityMove(this.player, pathCopy); + + // 2. Update Logical Position + this.player.setPosition(target.x, target.y); + + // 3. Cleanup + this.selectedPath = []; + this._notifyPath(); + + // Note: Exploration is now manual via door interaction + } + + _notifyPath() { + if (this.onPathChange) this.onPathChange(this.selectedPath); + } + + exploreExit(exitCell) { + console.log('[GameEngine] Exploring exit:', exitCell); + + // Find this exit in pendingExits + const exit = this.dungeon.pendingExits.find(ex => ex.x === exitCell.x && ex.y === exitCell.y); + + if (exit) { + // Prioritize this exit + const idx = this.dungeon.pendingExits.indexOf(exit); + if (idx > -1) { + this.dungeon.pendingExits.splice(idx, 1); + this.dungeon.pendingExits.unshift(exit); + } + + // Trigger exploration + this.turnManager.triggerExploration(); + this.dungeon.step(); + this.turnManager.setPhase(GAME_PHASES.HERO); + } else { + console.warn('[GameEngine] Exit not found in pendingExits'); + } + } +} diff --git a/src/main.js b/src/main.js index e242c40..bb246a0 100644 --- a/src/main.js +++ b/src/main.js @@ -1,69 +1,50 @@ - import { GameEngine } from './engine/game/GameEngine.js'; import { GameRenderer } from './view/GameRenderer.js'; import { CameraManager } from './view/CameraManager.js'; import { UIManager } from './view/UIManager.js'; -import { DoorModal } from './view/DoorModal.js'; import { MissionConfig, MISSION_TYPES } from './engine/dungeon/MissionConfig.js'; -console.log("Initializing Warhammer Quest Engine... SYSTEM: GAME_LOOP_ARC_V1"); -window.TEXTURE_DEBUG = true; +console.log("🏗️ Warhammer Quest - Manual Dungeon Construction"); // 1. Setup Mission const mission = new MissionConfig({ id: 'mission_1', - name: 'The First Dive', + name: 'Manual Construction', type: MISSION_TYPES.ESCAPE, - minTiles: 6 + minTiles: 13 }); // 2. Initialize Core Systems -const renderer = new GameRenderer('app'); // Visuals -const cameraManager = new CameraManager(renderer); // Camera -const game = new GameEngine(); // Logic Brain - -// 3. Initialize UI -// UIManager currently reads directly from DungeonGenerator for minimap +const renderer = new GameRenderer('app'); +const cameraManager = new CameraManager(renderer); +const game = new GameEngine(); const ui = new UIManager(cameraManager, game); -const doorModal = new DoorModal(); -// Global Access for Debugging in Browser Console +// Global Access window.GAME = game; window.RENDERER = renderer; -// 4. Bridge Logic & View (Event Hook) -// When logic places a tile, we tell the renderer to spawn 3D meshes. -// Ideally, this should be an Event in GameEngine, but we keep this patch for now to verify. +// 3. Connect Dungeon Generator to Renderer const generator = game.dungeon; const originalPlaceTile = generator.grid.placeTile.bind(generator.grid); -generator.grid.placeTile = (instance, def) => { - // 1. Execute Logic - originalPlaceTile(instance, def); +generator.grid.placeTile = (instance, variant, card) => { + originalPlaceTile(instance, variant); - // 2. Execute Visuals - const cells = generator.grid.getGlobalCells(def, instance.x, instance.y, instance.rotation); - renderer.addTile(cells, def.type, def, instance); + const cells = generator.grid.calculateCells(variant, instance.x, instance.y); + renderer.addTile(cells, card.type, card, instance); - // 3. Update Exits Visuals setTimeout(() => { - renderer.renderExits(generator.pendingExits); - }, 50); // Small delay to ensure logic updated pendingExits + renderer.renderExits(generator.availableExits); + }, 50); }; -// 5. Connect UI Buttons to Game Actions (Temporary) -// We will add a temporary button in pure JS here or modify UIManager later. -// For now, let's expose a global function for the UI to call if needed, -// or simply rely on UIManager updates. - -// 6. Start the Game -// 5a. Bridge Game Interactions -// 5a. Bridge Game Interactions +// 4. Connect Player to Renderer game.onEntityUpdate = (entity) => { renderer.addEntity(entity); renderer.updateEntityPosition(entity); - // Initial Center on Player Spawn + // Center camera on player spawn if (entity.id === 'p1' && !entity._centered) { cameraManager.centerOn(entity.x, entity.y); entity._centered = true; @@ -79,85 +60,84 @@ game.onEntitySelect = (entityId, isSelected) => { }; renderer.onHeroFinishedMove = (x, y) => { - // x, y are World Coordinates (x, -z grid) - // Actually, renderer returns Mesh Position. - // Mesh X = Grid X. Mesh Z = -Grid Y. - // Camera centerOn takes (Grid X, Grid Y). - // So we need to convert back? - // centerOn implementation: this.target.set(x, 0, -y); - // If onHeroFinishedMove passes (mesh.x, -mesh.z), that is (Grid X, Grid Y). - - // Let's verify what we passed in renderer: - // this.onHeroFinishedMove(mesh.position.x, -mesh.position.z); - // So if mesh is at (5, 1.5, -5), we pass (5, 5). - // centerOn(5, 5) -> target(5, 0, -5). Correct. - cameraManager.centerOn(x, y); }; -game.onPathChange = (path) => { - renderer.highlightCells(path); +// 5. Connect Generator State to UI +generator.onStateChange = (state) => { + console.log(`[Main] State: ${state}`); + + if (state === 'PLACING_TILE') { + ui.showPlacementControls(true); + } else { + ui.showPlacementControls(false); + } }; -// Custom click handler that checks for doors first -const handleCellClick = async (x, y, doorMesh) => { - // If doorMesh is provided, user clicked directly on a door texture +generator.onPlacementUpdate = (preview) => { + if (preview) { + renderer.showPlacementPreview(preview); + ui.updatePlacementStatus(preview.isValid); + } else { + renderer.hidePlacementPreview(); + } +}; + +// 6. Handle Clicks +const handleClick = (x, y, doorMesh) => { + // PRIORITY 1: Tile Placement Mode - ignore all clicks + if (generator.state === 'PLACING_TILE') { + console.log('[Main] Use placement controls to place tile'); + return; + } + + // PRIORITY 2: Door Click (must be adjacent to player) if (doorMesh && doorMesh.userData.isDoor && !doorMesh.userData.isOpen) { - // Get player position - const player = game.player; - if (!player) { - console.log('[Main] Player not found'); - return; - } + const doorExit = doorMesh.userData.cells[0]; - // Check if player is adjacent to the door - if (renderer.isPlayerAdjacentToDoor(player.x, player.y, doorMesh)) { - // Show modal - const confirmed = await doorModal.show('¿Quieres abrir la puerta?'); + if (game.isPlayerAdjacentToDoor(doorExit)) { + console.log('[Main] 🚪 Opening door and drawing tile...'); - if (confirmed) { - // Open the door - renderer.openDoor(doorMesh); + // Open door visually + renderer.openDoor(doorMesh); - // Trigger exploration of the next tile - const exitCell = doorMesh.userData.cells[0]; - console.log('[Main] Opening door at exit:', exitCell); - - // Call game logic to explore through this exit - game.exploreExit(exitCell); + // Get proper exit data with direction + const exitData = doorMesh.userData.exitData; + if (exitData) { + generator.selectDoor(exitData); + } else { + console.error('[Main] Door missing exitData'); } } else { - console.log('[Main] Player is not adjacent to the door. Move closer first.'); + console.log('[Main] ⚠️ Move adjacent to the door first'); } - } else if (x !== null && y !== null) { - // Normal cell click (no door involved) + return; + } + + // PRIORITY 3: Normal cell click (player selection/movement) + if (x !== null && y !== null) { game.onCellClick(x, y); } }; renderer.setupInteraction( () => cameraManager.getCamera(), - handleCellClick, - (x, y) => game.onCellRightClick(x, y) + handleClick, + () => { } // No right-click ); -console.log("--- Starting Game Session ---"); +// 7. Start +console.log("--- Starting Game ---"); game.startMission(mission); -// 7. Render Loop +// 8. Render Loop const animate = (time) => { requestAnimationFrame(animate); - - // Update Game Logic (State Machine, Timers, etc) game.update(time); - - // Update Camera Animations cameraManager.update(time); - - // Update Visual Animations renderer.updateAnimations(time); - - // Render Frame renderer.render(cameraManager.getCamera()); }; animate(0); + +console.log("✅ Ready - Move barbarian next to a door and click it"); diff --git a/src/old/main_20260102.js b/src/old/main_20260102.js new file mode 100644 index 0000000..a9fc59d --- /dev/null +++ b/src/old/main_20260102.js @@ -0,0 +1,172 @@ + +import { GameEngine } from './engine/game/GameEngine.js'; +import { GameRenderer } from './view/GameRenderer.js'; +import { CameraManager } from './view/CameraManager.js'; +import { UIManager } from './view/UIManager.js'; +import { DoorModal } from './view/DoorModal.js'; +import { MissionConfig, MISSION_TYPES } from './engine/dungeon/MissionConfig.js'; + +console.log("Initializing Warhammer Quest Engine... SYSTEM: MANUAL_PLACEMENT_V2"); +window.TEXTURE_DEBUG = true; + +// 1. Setup Mission +const mission = new MissionConfig({ + id: 'mission_1', + name: 'The First Dive', + type: MISSION_TYPES.ESCAPE, + minTiles: 6 +}); + +// 2. Initialize Core Systems +const renderer = new GameRenderer('app'); +const cameraManager = new CameraManager(renderer); +const game = new GameEngine(); + +// 3. Initialize UI +const ui = new UIManager(cameraManager, game); +const doorModal = new DoorModal(); + +// Global Access for Debugging +window.GAME = game; +window.RENDERER = renderer; + +// 4. Bridge Logic & View +const generator = game.dungeon; +const originalPlaceTile = generator.grid.placeTile.bind(generator.grid); + +// Override placeTile to trigger rendering +generator.grid.placeTile = (instance, variant, def) => { + originalPlaceTile(instance, variant); + + const cells = generator.grid.calculateCells(variant, instance.x, instance.y); + renderer.addTile(cells, def.type, def, instance); + + // Update exits visualization + setTimeout(() => { + renderer.renderExits(generator.availableExits); + }, 50); +}; + +// 5. Connect Generator State Changes to UI +generator.onStateChange = (state) => { + console.log(`[Main] Generator state: ${state}`); + + if (state === 'PLACING_TILE') { + ui.showPlacementControls(true); + } else { + ui.showPlacementControls(false); + } + + if (state === 'WAITING_DOOR') { + // Enable door selection mode + renderer.enableDoorSelection(true); + } else { + renderer.enableDoorSelection(false); + } +}; + +// 6. Connect Placement Updates to Renderer +generator.onPlacementUpdate = (preview) => { + if (preview) { + renderer.showPlacementPreview(preview); + ui.updatePlacementStatus(preview.isValid); + } else { + renderer.hidePlacementPreview(); + } +}; + +// 7. Handle Door Selection +renderer.onDoorSelected = (exitPoint) => { + console.log('[Main] Door selected:', exitPoint); + generator.selectDoor(exitPoint); +}; + +// 8. Bridge Game Interactions (Player movement, etc.) +game.onEntityUpdate = (entity) => { + renderer.addEntity(entity); + renderer.updateEntityPosition(entity); + + if (entity.id === 'p1' && !entity._centered) { + cameraManager.centerOn(entity.x, entity.y); + entity._centered = true; + } +}; + +game.onEntityMove = (entity, path) => { + renderer.moveEntityAlongPath(entity, path); +}; + +game.onEntitySelect = (entityId, isSelected) => { + renderer.toggleEntitySelection(entityId, isSelected); +}; + +renderer.onHeroFinishedMove = (x, y) => { + cameraManager.centerOn(x, y); +}; + +game.onPathChange = (path) => { + renderer.highlightCells(path); +}; + +// 9. Custom click handler +const handleCellClick = async (x, y, doorMesh) => { + // PRIORITY 1: Check if we're in door selection mode (dungeon building) + if (generator.state === 'WAITING_DOOR') { + if (doorMesh && doorMesh.userData.isExit) { + // This is an exit door that can be selected for expansion + const exitData = doorMesh.userData.exitData; + if (exitData) { + console.log('[Main] Door selected for expansion:', exitData); + generator.selectDoor(exitData); + } + return; // Don't process any other click logic + } + // If not clicking on a door in WAITING_DOOR mode, ignore the click + console.log('[Main] Click ignored - waiting for door selection'); + return; + } + + // PRIORITY 2: Normal door interaction (during gameplay with player) + if (doorMesh && doorMesh.userData.isDoor && !doorMesh.userData.isOpen) { + const player = game.player; + if (!player) { + console.log('[Main] Player not found'); + return; + } + + if (renderer.isPlayerAdjacentToDoor(player.x, player.y, doorMesh)) { + const confirmed = await doorModal.show('¿Quieres abrir la puerta?'); + + if (confirmed) { + renderer.openDoor(doorMesh); + const exitCell = doorMesh.userData.cells[0]; + console.log('[Main] Opening door at exit:', exitCell); + game.exploreExit(exitCell); + } + } else { + console.log('[Main] Player is not adjacent to the door. Move closer first.'); + } + } else if (x !== null && y !== null) { + game.onCellClick(x, y); + } +}; + +renderer.setupInteraction( + () => cameraManager.getCamera(), + handleCellClick, + (x, y) => game.onCellRightClick(x, y) +); + +console.log("--- Starting Game Session ---"); +game.startMission(mission); + +// 10. Render Loop +const animate = (time) => { + requestAnimationFrame(animate); + + game.update(time); + cameraManager.update(time); + renderer.updateAnimations(time); + renderer.render(cameraManager.getCamera()); +}; +animate(0); diff --git a/src/view/GameRenderer.js b/src/view/GameRenderer.js index c537762..fc4b088 100644 --- a/src/view/GameRenderer.js +++ b/src/view/GameRenderer.js @@ -412,11 +412,18 @@ export class GameRenderer { mesh.rotation.y = angle; // Store door data for interaction (new doors always start closed) + // Convert numeric direction to string for generator compatibility + const dirMap = { 0: 'N', 1: 'E', 2: 'S', 3: 'W' }; mesh.userData = { isDoor: true, isOpen: false, cells: [d1, d2], - direction: dir + direction: dir, + exitData: { + x: d1.x, + y: d1.y, + direction: dirMap[dir] || 'N' + } }; mesh.name = `door_${idx}`; @@ -480,14 +487,38 @@ export class GameRenderer { // Load texture with callback this.getTexture(texturePath, (texture) => { - const w = tileDef.width; - const l = tileDef.length; - // Create Plane - const geometry = new THREE.PlaneGeometry(w, l); + // --- NEW LOGIC: Calculate center based on DIMENSIONS, not CELLS --- + + // 1. Get the specific variant for this rotation to know the VISUAL bounds + // (The shape the grid sees: e.g. 4x2 for East) + const currentVariant = tileDef.variants[tileInstance.rotation]; + + if (!currentVariant) { + console.error(`[GameRenderer] Missing variant for rotation ${tileInstance.rotation}`); + return; + } + + const rotWidth = currentVariant.width; + const rotHeight = currentVariant.height; + + // 2. Calculate the Geometric Center of the tile relative to the anchor + // Formula: anchor + (dimension - 1) / 2 + // (Subtract 1 because width 1 is just offset 0) + const cx = tileInstance.x + (rotWidth - 1) / 2; + const cy = tileInstance.y + (rotHeight - 1) / 2; + + console.log(`[GameRenderer] Dimensions (Rotated): ${rotWidth}x${rotHeight}`); + console.log(`[GameRenderer] Calculated Center: (${cx}, ${cy})`); + + // 3. Use BASE dimensions from NORTH variant for the Plane + // (Since we are rotating the plane itself, we start with the un-rotated image size) + const baseWidth = tileDef.variants.N.width; + const baseHeight = tileDef.variants.N.height; + + // Create Plane with BASE dimensions + const geometry = new THREE.PlaneGeometry(baseWidth, baseHeight); - // SWITCH TO BASIC MATERIAL FOR DEBUGGING TEXTURE VISIBILITY - // Standard material heavily depends on lights. If light is not hitting correctly, it looks black. const material = new THREE.MeshBasicMaterial({ map: texture, transparent: true, @@ -496,42 +527,32 @@ export class GameRenderer { }); const plane = new THREE.Mesh(geometry, material); - - - // Initial Rotation: Plane X-Y to X-Z + // Initial Rotation: Plane X-Y to X-Z (Flat on ground) plane.rotation.x = -Math.PI / 2; - // Handle Rotation safely (Support both 0-3 and N-W) - const rotMap = { 'N': 0, '0': 0, 0: 0, 'E': 1, '1': 1, 1: 1, 'S': 2, '2': 2, 2: 2, 'W': 3, '3': 3, 3: 3 }; + // Handle Rotation + const rotMap = { 'N': 0, 'E': 1, 'S': 2, 'W': 3 }; const r = rotMap[tileInstance.rotation] !== undefined ? rotMap[tileInstance.rotation] : 0; - // Apply Tile Rotation + // Apply Tile Rotation (Z-axis is Up in this local frame before X-rotation? No, after X-rot) + // Actually, standard hierarchy: Rotate Z first? + // ThreeJS rotation order XYZ. + // We want to rotate around the Y axis of the world (which is Z of the plane before x-rotation?) + // Simplest: Rotate Z of the plane, which corresponds to world Y. + // Note: We use negative rotation because ThreeJS is CCW, but our grid might be different, + // but usually -r * PI/2 works for this setup. plane.rotation.z = -r * (Math.PI / 2); - // Calculate Center Offset for Positioning - const midX = (tileDef.width - 1) / 2; - const midY = (tileDef.length - 1) / 2; - - // Rotate the offset vector based on tile rotation - let dx, dy; - - if (r === 0) { dx = midX; dy = midY; } - else if (r === 1) { dx = midY; dy = -midX; } - else if (r === 2) { dx = -midX; dy = -midY; } - else if (r === 3) { dx = -midY; dy = midX; } - - const centerX = tileInstance.x + dx; - const centerY = tileInstance.y + dy; - - // Set at almost 0 height to avoid z-fighting with grid helper, but effectively on floor - plane.position.set(centerX, 0.01, -centerY); + // Position at the calculated center + // Notice: World Z is -Grid Y + plane.position.set(cx, 0.01, -cy); plane.receiveShadow = true; this.scene.add(plane); - console.log(`[GameRenderer] ✓ Tile plane added at (${centerX}, 0.01, ${-centerY}) for ${tileDef.id}`); + console.log(`[GameRenderer] ✓ Tile plane added at (${cx}, 0.01, ${-cy})`); }); } else { - console.warn(`[GameRenderer] details missing for texture render. def: ${!!tileDef}, inst: ${!!tileInstance}, tex: ${tileDef?.textures?.length}`); + console.warn(`[GameRenderer] details missing for texture render. def: ${!!tileDef}, inst: ${!!tileInstance}`); } } @@ -581,4 +602,156 @@ export class GameRenderer { return false; } + // ========== MANUAL PLACEMENT SYSTEM ========== + + enableDoorSelection(enabled) { + this.doorSelectionEnabled = enabled; + + if (enabled) { + // Highlight available exits + this.highlightAvailableExits(); + } else { + // Remove highlights + if (this.exitHighlightGroup) { + this.exitHighlightGroup.clear(); + } + } + } + + highlightAvailableExits() { + if (!this.exitHighlightGroup) { + this.exitHighlightGroup = new THREE.Group(); + this.scene.add(this.exitHighlightGroup); + } + + this.exitHighlightGroup.clear(); + + // Highlight each exit door with a pulsing glow + if (this.exitGroup) { + this.exitGroup.children.forEach(doorMesh => { + if (doorMesh.userData.isDoor && !doorMesh.userData.isOpen) { + // Create highlight ring + const ringGeom = new THREE.RingGeometry(1.2, 1.4, 32); + const ringMat = new THREE.MeshBasicMaterial({ + color: 0x00ff00, + side: THREE.DoubleSide, + transparent: true, + opacity: 0.6 + }); + const ring = new THREE.Mesh(ringGeom, ringMat); + ring.rotation.x = -Math.PI / 2; + ring.position.copy(doorMesh.position); + ring.position.y = 0.05; + + + // Store reference to door for click handling + doorMesh.userData.isExit = true; + // Create proper exit data with all required fields + const firstCell = doorMesh.userData.cells[0]; + // Convert numeric direction (0,1,2,3) to string ('N','E','S','W') + const dirMap = { 0: 'N', 1: 'E', 2: 'S', 3: 'W' }; + doorMesh.userData.exitData = { + x: firstCell.x, + y: firstCell.y, + direction: dirMap[doorMesh.userData.direction] || 'N' + }; + + this.exitHighlightGroup.add(ring); + } + }); + } + } + + showPlacementPreview(preview) { + if (!preview) { + this.hidePlacementPreview(); + return; + } + + // Create preview groups if they don't exist + if (!this.previewGroup) { + this.previewGroup = new THREE.Group(); + this.scene.add(this.previewGroup); + } + + if (!this.projectionGroup) { + this.projectionGroup = new THREE.Group(); + this.scene.add(this.projectionGroup); + } + + // Clear previous preview + this.previewGroup.clear(); + this.projectionGroup.clear(); + + const { card, cells, isValid, x, y, rotation } = preview; + + // Calculate bounds for tile - OLD LOGIC (Removed) + // Note: We ignore 'cells' for positioning the texture, but keep them for the Ground Projection (Green/Red squares) + + // 1. FLOATING TILE (Y = 3) + if (card.textures && card.textures.length > 0) { + this.getTexture(card.textures[0], (texture) => { + + // Get Current Rotation Variant for Dimensions + const currentVariant = card.variants[rotation]; + const rotWidth = currentVariant.width; + const rotHeight = currentVariant.height; + + // Calculate Center based on Anchor (x, y) and Dimensions + const cx = x + (rotWidth - 1) / 2; + const cy = y + (rotHeight - 1) / 2; + + // Use BASE dimensions from NORTH variant + const baseWidth = card.variants.N.width; + const baseHeight = card.variants.N.height; + + const geometry = new THREE.PlaneGeometry(baseWidth, baseHeight); + const material = new THREE.MeshBasicMaterial({ + map: texture, + transparent: true, + opacity: 0.8, + side: THREE.DoubleSide + }); + const floatingTile = new THREE.Mesh(geometry, material); + + floatingTile.rotation.x = -Math.PI / 2; + + // Apply Z rotation + const rotMap = { 'N': 0, 'E': 1, 'S': 2, 'W': 3 }; + const r = rotMap[rotation] !== undefined ? rotMap[rotation] : 0; + floatingTile.rotation.z = -r * (Math.PI / 2); + + console.log(`[Preview] Rotation: ${rotation}, Center: (${cx}, ${cy})`); + + floatingTile.position.set(cx, 3, -cy); + this.previewGroup.add(floatingTile); + }); + } + + // 2. GROUND PROJECTION (Green/Red) + const projectionColor = isValid ? 0x00ff00 : 0xff0000; + cells.forEach(cell => { + const geometry = new THREE.PlaneGeometry(0.95, 0.95); + const material = new THREE.MeshBasicMaterial({ + color: projectionColor, + transparent: true, + opacity: 0.5, + side: THREE.DoubleSide + }); + const projection = new THREE.Mesh(geometry, material); + projection.rotation.x = -Math.PI / 2; + projection.position.set(cell.x, 0.02, -cell.y); + this.projectionGroup.add(projection); + }); + } + + hidePlacementPreview() { + if (this.previewGroup) { + this.previewGroup.clear(); + } + if (this.projectionGroup) { + this.projectionGroup.clear(); + } + } + } diff --git a/src/view/UIManager.js b/src/view/UIManager.js index bfa55c4..427b194 100644 --- a/src/view/UIManager.js +++ b/src/view/UIManager.js @@ -134,6 +134,137 @@ export class UIManager { // Set initial active button (North) this.updateActiveViewButton(DIRECTIONS.NORTH); + + // --- Tile Placement Controls (Bottom Center) --- + this.placementPanel = document.createElement('div'); + this.placementPanel.style.position = 'absolute'; + this.placementPanel.style.bottom = '20px'; + this.placementPanel.style.left = '50%'; + this.placementPanel.style.transform = 'translateX(-50%)'; + this.placementPanel.style.display = 'none'; // Hidden by default + this.placementPanel.style.pointerEvents = 'auto'; + this.placementPanel.style.backgroundColor = 'rgba(0, 0, 0, 0.85)'; + this.placementPanel.style.padding = '15px'; + this.placementPanel.style.borderRadius = '8px'; + this.placementPanel.style.border = '2px solid #666'; + this.container.appendChild(this.placementPanel); + + // Status text + this.placementStatus = document.createElement('div'); + this.placementStatus.style.color = '#fff'; + this.placementStatus.style.fontSize = '16px'; + this.placementStatus.style.fontFamily = 'sans-serif'; + this.placementStatus.style.marginBottom = '10px'; + this.placementStatus.style.textAlign = 'center'; + this.placementStatus.textContent = 'Coloca la loseta'; + this.placementPanel.appendChild(this.placementStatus); + + // Controls container + const placementControls = document.createElement('div'); + placementControls.style.display = 'flex'; + placementControls.style.gap = '15px'; + placementControls.style.alignItems = 'center'; + this.placementPanel.appendChild(placementControls); + + // Movement arrows (4-way grid) + const arrowGrid = document.createElement('div'); + arrowGrid.style.display = 'grid'; + arrowGrid.style.gridTemplateColumns = '40px 40px 40px'; + arrowGrid.style.gap = '3px'; + + const createArrow = (label, dx, dy) => { + const btn = document.createElement('button'); + btn.textContent = label; + btn.style.width = '40px'; + btn.style.height = '40px'; + btn.style.backgroundColor = '#444'; + btn.style.color = '#fff'; + btn.style.border = '1px solid #888'; + btn.style.cursor = 'pointer'; + btn.style.fontSize = '18px'; + btn.onclick = () => { + if (this.dungeon) { + this.dungeon.movePlacement(dx, dy); + } + }; + return btn; + }; + + const arrowUp = createArrow('↑', 0, 1); + const arrowLeft = createArrow('←', -1, 0); + const arrowRight = createArrow('→', 1, 0); + const arrowDown = createArrow('↓', 0, -1); + + arrowUp.style.gridColumn = '2'; + arrowLeft.style.gridColumn = '1'; + arrowRight.style.gridColumn = '3'; + arrowDown.style.gridColumn = '2'; + + arrowGrid.appendChild(arrowUp); + arrowGrid.appendChild(arrowLeft); + arrowGrid.appendChild(arrowRight); + arrowGrid.appendChild(arrowDown); + + placementControls.appendChild(arrowGrid); + + // Rotate button + this.rotateBtn = document.createElement('button'); + this.rotateBtn.textContent = '🔄 Rotar'; + this.rotateBtn.style.padding = '10px 20px'; + this.rotateBtn.style.backgroundColor = '#555'; + this.rotateBtn.style.color = '#fff'; + this.rotateBtn.style.border = '1px solid #888'; + this.rotateBtn.style.cursor = 'pointer'; + this.rotateBtn.style.fontSize = '16px'; + this.rotateBtn.style.borderRadius = '4px'; + this.rotateBtn.onclick = () => { + if (this.dungeon) { + this.dungeon.rotatePlacement(); + } + }; + placementControls.appendChild(this.rotateBtn); + + // Place button + this.placeBtn = document.createElement('button'); + this.placeBtn.textContent = '⬇ Bajar'; + this.placeBtn.style.padding = '10px 20px'; + this.placeBtn.style.backgroundColor = '#2a5'; + this.placeBtn.style.color = '#fff'; + this.placeBtn.style.border = '1px solid #888'; + this.placeBtn.style.cursor = 'pointer'; + this.placeBtn.style.fontSize = '16px'; + this.placeBtn.style.borderRadius = '4px'; + this.placeBtn.onclick = () => { + if (this.dungeon) { + const success = this.dungeon.confirmPlacement(); + if (!success) { + alert('❌ No se puede colocar la loseta en esta posición'); + } + } + }; + placementControls.appendChild(this.placeBtn); + } + + showPlacementControls(show) { + if (this.placementPanel) { + this.placementPanel.style.display = show ? 'block' : 'none'; + } + } + + updatePlacementStatus(isValid) { + if (this.placementStatus) { + if (isValid) { + this.placementStatus.textContent = '✅ Posición válida'; + this.placementStatus.style.color = '#0f0'; + this.placeBtn.style.backgroundColor = '#2a5'; + this.placeBtn.style.cursor = 'pointer'; + } else { + this.placementStatus.textContent = '❌ Posición inválida'; + this.placementStatus.style.color = '#f44'; + this.placeBtn.style.backgroundColor = '#555'; + this.placeBtn.style.cursor = 'not-allowed'; + } + } } updateActiveViewButton(activeDirection) { @@ -201,13 +332,15 @@ export class UIManager { ctx.fillRect(cx, cy, cellSize, cellSize); } - // Draw Exits (Pending) + // Draw Exits (Available) ctx.fillStyle = '#0f0'; // Green dots for open exits - this.dungeon.pendingExits.forEach(exit => { - const ex = centerX + (exit.x * cellSize); - const ey = centerY - (exit.y * cellSize); - ctx.fillRect(ex, ey, cellSize, cellSize); - }); + if (this.dungeon.availableExits) { + this.dungeon.availableExits.forEach(exit => { + const ex = centerX + (exit.x * cellSize); + const ey = centerY - (exit.y * cellSize); + ctx.fillRect(ex, ey, cellSize, cellSize); + }); + } // Draw Entry (0,0) cross ctx.strokeStyle = '#f00';