added ready button
This commit is contained in:
parent
78eb161408
commit
0c5181ea62
@ -1,5 +1,31 @@
|
|||||||
var express = require('express');
|
var express = require('express');
|
||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
|
var RoomModel = require('../schemas/room');
|
||||||
|
|
||||||
|
|
||||||
|
router.post('/ready', function (req, res){
|
||||||
|
RoomModel.findOne({_id: req.session.roomId}, function (err, doc){
|
||||||
|
if (err) {
|
||||||
|
res.status(500).send(err)
|
||||||
|
} else {
|
||||||
|
let updatedPlayers = doc.players;
|
||||||
|
let index = updatedPlayers.findIndex( player => player.name === req.session.name);
|
||||||
|
updatedPlayers[index].ready = !updatedPlayers[index].ready;
|
||||||
|
RoomModel.findOneAndUpdate({
|
||||||
|
_id: req.session.roomId
|
||||||
|
}, {players: updatedPlayers}, function(err, doc){
|
||||||
|
if (err){
|
||||||
|
console.log(err)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
console.log("Updated Docs : ", doc);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
res.status(200).send("Ready!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
//adding users to exisiting room or creating new room if full
|
//adding users to exisiting room or creating new room if full
|
||||||
router.post('/add', function (req, res) {
|
router.post('/add', function (req, res) {
|
||||||
|
|||||||
@ -18,15 +18,15 @@ router.post('/add', function (req, res) {
|
|||||||
full: false,
|
full: false,
|
||||||
started: false,
|
started: false,
|
||||||
players: [{
|
players: [{
|
||||||
player: req.body.name,
|
name: req.body.name,
|
||||||
|
ready: false,
|
||||||
color: colors[0]
|
color: colors[0]
|
||||||
}],
|
}],
|
||||||
});
|
});
|
||||||
newRoom.save()
|
newRoom.save()
|
||||||
.then(function(){
|
.then(function(){
|
||||||
req.session.roomId = newRoom._id;
|
req.session.roomId = newRoom._id;
|
||||||
req.session.player = req.body.name;
|
req.session.name = req.body.name;
|
||||||
|
|
||||||
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))
|
||||||
@ -35,7 +35,8 @@ router.post('/add', function (req, res) {
|
|||||||
let players = results.players;
|
let players = results.players;
|
||||||
players.push(
|
players.push(
|
||||||
{
|
{
|
||||||
player: req.body.name,
|
name: req.body.name,
|
||||||
|
ready: false,
|
||||||
color: colors[players.length]
|
color: colors[players.length]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +58,7 @@ router.post('/add', function (req, res) {
|
|||||||
}
|
}
|
||||||
).then(()=>{
|
).then(()=>{
|
||||||
req.session.roomId = results._id;
|
req.session.roomId = results._id;
|
||||||
req.session.player = req.body.name;
|
req.session.name = req.body.name;
|
||||||
res.status(200).send('Joined!');
|
res.status(200).send('Joined!');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,9 @@ var RoomSchema = new Schema({
|
|||||||
started: Boolean,
|
started: Boolean,
|
||||||
full: Boolean,
|
full: Boolean,
|
||||||
players: [{
|
players: [{
|
||||||
player: String,
|
name: String,
|
||||||
color: String,
|
color: String,
|
||||||
|
ready: Boolean,
|
||||||
}],
|
}],
|
||||||
positions: Map
|
positions: Map
|
||||||
});
|
});
|
||||||
|
|||||||
@ -37,7 +37,7 @@ mongoose.connect(CONNECTION_URI, {
|
|||||||
var MongoDBStore = require('connect-mongodb-session')(session);
|
var MongoDBStore = require('connect-mongodb-session')(session);
|
||||||
var store = new MongoDBStore({
|
var store = new MongoDBStore({
|
||||||
uri: CONNECTION_URI,
|
uri: CONNECTION_URI,
|
||||||
collection: 'mySessions'
|
collection: 'sessions'
|
||||||
});
|
});
|
||||||
app.use(session({
|
app.use(session({
|
||||||
secret: 'lalala',
|
secret: 'lalala',
|
||||||
@ -56,9 +56,11 @@ const playerRoutes = require("./routes/player");
|
|||||||
app.get('/', (req,res)=>{
|
app.get('/', (req,res)=>{
|
||||||
if(req.session.player){
|
if(req.session.player){
|
||||||
res.send({
|
res.send({
|
||||||
player: req.session.player,
|
name: req.session.name,
|
||||||
roomId: req.session.roomId,
|
roomId: req.session.roomId,
|
||||||
})
|
})
|
||||||
|
}else{
|
||||||
|
res.end();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
0
src/components/Gameboard.jsx
Normal file
0
src/components/Gameboard.jsx
Normal file
7
src/components/Navbar.css
Normal file
7
src/components/Navbar.css
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
.navbar-container{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
.navbar-container>div{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
@ -1,25 +1,28 @@
|
|||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
|
import NameContainer from './navbar-components/NameContainer'
|
||||||
|
import ReadyButton from './navbar-components/ReadyButton'
|
||||||
|
import './Navbar.css';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
const Navbar = () => {
|
const Navbar = () => {
|
||||||
|
|
||||||
const [players, setPlayers] = useState([]);
|
const [players, setPlayers] = useState([]);
|
||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
//fetching names, time and other data
|
//fetching players data
|
||||||
axios.get('http://localhost:3001/room/',{
|
axios.get('http://localhost:3001/room/',{
|
||||||
withCredentials:true,
|
withCredentials:true,
|
||||||
mode: 'cors',
|
mode: 'cors',
|
||||||
}).then((response)=>{
|
}).then((response)=>{
|
||||||
|
|
||||||
setPlayers(response.data.players);
|
setPlayers(response.data.players);
|
||||||
console.log(response.data.players);
|
|
||||||
})
|
})
|
||||||
}
|
},[]);
|
||||||
,[]);
|
|
||||||
return(
|
return(
|
||||||
<div>
|
<div className="navbar-container">
|
||||||
{players.map((name)=>
|
{players.map((player)=>
|
||||||
<p key={name.player}>{name.player}</p>
|
<NameContainer key={player.name} player = {player}/>
|
||||||
)}
|
)}
|
||||||
|
<ReadyButton/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
10
src/components/navbar-components/NameContainer.css
Normal file
10
src/components/navbar-components/NameContainer.css
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
.name-container{
|
||||||
|
width: 100px;
|
||||||
|
height: 50px;
|
||||||
|
border-radius: 5px;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
13
src/components/navbar-components/NameContainer.jsx
Normal file
13
src/components/navbar-components/NameContainer.jsx
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import './NameContainer.css'
|
||||||
|
const NameContainer = ( {player} ) => {
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="name-container" style={{backgroundColor: player.color}}>
|
||||||
|
{player.name}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export default NameContainer;
|
||||||
18
src/components/navbar-components/ReadyButton.jsx
Normal file
18
src/components/navbar-components/ReadyButton.jsx
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import axios from 'axios';
|
||||||
|
const ReadyButton = () => {
|
||||||
|
|
||||||
|
const handleCheckboxChange = () => {
|
||||||
|
axios.post('http://localhost:3000/player/ready',{},{withCredentials: true});
|
||||||
|
}
|
||||||
|
|
||||||
|
return(
|
||||||
|
<>
|
||||||
|
<label>Ready: </label>
|
||||||
|
<input type="checkbox" onClick={handleCheckboxChange}/>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ReadyButton;
|
||||||
Loading…
Reference in New Issue
Block a user