diff --git a/src/components/Gameboard/Dice/Dice.jsx b/src/components/Gameboard/Dice/Dice.jsx deleted file mode 100644 index 84d3a49..0000000 --- a/src/components/Gameboard/Dice/Dice.jsx +++ /dev/null @@ -1,38 +0,0 @@ -import React, { useEffect, useContext } from 'react'; -import { SocketContext } from '../../../App'; -import one from '../../../images/dice/1.png'; -import two from '../../../images/dice/2.png'; -import three from '../../../images/dice/3.png'; -import four from '../../../images/dice/4.png'; -import five from '../../../images/dice/5.png'; -import six from '../../../images/dice/6.png'; -import roll from '../../../images/dice/roll.png'; - -const Dice = ({ rolledNumberCallback, rolledNumber, nowMoving, color, movingPlayer }) => { - const socket = useContext(SocketContext); - - const images = [one, two, three, four, five, six, roll]; - - const handleRoll = () => { - socket.emit('game:roll'); - }; - - useEffect(() => { - socket.on('game:roll', number => { - rolledNumberCallback(number); - }); - }, [socket, rolledNumberCallback]); - - return ( -
- {movingPlayer === color ? ( - rolledNumber ? ( - {rolledNumber} - ) : nowMoving ? ( - roll - ) : null - ) : null} -
- ); -}; -export default Dice; diff --git a/src/components/Gameboard/Gameboard.jsx b/src/components/Gameboard/Gameboard.jsx index 5217304..99384ac 100644 --- a/src/components/Gameboard/Gameboard.jsx +++ b/src/components/Gameboard/Gameboard.jsx @@ -1,6 +1,7 @@ import React, { useState, useEffect, useContext } from 'react'; import ReactLoading from 'react-loading'; import { PlayerDataContext, SocketContext } from '../../App'; +import useSocketData from '../../hooks/useSocketData'; import Map from './Map/Map'; import Navbar from '../Navbar/Navbar'; @@ -11,7 +12,7 @@ const Gameboard = () => { const [pawns, setPawns] = useState([]); const [players, setPlayers] = useState([]); - const [rolledNumber, setRolledNumber] = useState(null); + const [rolledNumber, setRolledNumber] = useSocketData('game:roll'); const [time, setTime] = useState(); const [isReady, setIsReady] = useState(); const [nowMoving, setNowMoving] = useState(false); @@ -48,10 +49,6 @@ const Gameboard = () => { }); }, [socket]); - const rolledNumberCallback = number => { - setRolledNumber(number); - }; - return ( <> {(players[0] && !started) || (time && started) ? ( @@ -64,7 +61,6 @@ const Gameboard = () => { movingPlayer={movingPlayer} rolledNumber={rolledNumber} nowMoving={nowMoving} - rolledNumberCallback={rolledNumberCallback} /> diff --git a/src/components/Navbar/Dice/Dice.jsx b/src/components/Navbar/Dice/Dice.jsx new file mode 100644 index 0000000..dfd1630 --- /dev/null +++ b/src/components/Navbar/Dice/Dice.jsx @@ -0,0 +1,24 @@ +import React, { useContext } from 'react'; +import { SocketContext } from '../../../App'; +import images from '../../../constants/diceImages'; + +const Dice = ({ rolledNumber, nowMoving, color, movingPlayer }) => { + const socket = useContext(SocketContext); + + const handleRoll = () => { + socket.emit('game:roll'); + }; + + return ( +
+ {movingPlayer === color ? ( + rolledNumber ? ( + {rolledNumber} + ) : nowMoving ? ( + roll + ) : null + ) : null} +
+ ); +}; +export default Dice; diff --git a/src/components/Navbar/Dice/Dice.test.js b/src/components/Navbar/Dice/Dice.test.js new file mode 100644 index 0000000..e69de29 diff --git a/src/components/Navbar/Navbar.css b/src/components/Navbar/Navbar.css index 1358d4b..6dc92fd 100644 --- a/src/components/Navbar/Navbar.css +++ b/src/components/Navbar/Navbar.css @@ -7,23 +7,6 @@ .roll { cursor: pointer; } -.ready-container { - display: flex; - width: 300px; - justify-content: center; - align-items: center; - flex-direction: column; - flex-flow: row-reverse; - background-color: grey; - border-radius: 10px; - border: 2px solid white; -} -.ready-container > label { - margin-left: 10px; - margin-right: 10px; - width: 100px; - color: white; -} .player-container { display: flex; align-items: center; @@ -52,4 +35,3 @@ grid-column: 2; grid-row: 4; } -/* Styl dla overlay */ diff --git a/src/components/Navbar/Navbar.jsx b/src/components/Navbar/Navbar.jsx index 1b05d12..1a84d19 100644 --- a/src/components/Navbar/Navbar.jsx +++ b/src/components/Navbar/Navbar.jsx @@ -1,29 +1,31 @@ import React from 'react'; -import Dice from '../Gameboard/Dice/Dice'; +import Dice from './Dice/Dice'; import NameContainer from './NameContainer/NameContainer'; import ReadyButton from './ReadyButton/ReadyButton'; import './Navbar.css'; +import { PLAYER_COLORS } from '../../constants/colors'; import { useContext } from 'react'; import { PlayerDataContext } from '../../App'; -const Navbar = ({ players, started, time, isReady, rolledNumber, nowMoving, rolledNumberCallback, movingPlayer }) => { + +const Navbar = ({ players, started, time, isReady, rolledNumber, nowMoving, movingPlayer }) => { const context = useContext(PlayerDataContext); - const colors = ['red', 'blue', 'green', 'yellow']; + return ( <> {players.map((player, index) => ( -
+
- {context.color !== player.color || started ? null : } + {context.color === player.color || (!started && )}
))} ); }; + export default Navbar; diff --git a/src/constants/diceImages.js b/src/constants/diceImages.js new file mode 100644 index 0000000..e2acf9c --- /dev/null +++ b/src/constants/diceImages.js @@ -0,0 +1,11 @@ +import one from '../images/dice/1.png'; +import two from '../images/dice/2.png'; +import three from '../images/dice/3.png'; +import four from '../images/dice/4.png'; +import five from '../images/dice/5.png'; +import six from '../images/dice/6.png'; +import roll from '../images/dice/roll.png'; + +const diceImages = [one, two, three, four, five, six, roll]; + +export default diceImages; diff --git a/src/hooks/useSocketData.js b/src/hooks/useSocketData.js new file mode 100644 index 0000000..d33b7dc --- /dev/null +++ b/src/hooks/useSocketData.js @@ -0,0 +1,13 @@ +import { useState, useContext } from 'react'; +import { SocketContext } from '../App'; + +const useSocketData = port => { + const socket = useContext(SocketContext); + const [data, setData] = useState(null); + socket.on(port, data => { + setData(data); + }); + return [data, setData]; +}; + +export default useSocketData;