🚪 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
|
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);
|
setSocket(socketInstance);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
|||||||
@@ -287,15 +287,17 @@ io.on('connection', (socket) => {
|
|||||||
socket.on('finalize_game', ({ roomId }) => {
|
socket.on('finalize_game', ({ roomId }) => {
|
||||||
const game = games[roomId];
|
const game = games[roomId];
|
||||||
if (game && game.hostId === socket.id) {
|
if (game && game.hostId === socket.id) {
|
||||||
game.finalizeGame();
|
// Notificar a todos los jugadores que la partida ha sido finalizada
|
||||||
io.to(roomId).emit('game_state', game.state);
|
io.to(roomId).emit('game_finalized');
|
||||||
|
|
||||||
// Esperar 5 segundos y luego eliminar la partida
|
// Eliminar la partida inmediatamente del registro
|
||||||
setTimeout(() => {
|
delete games[roomId];
|
||||||
delete games[roomId];
|
|
||||||
// Desconectar a todos los jugadores de la sala
|
// Actualizar lista de salas para todos los clientes
|
||||||
io.in(roomId).socketsLeave(roomId);
|
io.emit('rooms_list', getRoomsList());
|
||||||
}, 5000);
|
|
||||||
|
// Desconectar a todos los jugadores de la sala
|
||||||
|
io.in(roomId).socketsLeave(roomId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user