Files
echoes/server/doorLogic.js

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");
fonction 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 };