diff --git a/CAMBIOS_SESION_2025-12-08.txt b/CAMBIOS_SESION_2025-12-08.txt new file mode 100644 index 0000000..38e4bf5 --- /dev/null +++ b/CAMBIOS_SESION_2025-12-08.txt @@ -0,0 +1,171 @@ +RESUMEN DE CAMBIOS - SESIÓN 2025-12-08 +======================================== + +## 1. CORRECCIÓN DE PANTALLAS DE VICTORIA (ALLIED_WIN y NAZIS_WIN) + +### Problema inicial: +- Las pantallas de victoria mostraban el tablero de juego encima de la imagen de fondo +- Había imágenes duplicadas y rutas incorrectas (.jpg vs .png) + +### Solución implementada: + +#### GameBoard.tsx: +- **Fondo dinámico según fase**: El fondo del componente GameBoard ahora cambia según la fase: + * ALLIED_WIN → muestra `/assets/images/tokens/mission_success.png` + * NAZIS_WIN → muestra `/assets/images/tokens/mission_fail.png` + * Otras fases → muestra `/assets/images/ui/bg_game.png` + +- **Área del tablero oculta en victorias**: El div del tablero (con las cartas de misión, tablero táctico, etc.) + se oculta completamente cuando `gameState.phase === ALLIED_WIN || gameState.phase === NAZIS_WIN` + +#### VictoryScreen.tsx: +- **Eliminada imagen de fondo redundante**: Se eliminó el div con la imagen de fondo que intentaba cargar + `mission_fail.jpg` y `mission_success.jpg`, ya que el GameBoard ahora maneja estos fondos. + +### Archivos modificados: +- `client/src/components/GameBoard.tsx` (líneas 293-307, 309-442) +- `client/src/components/VictoryScreen.tsx` (líneas 39-50 eliminadas) + +### Commit: +- Hash: 6e65152 +- Mensaje: "feat: Fix victory screens background images" + +--- + +## 2. MEJORA DE CARTAS DE MISIÓN (Fase MISSION) + +### Problema inicial: +- Las cartas solo se opacaban cuando se seleccionaba la otra +- Si solo había una carta (jugadores aliados), no había feedback visual de que se había seleccionado + +### Solución implementada: + +#### Cambio de lógica de opacidad: +**ANTES:** +- Sin voto: todas las cartas al 100% de opacidad +- Con voto: la carta NO seleccionada se opaca al 50% + +**DESPUÉS:** +- Sin voto: todas las cartas al 50% de opacidad (opacadas por defecto) +- Con voto: solo la carta seleccionada se pone al 100%, las demás permanecen al 50% + +#### Implementación: +```tsx +// Carta de Éxito +className={`group transition-opacity ${missionVote === true ? 'opacity-100' : 'opacity-50'}`} + +// Carta de Sabotaje (solo alemanes) +className={`group transition-opacity ${missionVote === false ? 'opacity-100' : 'opacity-50'}`} +``` + +### Archivos modificados: +- `client/src/components/GameBoard.tsx` (líneas 628-678) + +### Beneficio: +- Ahora es fácil ver qué carta has seleccionado, incluso cuando solo tienes una opción disponible + +--- + +## 3. INTENTO DE MEJORA DEL HISTORIAL DE MISIONES (NO FUNCIONAL) + +### Objetivo: +- Mostrar los participantes de cada misión al hacer clic en el número del historial + +### Implementación intentada: + +#### Estado añadido: +```tsx +const [expandedMission, setExpandedMission] = useState(null); +``` + +#### Lógica implementada: +- Click en número de misión → expande mostrando nombres de participantes +- Click de nuevo → colapsa la lista +- Solo una misión puede estar expandida a la vez +- Indicador visual: anillo amarillo alrededor del número cuando está expandido + +#### Código añadido en GameBoard.tsx (líneas 856-899): +```tsx +{gameState.missionHistory.map((mission, idx) => { + const isExpanded = expandedMission === idx; + + return ( +
+
{ + e.stopPropagation(); + console.log('Click en misión', idx, 'Estado actual:', expandedMission); + setExpandedMission(isExpanded ? null : idx); + }} + > + {mission.round} +
+ + {isExpanded && ( +
+ {mission.team.map((playerId) => { + const player = gameState.players.find(p => p.id === playerId); + return ( +
+ {player?.name || playerId} +
+ ); + })} +
+ )} +
+ ); +})} +``` + +### Archivos modificados: +- `client/src/components/GameBoard.tsx` (líneas 26, 856-899) + +### Estado: +⚠️ **NO FUNCIONAL** - El click no dispara la expansión de la lista de participantes. +Posibles causas a investigar: +- Conflicto con otros event handlers +- Problema con el z-index o posicionamiento +- Estado no actualizándose correctamente +- Necesidad de reiniciar servicios Docker + +--- + +## RESUMEN DE COMMITS + +1. **6e65152** - "feat: Fix victory screens background images" + - Corregidas pantallas de victoria + - Eliminadas imágenes redundantes + - Fondo dinámico según fase + +--- + +## ARCHIVOS PRINCIPALES MODIFICADOS + +1. `client/src/components/GameBoard.tsx` + - Fondo dinámico para fases de victoria + - Área del tablero oculta en victorias + - Opacidad de cartas de misión mejorada + - Intento de historial expandible (no funcional) + +2. `client/src/components/VictoryScreen.tsx` + - Eliminada imagen de fondo redundante + +--- + +## PENDIENTES / PROBLEMAS CONOCIDOS + +1. ❌ **Historial de misiones expandible no funciona** + - El código está implementado pero el click no dispara la acción + - Requiere investigación adicional + +2. ⚠️ **Errores de lint** + - Múltiples errores de tipo "JSX element implicitly has type 'any'" + - Son falsos positivos del IDE en entorno Dockerizado + - No afectan la funcionalidad de la aplicación + +--- + +Fecha: 2025-12-08 +Hora: 22:59 diff --git a/client/src/components/GameBoard.tsx b/client/src/components/GameBoard.tsx index 81acb99..517cf96 100644 --- a/client/src/components/GameBoard.tsx +++ b/client/src/components/GameBoard.tsx @@ -23,6 +23,7 @@ export default function GameBoard({ gameState, currentPlayerId, actions }: GameB // Track del voto de misión del jugador const [missionVote, setMissionVote] = useState(null); + const [expandedMission, setExpandedMission] = useState(null); // Timer para avanzar automáticamente en REVEAL_ROLE @@ -628,7 +629,7 @@ export default function GameBoard({ gameState, currentPlayerId, actions }: GameB {/* Carta de Éxito primero */}