refactor: debut de la refactorisation du projet
This commit is contained in:
63
server/socketHandler.js
Normal file
63
server/socketHandler.js
Normal file
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
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 };
|
||||
Reference in New Issue
Block a user