- Intro: Change title to 'Sombras en París' - Roll Call: Make screen fully responsive with fixed header - Team Building: Clean up leader UI and make player tokens responsive - Mission History: Fix expand/collapse interaction (z-index issue)
5.6 KiB
5.6 KiB
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
- ALLIED_WIN → muestra
-
Á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.jpgymission_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:
// 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:
const [expandedMission, setExpandedMission] = useState<number | null>(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):
{gameState.missionHistory.map((mission, idx) => {
const isExpanded = expandedMission === idx;
return (
<div key={idx} className="relative">
<div
className={`... ${isExpanded ? 'ring-2 ring-yellow-400' : ''}`}
onClick={(e) => {
e.stopPropagation();
console.log('Click en misión', idx, 'Estado actual:', expandedMission);
setExpandedMission(isExpanded ? null : idx);
}}
>
{mission.round}
</div>
{isExpanded && (
<div className="absolute top-10 right-0 bg-black/95 p-2 rounded border border-white/30 min-w-max z-[100]">
{mission.team.map((playerId) => {
const player = gameState.players.find(p => p.id === playerId);
return (
<div key={playerId} className="text-xs text-white whitespace-nowrap">
{player?.name || playerId}
</div>
);
})}
</div>
)}
</div>
);
})}
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
6e65152- "feat: Fix victory screens background images"- Corregidas pantallas de victoria
- Eliminadas imágenes redundantes
- Fondo dinámico según fase
ARCHIVOS PRINCIPALES MODIFICADOS
-
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)
-
client/src/components/VictoryScreen.tsx- Eliminada imagen de fondo redundante
PENDIENTES / PROBLEMAS CONOCIDOS
-
❌ Historial de misiones expandible no funciona
- El código está implementado pero el click no dispara la acción
- Requiere investigación adicional
-
⚠️ 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