/* doorLogic.js Sert a regrouper toute la logique autour des portes */ /* c'est ici uniquement que la logique de victoire ou defaite est faite */ const { correctDoor, startPosition } = require("./maze"); const { DOORS_TO_WIN } = require("./config"); function handleDoorReached(wSS, socket, position) { const pairState = socket.data.pairState; if(!pairState || pairState.gameOver) return; // partie deja terminee const partnerId = socket.data.partnerId; const partnerSocket = wSS.sockets.sockets.get(partnerId); const isCorrect = position.x === correctDoor.x && position.y === correctDoor.y; if (!isCorrect){ pairState.gameOver = true; const result = { correct: false }; socket.emit("door_result", result); if (partnerSocket) partnerSocket.emit("door_result", result); result; } pairState.doorsPassed++; if (pairState.doorPassed >= DOORS_TO_WIN) { pairState.gameOver = true; socket.emit("victory"); if (partnerSocket) partnerSocket.emit("victory"); return; } const temp = socket.data.role; socket.data.role = partnerSocket.data.role; partnerSocket.data.role = temp; socket.emit("door_result", { correct: true}); socket.emit("new_round", startPosition); socket.emit("role", socket.data.role); if (partnerSocket) { partnerSocket.emit("door_result", { correct: true }); partnerSocket.emit("new_round", startPosition); partnerSocket.emit("role", partnerSocket.data.role); } } module.exports = { handleDoorReached };