From 148fa85601cb0bfe0859195b865863a1ba56f2b1 Mon Sep 17 00:00:00 2001 From: Wenszel Date: Sat, 24 Apr 2021 14:30:34 +0200 Subject: [PATCH] added turns --- backend/routes/room.js | 4 ++-- src/App.js | 15 ++++++++++----- src/components/Gameboard.jsx | 35 +++++++++++++++++++++++++++++++---- src/components/NameInput.jsx | 3 ++- src/components/Navbar.jsx | 26 ++------------------------ 5 files changed, 47 insertions(+), 36 deletions(-) diff --git a/backend/routes/room.js b/backend/routes/room.js index c0718ca..c7beeec 100644 --- a/backend/routes/room.js +++ b/backend/routes/room.js @@ -28,7 +28,7 @@ router.post('/add', function (req, res) { req.session.roomId = newRoom._id; req.session.playerId = newRoom.players[0]._id; req.session.name = req.body.name; - res.status(200).send('Joined!'); + res.status(200).send(req.session.playerId); }) .catch(err => res.status(400).json('Error: ' + err)) }else { @@ -54,7 +54,7 @@ router.post('/add', function (req, res) { req.session.roomId = results._id; req.session.playerId = updateObj.players[updateObj.players.length-1]._id; req.session.name = req.body.name; - res.status(200).send('Joined!'); + res.status(200).send(req.session.playerId); }); } diff --git a/src/App.js b/src/App.js index 83bef3d..255f682 100644 --- a/src/App.js +++ b/src/App.js @@ -14,14 +14,17 @@ function App() { const [redirect, setRedirect] = useState() useEffect(() => { + console.log("id", id); axios.get('http://localhost:3000/player', { withCredentials:true, mode: 'cors' }) .then( response => { + console.log(response); + setId(response.data.playerId); response.data.roomId!=null ? setRedirect(true) : setRedirect(false); }); - }) + },[id]) const handleExit = e => { e.preventDefault(); @@ -31,14 +34,17 @@ function App() { } const idCallback = (id)=>{ - setId(id); + console.log(id); axios.get('http://localhost:3000/player/', { withCredentials:true, mode: 'cors', headers: { "Content-Type": "application/json" }, }) - .then(()=> setRedirect(true)) + .then(response => { + setId(response.data.playerId); + setRedirect(true) + }) } return ( @@ -53,8 +59,7 @@ function App() { - - + diff --git a/src/components/Gameboard.jsx b/src/components/Gameboard.jsx index 4b861f1..51e44eb 100644 --- a/src/components/Gameboard.jsx +++ b/src/components/Gameboard.jsx @@ -1,13 +1,40 @@ -import React from 'react'; - +import React, { useState, useEffect } from 'react'; +import axios from 'axios'; import Map from './game-board-components/Map' import Dice from './game-board-components/Dice' +import Navbar from './Navbar' -const Gameboard = () => { +const Gameboard = ({id}) => { + const [players, setPlayers] = useState([]); + const [nowMoving, setNowMoving] = useState(false); + //fetching players data to display them in navbar + const fetchData = () => { + axios.get('http://localhost:3000/room/',{ + withCredentials:true, + mode: 'cors', + }).then((response)=>{ + while(response.data.players.length !== 4){ + response.data.players.push({ + name: "...", + }) + } + setPlayers(response.data.players); + if(id===response.data.players.find(player => player.nowMoving === true)?._id){ + setNowMoving(true); + }else{ + setNowMoving(false); + } + }) + } + useEffect(()=>{ + //sending ajax every 1 sec + setInterval(fetchData, 1000); + },[]); return ( <> - + + {nowMoving ? : null} ) diff --git a/src/components/NameInput.jsx b/src/components/NameInput.jsx index f5fe5c7..af9cd09 100644 --- a/src/components/NameInput.jsx +++ b/src/components/NameInput.jsx @@ -15,7 +15,8 @@ const NameInput = ({ idCallback }) => { "Content-Type": "application/json" }) .then(response => { - idCallback(response.data.id); + console.log(response.data); + idCallback(response.data); }) } return( diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx index fcd6678..75328f1 100644 --- a/src/components/Navbar.jsx +++ b/src/components/Navbar.jsx @@ -1,30 +1,8 @@ -import React, { useEffect, useState } from 'react'; +import React from 'react'; import NameContainer from './navbar-components/NameContainer' import ReadyButton from './navbar-components/ReadyButton' import './Navbar.css'; -import axios from 'axios'; -const Navbar = () => { - - const [players, setPlayers] = useState([]); - //fetching players data to display them in navbar - const fetchData = () => { - axios.get('http://localhost:3000/room/',{ - withCredentials:true, - mode: 'cors', - }).then((response)=>{ - while(response.data.players.length !== 4){ - response.data.players.push({ - name: "...", - }) - } - setPlayers(response.data.players); - }) - } - useEffect(()=>{ - //sending ajax every 3 sec - setInterval(fetchData, 1000); - },[]); - +const Navbar = ( { players }) => { return(
{players.map( (player, index) =>