added starting game

This commit is contained in:
Wenszel 2021-04-24 13:37:34 +02:00
parent 2ed1894b6d
commit 3f07e71ce0
6 changed files with 31 additions and 24 deletions

View File

@ -1,14 +1,6 @@
var express = require('express'); var express = require('express');
var router = express.Router(); var router = express.Router();
//starts game
router.post('/start', function (req, res){
/* set interval:
draw a number <1,6>
update positions
*/
});
router.get('/roll', function (req, res){ router.get('/roll', function (req, res){
res.send({number: Math.ceil(Math.random() * 6)}); res.send({number: Math.ceil(Math.random() * 6)});
}); });

View File

@ -12,12 +12,21 @@ var changeReadyState = (req, res, exit) =>{
let index = updatedPlayers.findIndex( let index = updatedPlayers.findIndex(
player => (player._id).toString() == (req.session.playerId).toString() player => (player._id).toString() == (req.session.playerId).toString()
); );
if(!exit) console.log(doc, updatedPlayers, index);
{updatedPlayers[index].ready = !updatedPlayers[index].ready;} if(!exit) updatedPlayers[index].ready = !updatedPlayers[index].ready;
else {updatedPlayers[index].ready = false;} else updatedPlayers[index].ready = false;
const updatedDoc = {
players: updatedPlayers
}
console.log(updatedPlayers.filter(player => player.ready).length);
if(updatedPlayers.filter(player => player.ready).length >= 2){
updatedDoc.started = true;
updatedDoc.players[0].nowMoving = true;
}
RoomModel.findOneAndUpdate({ RoomModel.findOneAndUpdate({
_id: req.session.roomId _id: req.session.roomId
}, {players: updatedPlayers}, function(err, doc){ }, updatedDoc, function(err, doc){
if (err){ if (err){
console.log(err) console.log(err)
} }

View File

@ -7,7 +7,6 @@ var colors = ['red','blue','green','yellow'];
//creating new room in db //creating new room in db
router.post('/add', function (req, res) { router.post('/add', function (req, res) {
console.log(req.session);
RoomModel.findOne( { full: false, started: false }, function (err, results) { RoomModel.findOne( { full: false, started: false }, function (err, results) {
if (err) { if (err) {
console.log(err); console.log(err);
@ -19,6 +18,7 @@ router.post('/add', function (req, res) {
started: false, started: false,
players: [{ players: [{
name: req.body.name, name: req.body.name,
nowMoving: false,
ready: false, ready: false,
color: colors[0] color: colors[0]
}], }],
@ -31,7 +31,6 @@ router.post('/add', function (req, res) {
res.status(200).send('Joined!'); res.status(200).send('Joined!');
}) })
.catch(err => res.status(400).json('Error: ' + err)) .catch(err => res.status(400).json('Error: ' + err))
}else { }else {
let players = results.players; let players = results.players;
@ -42,17 +41,22 @@ router.post('/add', function (req, res) {
}); });
let updateObj = { players: players } let updateObj = { players: players }
players.length === 4 ? updateObj.full = true : updateObj.full = false; // Checks if room is full => if true start game
if (players.length === 4) {
updateObj.full = true; // Room is full
updateObj.started = true; // Game started
updateObj.players[0].nowMoving = true; //First joined player moving
}
RoomModel.findOneAndUpdate( RoomModel.findOneAndUpdate(
{ _id: results._id }, //find room by id { _id: results._id }, //find room by id
updateObj) updateObj)
.then(()=>{ .then(()=>{
req.session.roomId = results._id; req.session.roomId = results._id;
req.session.playerId = updateObj.players[updateObj.players.lenght - 1]._id; req.session.playerId = updateObj.players[updateObj.players.length-1]._id;
req.session.name = req.body.name; req.session.name = req.body.name;
res.status(200).send('Joined!'); res.status(200).send('Joined!');
}); });
} }
}); });
@ -67,7 +71,7 @@ router.get('/', function(req,res){
console.log(err) console.log(err)
} }
else{ else{
res.send({ players: docs.players}); res.send(docs);
} }
} }
) )

View File

@ -10,11 +10,12 @@ var RoomSchema = new Schema({
name: String, name: String,
color: String, color: String,
ready: Boolean, ready: Boolean,
nowMoving: Boolean,
}],
pawns: [{
color: String,
position: Number,
}], }],
positions: {
type: Map,
of: Array,
}
}); });
var RoomModel = mongoose.model('RoomModel', RoomSchema ); var RoomModel = mongoose.model('RoomModel', RoomSchema );

View File

@ -23,6 +23,7 @@ const PORT = 3000|| process.env.PORT;
//DATABASE CONFIG //DATABASE CONFIG
const mongoose = require("mongoose"); const mongoose = require("mongoose");
mongoose.set('useFindAndModify', false);
const CONNECTION_URI = require("./credentials.js").MONGODB_URL; const CONNECTION_URI = require("./credentials.js").MONGODB_URL;
mongoose.connect(CONNECTION_URI, { mongoose.connect(CONNECTION_URI, {

View File

@ -22,7 +22,7 @@ const Navbar = () => {
} }
useEffect(()=>{ useEffect(()=>{
//sending ajax every 3 sec //sending ajax every 3 sec
setInterval(fetchData, 3000); setInterval(fetchData, 1000);
},[]); },[]);
return( return(