🚪 Finalizar partida expulsa a todos al lobby - El host puede terminar la partida, eliminándola del listado y enviando a todos los jugadores al lobby
This commit is contained in:
@@ -44,6 +44,12 @@ export const useSocket = () => {
|
||||
alert(msg); // Simple error handling for now
|
||||
});
|
||||
|
||||
// Manejar finalización de partida por el host
|
||||
socketInstance.on('game_finalized', () => {
|
||||
console.log('La partida ha sido finalizada por el host');
|
||||
setGameState(null); // Resetear estado para volver al lobby
|
||||
});
|
||||
|
||||
setSocket(socketInstance);
|
||||
|
||||
return () => {
|
||||
|
||||
@@ -287,15 +287,17 @@ io.on('connection', (socket) => {
|
||||
socket.on('finalize_game', ({ roomId }) => {
|
||||
const game = games[roomId];
|
||||
if (game && game.hostId === socket.id) {
|
||||
game.finalizeGame();
|
||||
io.to(roomId).emit('game_state', game.state);
|
||||
// Notificar a todos los jugadores que la partida ha sido finalizada
|
||||
io.to(roomId).emit('game_finalized');
|
||||
|
||||
// Esperar 5 segundos y luego eliminar la partida
|
||||
setTimeout(() => {
|
||||
delete games[roomId];
|
||||
// Desconectar a todos los jugadores de la sala
|
||||
io.in(roomId).socketsLeave(roomId);
|
||||
}, 5000);
|
||||
// Eliminar la partida inmediatamente del registro
|
||||
delete games[roomId];
|
||||
|
||||
// Actualizar lista de salas para todos los clientes
|
||||
io.emit('rooms_list', getRoomsList());
|
||||
|
||||
// Desconectar a todos los jugadores de la sala
|
||||
io.in(roomId).socketsLeave(roomId);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user