moved moving from client to server
This commit is contained in:
parent
c8773ed546
commit
b56c343d83
@ -13,9 +13,10 @@ router.post('/move', function (req, res){
|
||||
if(doc){
|
||||
// Updating position
|
||||
const updatedPawn = doc.pawns.findIndex(pawn => pawn._id == req.body.pawnId);
|
||||
doc.pawns[updatedPawn].position = req.body.position;
|
||||
doc.pawns[updatedPawn].position = getPosition(req.session.rolledNumber, doc.pawns[updatedPawn]);
|
||||
console.log(getPosition(req.session.rolledNumber, doc.pawns[updatedPawn]));
|
||||
// Capturing a pawn
|
||||
const pawnsOnPos = doc.pawns.filter( pawn => pawn.position == req.body.position);
|
||||
const pawnsOnPos = doc.pawns.filter( pawn => pawn.position == doc.pawns[updatedPawn].position);
|
||||
pawnsOnPos.forEach( pawn => {
|
||||
if(pawn.color !== req.session.color){
|
||||
const index = doc.pawns.findIndex(i => i._id === pawn._id);
|
||||
@ -33,6 +34,7 @@ router.post('/move', function (req, res){
|
||||
}
|
||||
// Updating timer
|
||||
doc.nextMoveTime = Date.now()+15000;
|
||||
// Pushing above data to database
|
||||
RoomModel.findOneAndUpdate({_id: req.session.roomId}, doc, function(err, doc){
|
||||
res.send("Correctly Moved!");
|
||||
});
|
||||
@ -40,5 +42,64 @@ router.post('/move', function (req, res){
|
||||
});
|
||||
});
|
||||
|
||||
function getPosition(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 = router;
|
||||
@ -18,7 +18,7 @@ var changeReadyState = (req, res, exit) =>{
|
||||
}
|
||||
if(updatedPlayers.filter(player => player.ready).length >= 2){
|
||||
updatedDoc.started = true;
|
||||
updatedDoc.players = updatedDoc.players.map(player => player.ready === true);
|
||||
updatedDoc.players.forEach(player => player.ready = true);
|
||||
updatedDoc.nextMoveTime = Date.now() + 15000;
|
||||
updatedDoc.players[0].nowMoving = true;
|
||||
}
|
||||
|
||||
@ -59,7 +59,7 @@ router.post('/add', function (req, res) {
|
||||
updateObj.full = true; // Room is full
|
||||
updateObj.started = true; // Game started
|
||||
updateObj.nextMoveTime = Date.now() + 15000;
|
||||
updateObj.players = updateObj.players.map(player => player.ready === true);
|
||||
updateObj.players.forEach(player => player.ready = true);
|
||||
updateObj.players[0].nowMoving = true; //First joined player moving
|
||||
updateObj.pawns = getStartPositions();
|
||||
}
|
||||
|
||||
@ -11,7 +11,7 @@ const Dice = ({ rolledNumberCallback, nowMoving }) => {
|
||||
const [rolledNumber, setRolledNumber] = useState();
|
||||
const [images] = useState([one, two, three, four, five, six]);
|
||||
const handleRoll = () => {
|
||||
axios.get('http://localhost:3000/game/roll').then(response => {
|
||||
axios.get('http://localhost:3000/game/roll', {withCredentials: true}).then(response => {
|
||||
const utterance = new SpeechSynthesisUtterance(response.data.number);
|
||||
speechSynthesis.speak(utterance);
|
||||
setRolledNumber(response.data.number);
|
||||
|
||||
@ -55,7 +55,7 @@ const Map = ({ pawns, nowMoving, rolledNumber }) => {
|
||||
y = event.clientY - rect.top;
|
||||
for(const pawn of pawns){
|
||||
if (ctx.isPointInPath(pawn.circle, x, y)) {
|
||||
axios.post('http://localhost:3000/game/move', {pawnId: pawn._id, position: hintPawn.position}, {withCredentials: true})
|
||||
axios.post('http://localhost:3000/game/move', {pawnId: pawn._id}, {withCredentials: true, mode: 'cors'})
|
||||
.then(() => {
|
||||
setHintPawn(null);
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user