Skip to content

Commit

Permalink
update socket/src/main.js
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastianjnuwu committed Jan 8, 2025
1 parent cafb98e commit 9038b56
Showing 1 changed file with 54 additions and 51 deletions.
105 changes: 54 additions & 51 deletions socket/src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -131,72 +131,75 @@ io.on("connection", (socket) => {
});

socket.on("start_game", ({ room_code }) => {
const room = ROOMS[room_code];
const room = ROOMS[room_code];

// Verifica se a sala existe
if (!room) {
socket.emit("err_socket", {
message: `Sala ${room_code} não encontrada.`,
});
return;
}
// Verifica se a sala existe
if (!room) {
socket.emit("err_socket", {
message: `Sala ${room_code} não encontrada.`,
});
return;
}

// Altera o estado da sala para "in_game"
room.state = "in_game";
// Altera o estado da sala para "in_game"
room.state = "in_game";

let countdown = 3; // Contagem regressiva de 10 segundos
const countdownInterval = setInterval(() => {
io.to(room_code).emit("count_down", { countdown });
let countdown = 3; // Contagem regressiva de 3 segundos
const countdownInterval = setInterval(() => {
// Envia o valor atual do countdown para a sala
io.to(room_code).emit("count_down", { countdown });

if (countdown === 0) {
clearInterval(countdownInterval);
if (countdown <= 0) {
clearInterval(countdownInterval);

// Envia o evento de início do jogo
io.to(room_code).emit("game_start");
// Envia o evento de início do jogo
io.to(room_code).emit("game_start");

// Define o tempo de jogo em segundos
let time_game = room.time * 1; // Multiplica os minutos por 60 para converter para segundos
// Define o tempo de jogo em segundos
let time_game = room.time * 60; // Multiplica os minutos por 60 para converter para segundos

const gameInterval = setInterval(() => {
time_game--;
const gameInterval = setInterval(() => {
// Envia o tempo restante para a sala
io.to(room_code).emit("timer", { time_game });

// Envia o tempo restante para a sala
io.to(room_code).emit("timer", { time_game });
if (time_game <= 0) {
clearInterval(gameInterval);

if (time_game === 0) {
clearInterval(gameInterval);
// Finaliza o jogo e gera o ranking
const ranking = room.players
.sort((a, b) => b.player_date.cookies - a.player_date.cookies) // Ordena por cookies
.map((player, index) => ({
rank: index + 1,
room_player: player.room_player,
cookies: player.player_date.cookies,
}));

// Finaliza o jogo e gera o ranking
const ranking = room.players
.sort((a, b) => b.player_date.cookies - a.player_date.cookies) // Ordena por cookies
.map((player, index) => ({
rank: index + 1,
room_player: player.room_player,
cookies: player.player_date.cookies,
}));
// Atualiza o estado da sala
room.state = "finished";

// Atualiza o estado da sala
room.state = "finished";
// Envia o evento de fim do jogo com o ranking
io.to(room_code).emit("game_end", { ranking });

// Envia o evento de fim do jogo com o ranking
io.to(room_code).emit("game_end", { ranking });
if (room.state === "finished") {
delete ROOMS[room_code];
console.log(`Sala ${room_code} foi deletada.`);
}

if (room.state === "finished") {
delete ROOMS[room_code];
console.log(`Sala ${room_code} foi deletada.`);
}
console.log(
`Jogo na sala ${room_code} finalizado! Ranking:`,
ranking
);

console.log(
`Jogo na sala ${room_code} finalizado! Ranking:`,
ranking,
);
}
}, 1000); // Atualiza a cada segundo
}
return; // Evita que qualquer execução adicional ocorra
}

countdown--;
}, 1000); // Atualiza a cada segundo
});
time_game--; // Decrementa o tempo após enviar o valor atual
}, 1000); // Atualiza a cada segundo
}

countdown--; // Decrementa o countdown após enviar o valor atual
}, 1000); // Atualiza a cada segundo
});

socket.on("update_cookies", ({ room_player, room_code, cookies }) => {
// Valida se o número de cookies recebido é válido
Expand Down

0 comments on commit 9038b56

Please sign in to comment.