Files
FranciaOcupada/CAMBIOS_SESION_2025-12-08.md
Resistencia Dev c67f97845a feat(ui): Enhance responsive design and game flow
- 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)
2025-12-12 19:14:14 +01:00

172 lines
5.6 KiB
Markdown

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<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):
```tsx
{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
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