55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
/*
|
|
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);
|
|
return;
|
|
}
|
|
|
|
pairState.doorsPassed++;
|
|
|
|
if (pairState.doorsPassed >= 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 };
|