added losing move

This commit is contained in:
Wenszel 2021-04-26 20:48:12 +02:00
parent b9c6db9586
commit 981b5fd032
5 changed files with 45 additions and 14 deletions

View File

@ -57,7 +57,7 @@ router.post('/add', function (req, res) {
if (players.length === 4) { if (players.length === 4) {
updateObj.full = true; // Room is full updateObj.full = true; // Room is full
updateObj.started = true; // Game started updateObj.started = true; // Game started
updateObj.nextMoveTime = Date.now()+15; updateObj.nextMoveTime = Date.now()+30000;
updateObj.players[0].nowMoving = true; //First joined player moving updateObj.players[0].nowMoving = true; //First joined player moving
updateObj.pawns = getStartPositions(); updateObj.pawns = getStartPositions();
} }
@ -85,7 +85,37 @@ router.get('/', function(req,res){
console.log(err) console.log(err)
} }
else{ else{
res.send(docs); if(docs){
if(docs.nextMoveTime <= Date.now()){
RoomModel.findOne({_id: req.session.roomId}, function (err, doc){
if (err) {
res.status(500).send(err)
} else {
const index = doc.players.findIndex( player => player.nowMoving === true);
const roomSize = doc.players.length;
doc.players[index].nowMoving = false;
if(index + 1 === roomSize){
doc.players[0].nowMoving = true;
}else{
doc.players[index + 1].nowMoving = true;
}
doc.nextMoveTime = Date.now()+30000;
RoomModel.findOneAndUpdate({_id: req.session.roomId}, doc, function(err, docs){
if(err){
res.status(500).send(err)
}else{
console.log(docs.nextMoveTime);
res.send(docs);
}
});
}
});
}else{
res.send(docs);
}
}
} }
} }
) )

View File

@ -13,7 +13,7 @@ const Gameboard = () => {
const [pawns, setPawns] = useState([]); const [pawns, setPawns] = useState([]);
const [players, setPlayers] = useState([]); const [players, setPlayers] = useState([]);
// Game logic data // Game logic data
const [rolledNumber, setRolledNumber] = useState(''); const [rolledNumber, setRolledNumber] = useState(null);
const [time, setTime] = useState(); const [time, setTime] = useState();
const [nowMoving, setNowMoving] = useState(false); const [nowMoving, setNowMoving] = useState(false);
const [started, setStarted] = useState(false); const [started, setStarted] = useState(false);
@ -28,10 +28,14 @@ const Gameboard = () => {
response.data.players.push({name: "...",}); response.data.players.push({name: "...",});
}; };
// Checks if client is currently moving player by session ID // Checks if client is currently moving player by session ID
if(id===response.data.players.find(player => player.nowMoving === true)?._id){ const nowMovingPlayer = response.data.players.find(player => player.nowMoving === true)
setNowMoving(true); if(nowMovingPlayer){
}else{ if(nowMovingPlayer._id === id){
setNowMoving(false); setNowMoving(true);
}else{
setRolledNumber(null);
setNowMoving(false);
}
} }
setPlayers(response.data.players); setPlayers(response.data.players);
setPawns(response.data.pawns); setPawns(response.data.pawns);

View File

@ -7,11 +7,10 @@ import four from '../../images/dice/4.png';
import five from '../../images/dice/5.png'; import five from '../../images/dice/5.png';
import six from '../../images/dice/6.png'; import six from '../../images/dice/6.png';
const Dice = ({rolledNumberCallback}) => { const Dice = ({ rolledNumberCallback, nowMoving }) => {
const [rolledNumber, setRolledNumber] = useState() const [rolledNumber, setRolledNumber] = useState()
const [images] = useState([one, two, three, four, five, six]); const [images] = useState([one, two, three, four, five, six]);
const handleRoll = () => { const handleRoll = () => {
axios.get('http://localhost:3000/game/roll').then(response => { axios.get('http://localhost:3000/game/roll').then(response => {
const utterance = new SpeechSynthesisUtterance(response.data.number); const utterance = new SpeechSynthesisUtterance(response.data.number);
speechSynthesis.speak(utterance); speechSynthesis.speak(utterance);
@ -21,9 +20,7 @@ const Dice = ({rolledNumberCallback}) => {
} }
return( return(
<div> <div>
{rolledNumber ? <img src={images[rolledNumber - 1]} width="100" height="100"/> : {rolledNumber ? <img src={images[rolledNumber - 1]} width="100" height="100"/> : nowMoving ? <button onClick={handleRoll}>Roll</button> : null }
<button onClick={handleRoll}>Roll</button> }
</div> </div>
) )
} }

View File

@ -2,7 +2,7 @@ import React from 'react';
import './NameContainer.css'; import './NameContainer.css';
const NameContainer = ( {player, time} ) => { const NameContainer = ( {player, time} ) => {
const getRemainingTime = () => { const getRemainingTime = () => {
return Math.floor((time - Date.now())/1000); return Math.round((time - Date.now())/1000)+1;
} }
return ( return (
<div className="name-container" <div className="name-container"