added losing move
This commit is contained in:
parent
b9c6db9586
commit
981b5fd032
@ -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,8 +85,38 @@ router.get('/', function(req,res){
|
|||||||
console.log(err)
|
console.log(err)
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
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);
|
res.send(docs);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
res.send(docs);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
|
|||||||
@ -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,11 +28,15 @@ 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)
|
||||||
|
if(nowMovingPlayer){
|
||||||
|
if(nowMovingPlayer._id === id){
|
||||||
setNowMoving(true);
|
setNowMoving(true);
|
||||||
}else{
|
}else{
|
||||||
|
setRolledNumber(null);
|
||||||
setNowMoving(false);
|
setNowMoving(false);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
setPlayers(response.data.players);
|
setPlayers(response.data.players);
|
||||||
setPawns(response.data.pawns);
|
setPawns(response.data.pawns);
|
||||||
setTime(response.data.nextMoveTime);
|
setTime(response.data.nextMoveTime);
|
||||||
|
|||||||
@ -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>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user