64 lines
1.9 KiB
JavaScript
64 lines
1.9 KiB
JavaScript
/*
|
|
socketHandlers.js
|
|
|
|
Sert a regrouper tous ce qui passe dans une seule connexion
|
|
*/
|
|
|
|
const gameState = require("./gameState");
|
|
const { GAME_DURATION } = require("./config");
|
|
const { handleDoorReached } = require("./doorLogic");
|
|
const { startTimer } = require("./timer");
|
|
|
|
function registerSocketHandlers(io, socket) {
|
|
console.log(`Un client s'est connecté : ${socket.id}`);
|
|
|
|
if (gameState.waitingPlayer === null) {
|
|
gameState.waitingPlayer = socket;
|
|
socket.emit("status", "En attente d'un second joueur...");
|
|
} else {
|
|
const partner = gameState.waitingPlayer;
|
|
gameState.waitingPlayer = null;
|
|
|
|
const socketIsGuide = Math.random() < 0.5;
|
|
const socketRole = socketIsGuide ? "guide" : "explorateur";
|
|
const partnerRole = socketIsGuide ? "explorateur" : "guide";
|
|
|
|
socket.data.role = socketRole;
|
|
partner.data.role = partnerRole;
|
|
socket.data.partnerId = partner.id;
|
|
partner.data.partnerId = socket.id;
|
|
|
|
// État partagé par référence entre les deux sockets de la paire
|
|
const pairState = { gameOver: false, doorsPassed: 0, timeLeft: GAME_DURATION };
|
|
socket.data.pairState = pairState;
|
|
partner.data.pairState = pairState;
|
|
|
|
socket.emit("role", socketRole);
|
|
partner.emit("role", partnerRole);
|
|
socket.emit("status", "Partie prête !");
|
|
partner.emit("status", "Partie prête !");
|
|
|
|
startTimer(socket, partner, pairState);
|
|
}
|
|
|
|
socket.on("door_reached", (position) => handleDoorReached(io, socket, position));
|
|
|
|
socket.on("disconnect", () => {
|
|
console.log(`Client déconnecté : ${socket.id}`);
|
|
|
|
if (gameState.waitingPlayer === socket) {
|
|
gameState.waitingPlayer = null;
|
|
}
|
|
|
|
const partnerId = socket.data.partnerId;
|
|
if (partnerId) {
|
|
const partnerSocket = wSS.sockets.sockets.get(partnerId);
|
|
if (partnerSocket){
|
|
partnerSocket.emit("status", "Ton partenaire s'est deconnecte");
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
module.exports = { registerSocketHandlers };
|