refactored frontend
This commit is contained in:
@@ -23,14 +23,8 @@ const createNewRoom = data => {
|
||||
return room;
|
||||
};
|
||||
|
||||
const findPlayer = async sessionID => {
|
||||
const player = await Room.findOne({ 'players.sessionID': sessionID }).exec();
|
||||
console.log(player);
|
||||
return await Room.findOne({ 'players.sessionID': sessionID }).exec();
|
||||
};
|
||||
|
||||
Room.watch().on('change', async data => {
|
||||
sendToPlayersData(await getRoom(data.documentKey._id));
|
||||
});
|
||||
|
||||
module.exports = { getRoom, getRooms, updateRoom, getJoinableRoom, createNewRoom, findPlayer };
|
||||
module.exports = { getRoom, getRooms, updateRoom, getJoinableRoom, createNewRoom };
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
const { getRoom, updateRoom } = require('../controllers/roomController');
|
||||
const { sendToPlayersRolledNumber } = require('../socket/emits');
|
||||
const { getPawnPositionAfterMove } = require('../utils/functions');
|
||||
const { rollDice, isMoveValid } = require('./handlersFunctions');
|
||||
|
||||
module.exports = socket => {
|
||||
@@ -10,7 +9,7 @@ module.exports = socket => {
|
||||
const room = await getRoom(req.session.roomId);
|
||||
const pawn = room.getPawn(pawnId);
|
||||
if (isMoveValid(req.session, pawn, room)) {
|
||||
const newPositionOfMovedPawn = getPawnPositionAfterMove(room.rolledNumber, pawn);
|
||||
const newPositionOfMovedPawn = pawn.getPositionAfterMove(room.rolledNumber);
|
||||
room.changePositionOfPawn(pawn, newPositionOfMovedPawn);
|
||||
room.beatPawns(newPositionOfMovedPawn, req.session.color);
|
||||
room.changeMovingPlayer();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const { getRooms, getRoom, updateRoom, createNewRoom } = require('../controllers/roomController');
|
||||
const { sendToOnePlayerRooms, sendToOnePlayerData, sendToPlayersData } = require('../socket/emits');
|
||||
const { sendToOnePlayerRooms, sendToOnePlayerData } = require('../socket/emits');
|
||||
|
||||
module.exports = socket => {
|
||||
const req = socket.request;
|
||||
|
||||
+61
-3
@@ -2,8 +2,6 @@ const mongoose = require('mongoose');
|
||||
|
||||
const Schema = mongoose.Schema;
|
||||
|
||||
const { getPawnPositionAfterMove } = require('../utils/functions');
|
||||
|
||||
const PawnSchema = new Schema({
|
||||
color: String,
|
||||
basePos: Number,
|
||||
@@ -15,10 +13,70 @@ PawnSchema.methods.canMove = function (rolledNumber) {
|
||||
return true;
|
||||
}
|
||||
// (if player's pawn is near finish line) if the move does not go beyond the win line
|
||||
if (this.position !== getPawnPositionAfterMove(rolledNumber, this) && this.position !== this.basePos) {
|
||||
if (this.position !== this.getPositionAfterMove(rolledNumber) && this.position !== this.basePos) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
PawnSchema.methods.getPositionAfterMove = function (rolledNumber) {
|
||||
const { position, color } = this;
|
||||
switch (color) {
|
||||
case 'red':
|
||||
if (position + rolledNumber <= 73) {
|
||||
if (position >= 0 && position <= 3) {
|
||||
return 16;
|
||||
} else if (position <= 66 && position + rolledNumber >= 67) {
|
||||
return position + rolledNumber + 1;
|
||||
} else {
|
||||
return position + rolledNumber;
|
||||
}
|
||||
} else {
|
||||
return position;
|
||||
}
|
||||
case 'blue':
|
||||
if (position + rolledNumber <= 79) {
|
||||
if (position >= 4 && position <= 7) {
|
||||
return 55;
|
||||
} else if (position <= 67 && position + rolledNumber > 67) {
|
||||
return position + rolledNumber - 52;
|
||||
} else if (position <= 53 && position + rolledNumber >= 54) {
|
||||
return position + rolledNumber + 20;
|
||||
} else {
|
||||
return position + rolledNumber;
|
||||
}
|
||||
} else {
|
||||
return position;
|
||||
}
|
||||
case 'green':
|
||||
if (position + rolledNumber <= 85) {
|
||||
if (position >= 8 && position <= 11) {
|
||||
return 42;
|
||||
} else if (position <= 67 && position + rolledNumber > 67) {
|
||||
return position + rolledNumber - 52;
|
||||
} else if (position <= 40 && position + rolledNumber >= 41) {
|
||||
return position + rolledNumber + 39;
|
||||
} else {
|
||||
return position + rolledNumber;
|
||||
}
|
||||
} else {
|
||||
return position;
|
||||
}
|
||||
case 'yellow':
|
||||
if (position + rolledNumber <= 85) {
|
||||
if (position >= 12 && position <= 15) {
|
||||
return 29;
|
||||
} else if (position <= 67 && position + rolledNumber > 67) {
|
||||
return position + rolledNumber - 52;
|
||||
} else if (position <= 27 && position + rolledNumber >= 28) {
|
||||
return position + rolledNumber + 58;
|
||||
} else {
|
||||
return position + rolledNumber;
|
||||
}
|
||||
} else {
|
||||
return position;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = PawnSchema;
|
||||
|
||||
+18
-3
@@ -1,6 +1,5 @@
|
||||
const mongoose = require('mongoose');
|
||||
const { colors } = require('../utils/constants');
|
||||
const { getPawnPositionAfterMove, getStartPositions } = require('../utils/functions');
|
||||
const { makeRandomMove } = require('../handlers/handlersFunctions');
|
||||
const PawnSchema = require('./pawn');
|
||||
const PlayerSchema = require('./player');
|
||||
@@ -16,7 +15,23 @@ const RoomSchema = new mongoose.Schema({
|
||||
timeoutID: Number,
|
||||
rolledNumber: Number,
|
||||
players: [PlayerSchema],
|
||||
pawns: { type: [PawnSchema], default: getStartPositions() },
|
||||
pawns: {
|
||||
type: [PawnSchema],
|
||||
default: () => {
|
||||
const startPositions = [];
|
||||
for (let i = 0; i < 16; i++) {
|
||||
let pawn = {};
|
||||
pawn.basePos = i;
|
||||
pawn.position = i;
|
||||
if (i < 4) pawn.color = colors[0];
|
||||
else if (i < 8) pawn.color = colors[1];
|
||||
else if (i < 12) pawn.color = colors[2];
|
||||
else if (i < 16) pawn.color = colors[3];
|
||||
startPositions.push(pawn);
|
||||
}
|
||||
return startPositions;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
RoomSchema.methods.beatPawns = function (position, attackingPawnColor) {
|
||||
@@ -44,7 +59,7 @@ RoomSchema.methods.changeMovingPlayer = function () {
|
||||
};
|
||||
|
||||
RoomSchema.methods.movePawn = function (pawn) {
|
||||
const newPositionOfMovedPawn = getPawnPositionAfterMove(this.rolledNumber, pawn);
|
||||
const newPositionOfMovedPawn = pawn.getPositionAfterMove(this.rolledNumber);
|
||||
this.changePositionOfPawn(pawn, newPositionOfMovedPawn);
|
||||
this.beatPawns(newPositionOfMovedPawn, pawn.color);
|
||||
};
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
const { colors } = require('./constants');
|
||||
function getStartPositions() {
|
||||
const startPositions = [];
|
||||
for (let i = 0; i < 16; i++) {
|
||||
let pawn = {};
|
||||
pawn.basePos = i;
|
||||
pawn.position = i;
|
||||
if (i < 4) pawn.color = colors[0];
|
||||
else if (i < 8) pawn.color = colors[1];
|
||||
else if (i < 12) pawn.color = colors[2];
|
||||
else if (i < 16) pawn.color = colors[3];
|
||||
startPositions.push(pawn);
|
||||
}
|
||||
return startPositions;
|
||||
}
|
||||
function getPawnPositionAfterMove(rolledNumber, pawn) {
|
||||
const { position, color } = pawn;
|
||||
switch (color) {
|
||||
case 'red':
|
||||
if (pawn.position + rolledNumber <= 73) {
|
||||
if (position >= 0 && position <= 3) {
|
||||
return 16;
|
||||
} else if (position <= 66 && position + rolledNumber >= 67) {
|
||||
return position + rolledNumber + 1;
|
||||
} else {
|
||||
return position + rolledNumber;
|
||||
}
|
||||
} else {
|
||||
return position;
|
||||
}
|
||||
case 'blue':
|
||||
if (pawn.position + rolledNumber <= 79) {
|
||||
if (position >= 4 && position <= 7) {
|
||||
return 55;
|
||||
} else if (position <= 67 && position + rolledNumber > 67) {
|
||||
return position + rolledNumber - 52;
|
||||
} else if (position <= 53 && position + rolledNumber >= 54) {
|
||||
return position + rolledNumber + 20;
|
||||
} else {
|
||||
return position + rolledNumber;
|
||||
}
|
||||
} else {
|
||||
return position;
|
||||
}
|
||||
case 'green':
|
||||
if (pawn.position + rolledNumber <= 85) {
|
||||
if (position >= 8 && position <= 11) {
|
||||
return 42;
|
||||
} else if (position <= 67 && position + rolledNumber > 67) {
|
||||
return position + rolledNumber - 52;
|
||||
} else if (position <= 40 && position + rolledNumber >= 41) {
|
||||
return position + rolledNumber + 39;
|
||||
} else {
|
||||
return position + rolledNumber;
|
||||
}
|
||||
} else {
|
||||
return position;
|
||||
}
|
||||
case 'yellow':
|
||||
if (pawn.position + rolledNumber <= 85) {
|
||||
if (position >= 12 && position <= 15) {
|
||||
return 29;
|
||||
} else if (position <= 67 && position + rolledNumber > 67) {
|
||||
return position + rolledNumber - 52;
|
||||
} else if (position <= 27 && position + rolledNumber >= 28) {
|
||||
return position + rolledNumber + 58;
|
||||
} else {
|
||||
return position + rolledNumber;
|
||||
}
|
||||
} else {
|
||||
return position;
|
||||
}
|
||||
}
|
||||
}
|
||||
module.exports = { getStartPositions, getPawnPositionAfterMove };
|
||||
Reference in New Issue
Block a user