✨ (game): Added Clock Timer
Added clock timer displaying elapsed time since the beginning of the game
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
// ---------------------------------------------------------------------------------------------------------------------
|
||||
//! Imports
|
||||
// ---------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
// ------------------------------------------------------ React --------------------------------------------------------
|
||||
import { useEffect, useState } from 'react';
|
||||
// ---------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
// ----------------------------------------------------- Assets --------------------------------------------------------
|
||||
import Clock from '../../assets/clock';
|
||||
import './styles.scss';
|
||||
// ---------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
const Timer = () => {
|
||||
const [startedTime] = useState<number>(Date.now());
|
||||
const [displayedTime, setDisplayedTime] = useState<string>('00:00');
|
||||
|
||||
useEffect(() => {
|
||||
const interval = setInterval(() => {
|
||||
const elapsedTime = (Date.now() - startedTime) / 1000;
|
||||
|
||||
const seconds = Math.floor(elapsedTime % 60);
|
||||
const strSeconds = seconds < 10 ? `0${seconds}` : `${seconds}`;
|
||||
|
||||
const minutes = Math.floor(elapsedTime / 60);
|
||||
const strMinute = minutes < 10 ? `0${minutes}` : `${minutes}`;
|
||||
|
||||
setDisplayedTime(`${strMinute}:${strSeconds}`);
|
||||
}, 500);
|
||||
|
||||
return () => clearInterval(interval);
|
||||
}, [startedTime]);
|
||||
|
||||
return (
|
||||
<div className='timer'>
|
||||
<Clock />
|
||||
<p>{displayedTime}</p>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Timer;
|
||||
@@ -0,0 +1,11 @@
|
||||
.timer {
|
||||
display: grid;
|
||||
grid-template-columns: 25px 40px;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 10px;
|
||||
border-radius: 5px;
|
||||
background-color: #ffdccb;
|
||||
font-weight: 600;
|
||||
color: #f39440;
|
||||
}
|
||||
Reference in New Issue
Block a user