- {showBoard ? (
- <>
- {/* TABLERO CON TOKENS */}
-
+ {/* --- MAPA TÁCTICO (TABLERO) O CARTA DE MISIÓN O ASSASSIN_PHASE --- */}
+ {/* No mostrar el tablero en fases de victoria */}
+ {gameState.phase !== GamePhase.ALLIED_WIN && gameState.phase !== GamePhase.NAZIS_WIN && (
+
+ {gameState.phase === GamePhase.ASSASSIN_PHASE ? (
+ /* IMAGEN LASTSHOT PARA ASSASSIN_PHASE */
+ <>
+
+ {/* Overlay oscuro para mejorar legibilidad */}
+
- {/* TOKENS SOBRE EL MAPA */}
- {missionCoords.map((coord, idx) => {
- const result = gameState.questResults[idx];
- const isCurrent = gameState.currentRound === idx + 1;
-
- return (
-
- {/* Marcador de Ronda Actual */}
- {isCurrent && (
-
-
-
- )}
-
- {/* Resultado de Misión (Éxito/Fracaso) */}
- {result === true && (
-
-
-
-
-
- )}
- {result === false && (
-
-
-
-
-
- )}
-
- );
- })}
-
- {/* TRACK DE VOTOS FALLIDOS */}
-
-
Votos Rechazados
-
- {[...Array(5)].map((_, i) => (
-
- ))}
+ {/* Título sobre la imagen */}
+
+
+ ¡ÚLTIMA OPORTUNIDAD!
+
+ {currentPlayer?.role === 'francotirador' ? (
+
+ Francotirador, elige a quién crees que es MARLENE
+
+ ) : (
+
+ El Francotirador está decidiendo...
+
+ )}
-
- >
- ) : (
- /* CARTA DE MISIÓN CON TÍTULO */
- <>
-
- {/* Título y subtítulo sobre la carta */}
-
-
- Misión {gameState.currentRound}
-
-
- {missionNames[gameState.currentRound - 1]}
-
-
- >
- )}
-
+ >
+ ) : showBoard ? (
+ <>
+ {/* TABLERO CON TOKENS */}
+
+
+ {/* TOKENS SOBRE EL MAPA */}
+ {missionCoords.map((coord, idx) => {
+ const result = gameState.questResults[idx];
+ const isCurrent = gameState.currentRound === idx + 1;
+
+ return (
+
+ {/* Marcador de Ronda Actual */}
+ {isCurrent && (
+
+
+
+ )}
+
+ {/* Resultado de Misión (Éxito/Fracaso) */}
+ {result === true && (
+
+
+
+
+
+ )}
+ {result === false && (
+
+
+
+
+
+ )}
+
+ );
+ })}
+
+ {/* TRACK DE VOTOS FALLIDOS */}
+
+
Votos Rechazados
+
+ {[...Array(5)].map((_, i) => (
+
+ ))}
+
+
+ >
+ ) : (
+ /* CARTA DE MISIÓN CON TÍTULO */
+ <>
+
+ {/* Título y subtítulo sobre la carta */}
+
+
+ Misión {gameState.currentRound}
+
+
+ {missionNames[gameState.currentRound - 1]}
+
+
+ >
+ )}
+
+ )}
{/* --- ÁREA DE JUEGO (CARTAS Y ACCIONES) --- */}
@@ -677,68 +720,23 @@ export default function GameBoard({ gameState, currentPlayerId, actions }: GameB
{/* FASE: ASESINO (FRANCOTIRADOR) */}
{gameState.phase === GamePhase.ASSASSIN_PHASE && (
- {/* Imagen de fondo solo para el Francotirador */}
{currentPlayer?.role === 'francotirador' && (
-
-
- {/* Overlay oscuro para mejorar legibilidad */}
-
-
- )}
-
- {/* Fondo oscuro para los demás jugadores */}
- {currentPlayer?.role !== 'francotirador' && (
-
- )}
-
-
-
- ¡ÚLTIMA OPORTUNIDAD!
-
- {currentPlayer?.role === 'francotirador' ? (
-
- Francotirador, elige a quién crees que es MARLENE
-
- ) : (
-
- El Francotirador está decidiendo...
-
- )}
-
-
- {currentPlayer?.role === 'francotirador' && (
-
+
{gameState.players
.filter(p => p.faction === Faction.ALIADOS) // Solo jugadores Aliados
.map(player => (
actions.assassinKill(player.id)}
- className="bg-black/60 hover:bg-red-600/70 border-4 border-white/30 hover:border-red-500 p-6 rounded-xl transition-all backdrop-blur-sm"
- whileHover={{ scale: 1.1 }}
+ className="bg-black/60 hover:bg-red-600/70 border-2 border-white/30 hover:border-red-500 p-3 rounded-lg transition-all backdrop-blur-sm flex flex-col items-center gap-2"
+ whileHover={{ scale: 1.05 }}
whileTap={{ scale: 0.95 }}
>
-
+
-
{player.name}
+
{player.name}
))}
-
+
+ )}
+
+ {currentPlayer?.role !== 'francotirador' && (
+
+ El Francotirador está decidiendo...
+
)}
)}
diff --git a/client/src/components/VictoryScreen.tsx b/client/src/components/VictoryScreen.tsx
index ed72d6f..f575ffc 100644
--- a/client/src/components/VictoryScreen.tsx
+++ b/client/src/components/VictoryScreen.tsx
@@ -36,18 +36,6 @@ export default function VictoryScreen({ gameState, isHost, onRestart, onFinalize
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
>
- {/* Imagen de fondo a pantalla completa */}
-
-
- {/* Overlay oscuro para mejorar legibilidad */}
-
-
{/* Título de victoria */}