added timer
This commit is contained in:
parent
3d79bf66df
commit
57398bd46c
@ -18,7 +18,29 @@ module.exports = (io, socket) => {
|
|||||||
socket.emit('game:roll', rolledNumber);
|
socket.emit('game:roll', rolledNumber);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
const skip = () => {
|
||||||
|
RoomModel.findOne({ _id: req.session.roomId }, function (err, room) {
|
||||||
|
if (room.nextMoveTime >= Date.now()) return err;
|
||||||
|
// Updating moving player
|
||||||
|
const playerIndex = room.players.findIndex(player => player.nowMoving === true);
|
||||||
|
const roomSize = room.players.length;
|
||||||
|
room.players[playerIndex].nowMoving = false;
|
||||||
|
if (playerIndex + 1 === roomSize) {
|
||||||
|
room.players[0].nowMoving = true;
|
||||||
|
} else {
|
||||||
|
room.players[playerIndex + 1].nowMoving = true;
|
||||||
|
}
|
||||||
|
// Updating timer
|
||||||
|
room.nextMoveTime = Date.now() + 15000;
|
||||||
|
// Pushing above data to database
|
||||||
|
RoomModel.findOneAndUpdate({ _id: req.session.roomId }, room, err => {
|
||||||
|
if (err) return err;
|
||||||
|
io.to(req.session.roomId.toString()).emit('room:data', JSON.stringify(room));
|
||||||
|
socket.emit('game:move');
|
||||||
|
socket.emit('game:skip');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
const move = ({ pawnId }) => {
|
const move = ({ pawnId }) => {
|
||||||
RoomModel.findOne({ _id: req.session.roomId }, function (err, room) {
|
RoomModel.findOne({ _id: req.session.roomId }, function (err, room) {
|
||||||
if (!room) return err;
|
if (!room) return err;
|
||||||
@ -45,12 +67,13 @@ module.exports = (io, socket) => {
|
|||||||
// Pushing above data to database
|
// Pushing above data to database
|
||||||
RoomModel.findOneAndUpdate({ _id: req.session.roomId }, room, (err, updatedRoom) => {
|
RoomModel.findOneAndUpdate({ _id: req.session.roomId }, room, (err, updatedRoom) => {
|
||||||
if (!updatedRoom) return err;
|
if (!updatedRoom) return err;
|
||||||
io.to(req.session.roomId.toString()).emit('room:data', JSON.stringify(updatedRoom));
|
io.to(req.session.roomId.toString()).emit('room:data', JSON.stringify(room));
|
||||||
socket.emit('room:move');
|
socket.emit('game:move');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
socket.on('game:roll', roll);
|
socket.on('game:roll', roll);
|
||||||
socket.on('game:move', move);
|
socket.on('game:move', move);
|
||||||
|
socket.on('game:skip', skip);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,16 +1,30 @@
|
|||||||
import React from 'react';
|
import React, { useState, useEffect, useContext } from 'react';
|
||||||
|
import { SocketContext } from '../../App';
|
||||||
const NameContainer = ({ player, time, color }) => {
|
const NameContainer = ({ player, time, color }) => {
|
||||||
const getRemainingTime = () => {
|
const [remainingTime, setRemainingTime] = useState();
|
||||||
return Math.round((time - Date.now()) / 1000) + 1;
|
const socket = useContext(SocketContext);
|
||||||
|
|
||||||
|
const countdown = () => {
|
||||||
|
if (remainingTime <= 0) {
|
||||||
|
socket.emit('game:skip');
|
||||||
|
} else {
|
||||||
|
setRemainingTime(Math.ceil((time - Date.now()) / 1000));
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
useEffect(() => {
|
||||||
|
socket.on('game:skip', () => {
|
||||||
|
setRemainingTime(15);
|
||||||
|
});
|
||||||
|
const interval = setInterval(countdown, 1000);
|
||||||
|
return () => clearInterval(interval);
|
||||||
|
}, [countdown]);
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={`name-container ${color}`}
|
className={`name-container ${color}`}
|
||||||
style={player.ready ? { backgroundColor: color } : { backgroundColor: 'lightgrey' }}
|
style={player.ready ? { backgroundColor: color } : { backgroundColor: 'lightgrey' }}
|
||||||
>
|
>
|
||||||
{player.name}
|
<p>{player.name}</p>
|
||||||
{player.nowMoving ? <div className='timer'> {getRemainingTime()} </div> : null}
|
{player.nowMoving ? <div className='timer'> {remainingTime} </div> : null}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -36,17 +36,14 @@ canvas {
|
|||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
color: white;
|
color: white;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
display: flex;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
}
|
||||||
.timer {
|
.timer {
|
||||||
background-color: darkblue;
|
background-color: darkblue;
|
||||||
color: white;
|
color: white;
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -24px;
|
bottom: 60px;
|
||||||
left: 32px;
|
left: 82px;
|
||||||
border: 1px solid white;
|
border: 1px solid white;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
width: 30px;
|
width: 30px;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user