added handling for end of game

This commit is contained in:
Wenszel
2023-12-19 11:00:20 +01:00
parent 97513eac2d
commit 80caed1498
14 changed files with 150 additions and 37 deletions
+7 -1
View File
@@ -1,5 +1,5 @@
const { getRoom, updateRoom } = require('../services/roomService');
const { sendToPlayersRolledNumber } = require('../socket/emits');
const { sendToPlayersRolledNumber, sendWinner } = require('../socket/emits');
const { rollDice, isMoveValid } = require('./handlersFunctions');
module.exports = socket => {
@@ -7,12 +7,18 @@ module.exports = socket => {
const handleMovePawn = async pawnId => {
const room = await getRoom(req.session.roomId);
if (room.winner) return;
const pawn = room.getPawn(pawnId);
if (isMoveValid(req.session, pawn, room)) {
const newPositionOfMovedPawn = pawn.getPositionAfterMove(room.rolledNumber);
room.changePositionOfPawn(pawn, newPositionOfMovedPawn);
room.beatPawns(newPositionOfMovedPawn, req.session.color);
room.changeMovingPlayer();
const winner = room.getWinner();
if (winner) {
room.endGame(winner);
sendWinner(room._id.toString(), winner);
}
await updateRoom(room);
}
};
+7 -1
View File
@@ -1,4 +1,4 @@
const { sendToPlayersRolledNumber } = require('../socket/emits');
const { sendToPlayersRolledNumber, sendWinner } = require('../socket/emits');
const rollDice = () => {
const rolledNumber = Math.ceil(Math.random() * 6);
@@ -8,6 +8,7 @@ const rollDice = () => {
const makeRandomMove = async roomId => {
const { updateRoom, getRoom } = require('../services/roomService');
const room = await getRoom(roomId);
if (room.winner) return;
if (room.rolledNumber === null) {
room.rolledNumber = rollDice();
sendToPlayersRolledNumber(room._id.toString(), room.rolledNumber);
@@ -19,6 +20,11 @@ const makeRandomMove = async roomId => {
room.movePawn(randomPawn);
}
room.changeMovingPlayer();
const winner = room.getWinner();
if (winner) {
room.endGame(winner);
sendWinner(room._id.toString(), winner);
}
await updateRoom(room);
};
+9
View File
@@ -12,6 +12,14 @@ module.exports = socket => {
addPlayerToExistingRoom(room, data);
};
const handleExit = async () => {
req.session.reload(err => {
if (err) return socket.disconnect();
req.session.destroy();
socket.emit('redirect');
});
};
const handleReady = async () => {
const room = await getRoom(req.session.roomId);
room.getPlayer(req.session.playerId).changeReadyStatus();
@@ -45,4 +53,5 @@ module.exports = socket => {
socket.on('player:login', handleLogin);
socket.on('player:ready', handleReady);
socket.on('player:exit', handleExit);
};
+2 -1
View File
@@ -1,5 +1,5 @@
const { getRooms, getRoom, updateRoom, createNewRoom } = require('../services/roomService');
const { sendToOnePlayerRooms, sendToOnePlayerData } = require('../socket/emits');
const { sendToOnePlayerRooms, sendToOnePlayerData, sendWinner } = require('../socket/emits');
module.exports = socket => {
const req = socket.request;
@@ -13,6 +13,7 @@ module.exports = socket => {
await updateRoom(room);
}
sendToOnePlayerData(socket.id, room);
if (room.winner) sendWinner(socket.id, room.winner);
};
const handleGetAllRooms = async () => {