added room schema tests

This commit is contained in:
Wenszel
2023-11-19 20:32:12 +01:00
parent b70693afdd
commit d284fc30f1
3 changed files with 82 additions and 28 deletions
+10 -27
View File
@@ -2,34 +2,17 @@ const RoomModel = require('../schemas/room');
module.exports = (io, socket) => {
const req = socket.request;
const getData = () => {
RoomModel.findOne({ _id: req.session.roomId }, function (err, room) {
if (!room) return err;
if (room.nextMoveTime <= Date.now()) {
changeCurrentMovingPlayer();
} else {
io.to(req.session.roomId.toString()).emit('room:data', JSON.stringify(room));
}
});
const getData = async () => {
let room = await RoomModel.findOne({ _id: req.session.roomId });
// Handle the situation when the server crashes and any player reconnects after the time has expired
// Typically, the responsibility for changing players is managed by gameHandler.js.
if (room.nextMoveTime <= Date.now()) {
room.changeMovingPlayer();
await RoomModel.findOneAndUpdate({ _id: req.session.roomId }, room);
}
io.to(req.session.roomId).emit('room:data', JSON.stringify(room));
};
socket.on('room:data', getData);
function changeCurrentMovingPlayer() {
RoomModel.findOne({ _id: req.session.roomId }, function (err, room) {
if (!room) return err;
const index = room.players.findIndex(player => player.nowMoving === true);
const roomSize = room.players.length;
room.players[index].nowMoving = false;
if (index + 1 === roomSize) {
room.players[0].nowMoving = true;
} else {
room.players[index + 1].nowMoving = true;
}
room.nextMoveTime = Date.now() + 15000;
RoomModel.findOneAndUpdate({ _id: req.session.roomId }, room, function (err, updatedRoom) {
io.to(req.session.roomId).emit('room:data', JSON.stringify(updatedRoom));
});
});
}
};