fix: Sistema de votación de líder completamente refactorizado
- Timer de 10 segundos que se reinicia correctamente al cambiar de líder - Votación por mayoría calculada sobre votos emitidos, no total de jugadores - Si nadie vota, líder rechazado automáticamente - Alemanes pueden ver carta de sabotaje en misiones - Reset correcto de selectedTeam al cambiar de fase - Contador de votos fallidos incrementa correctamente - Logs mejorados para debugging Fixes: - Timer visual se reinicia con key basada en currentLeaderId - Facción verificada correctamente (Faction.ALEMANES vs 'spies') - forceResolveLeaderVote llama a resolución con votos actuales - selectedTeam se limpia al salir de TEAM_BUILDING
This commit is contained in:
@@ -41,22 +41,22 @@ const MISSION_NAMES = [
|
||||
"Operación Eiche", "Operación León Marino", "Operación Urano"
|
||||
];
|
||||
|
||||
// Helper para iniciar timer de votación de líder
|
||||
// Helper para iniciar timer de votación de líder (10 segundos)
|
||||
function startLeaderVoteTimer(roomId: string) {
|
||||
if (voteTimers[roomId]) clearTimeout(voteTimers[roomId]);
|
||||
voteTimers[roomId] = setTimeout(() => {
|
||||
const g = games[roomId];
|
||||
if (g && g.state.phase === 'vote_leader') {
|
||||
// Pasar al siguiente líder sin resolver (rechazar implícitamente)
|
||||
g.nextLeader();
|
||||
// Forzar resolución de votos cuando se acaba el tiempo
|
||||
g.forceResolveLeaderVote();
|
||||
io.to(roomId).emit('game_state', g.state);
|
||||
|
||||
// Si sigue en vote_leader (nuevo líder), reiniciar timer
|
||||
// Si sigue en vote_leader (líder rechazado, nuevo líder), reiniciar timer
|
||||
if (g.state.phase === 'vote_leader') {
|
||||
startLeaderVoteTimer(roomId);
|
||||
}
|
||||
}
|
||||
}, 11000); // 11 segundos
|
||||
}, 10000); // 10 segundos
|
||||
}
|
||||
|
||||
const generateRoomName = () => {
|
||||
|
||||
Reference in New Issue
Block a user