refactor: fin de la premiere refactorisation du projet
This commit is contained in:
@@ -1 +1,11 @@
|
||||
/*
|
||||
config.js
|
||||
|
||||
centralise les constante de reglage du jeu
|
||||
*/
|
||||
|
||||
module.export = {
|
||||
PORT: process.env.PORT || 3000,
|
||||
GAME_DURATION: 60,
|
||||
DOORS_TO_WIN: 3,
|
||||
};
|
||||
|
||||
@@ -4,3 +4,51 @@
|
||||
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 };
|
||||
|
||||
@@ -1 +1,12 @@
|
||||
/*
|
||||
gameState.js
|
||||
|
||||
Etat global du serveur (pas juste la partie entre deux joueurs)
|
||||
On exporte l'objet plutot que la variable
|
||||
*/
|
||||
|
||||
const gameState = {
|
||||
waitingPlayer: null,
|
||||
};
|
||||
|
||||
module.exports = gameState;
|
||||
|
||||
@@ -1 +1,12 @@
|
||||
/*
|
||||
maze.js
|
||||
le serveur sais ou sont les bonnes et mauvaises porte et compare la position envoyee par le joueur et la solution
|
||||
possede aussi l'information du point de depart
|
||||
*/
|
||||
|
||||
const correctDoor = { x: 3, y: 6};
|
||||
const startPosition = { x: 1, y: 1 };
|
||||
|
||||
module.exports = { correctDoor, startPosition };
|
||||
|
||||
module.exports = { correctDoor, startPosition };
|
||||
|
||||
@@ -1 +1,30 @@
|
||||
/*
|
||||
timer.js
|
||||
|
||||
minuteur autoritaire cote serveur
|
||||
*/
|
||||
|
||||
const GAME_DURATION = {"./config"};
|
||||
|
||||
fonction startTimer(socket, partnerSocket, pairState) {
|
||||
const interval = setInterval(() => {
|
||||
if (pairState.gameOver) {
|
||||
clearInterval(interval);
|
||||
return;
|
||||
}
|
||||
|
||||
pairState.timeLeft--;
|
||||
|
||||
socket.emit("timer", pairState.timeLeft);
|
||||
partnerSocket.emit("timer", pairState.timeLeft);
|
||||
|
||||
if (pairState.timeLeft <= 0) {
|
||||
pairState.gameOver = true;
|
||||
socket.emit("timeout");
|
||||
partnerSocket.emit("timeout");
|
||||
clearInterval(interval);
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
module.exports = { startTimer };
|
||||
|
||||
Reference in New Issue
Block a user