import React, { useState, useEffect, useContext } from 'react'; import ReactLoading from 'react-loading'; import { PlayerDataContext, SocketContext } from '../../App'; import Map from './Map/Map'; import Navbar from '../Navbar/Navbar'; const Gameboard = () => { const socket = useContext(SocketContext); const context = useContext(PlayerDataContext); const [pawns, setPawns] = useState([]); const [players, setPlayers] = useState([]); const [rolledNumber, setRolledNumber] = useState(null); const [time, setTime] = useState(); const [isReady, setIsReady] = useState(); const [nowMoving, setNowMoving] = useState(false); const [started, setStarted] = useState(false); const [movingPlayer, setMovingPlayer] = useState('red'); useEffect(() => { socket.emit('room:data', context.roomId); socket.on('room:data', data => { data = JSON.parse(data); if (data.players == null) return; // Filling navbar with empty player nick container while (data.players.length !== 4) { data.players.push({ name: '...' }); } // Checks if client is currently moving player by session ID const nowMovingPlayer = data.players.find(player => player.nowMoving === true); if (nowMovingPlayer) { if (nowMovingPlayer._id === context.playerId) { setNowMoving(true); } else { setNowMoving(false); } setMovingPlayer(nowMovingPlayer.color); } const currentPlayer = data.players.find(player => player._id === context.playerId); setIsReady(currentPlayer.ready); setRolledNumber(data.rolledNumber); setPlayers(data.players); setPawns(data.pawns); setTime(data.nextMoveTime); setStarted(data.started); }); }, [socket]); const rolledNumberCallback = number => { setRolledNumber(number); }; return ( <> {(players[0] && !started) || (time && started) ? (