36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
const { sendToPlayersRolledNumber } = require('../socket/emits');
|
|
|
|
const rollDice = () => {
|
|
const rolledNumber = Math.ceil(Math.random() * 6);
|
|
return rolledNumber;
|
|
};
|
|
|
|
const makeRandomMove = async roomId => {
|
|
const { updateRoom, getRoom } = require('../services/roomService');
|
|
const room = await getRoom(roomId);
|
|
if (room.rolledNumber === null) {
|
|
room.rolledNumber = rollDice();
|
|
sendToPlayersRolledNumber(room._id.toString(), room.rolledNumber);
|
|
}
|
|
|
|
const pawnsThatCanMove = room.getPawnsThatCanMove();
|
|
if (pawnsThatCanMove.length > 0) {
|
|
const randomPawn = pawnsThatCanMove[Math.floor(Math.random() * pawnsThatCanMove.length)];
|
|
room.movePawn(randomPawn);
|
|
}
|
|
room.changeMovingPlayer();
|
|
await updateRoom(room);
|
|
};
|
|
|
|
const isMoveValid = (session, pawn, room) => {
|
|
if (session.color !== pawn.color) {
|
|
return false;
|
|
}
|
|
if (session.playerId !== room.getCurrentlyMovingPlayer()._id.toString()) {
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|
|
|
|
module.exports = { rollDice, makeRandomMove, isMoveValid };
|