RaceMode.jsx 827 B

12345678910111213141516171819202122232425262728293031323334
  1. import { useEffect } from "react";
  2. import ms from "pretty-ms";
  3. import styles from "./GamePanel.module.css";
  4. import { useFirstSubmitter, useIsFaded } from "./hooks";
  5. import chime from "../../../assets/chime.mp3";
  6. const chimeAudio = new Audio(chime);
  7. chimeAudio.volume = 0.25;
  8. const RaceMode = ({ rate, cutoffTime }) => {
  9. const first = useFirstSubmitter(rate, cutoffTime);
  10. const faded = useIsFaded(first);
  11. const cutoff = first !== null;
  12. useEffect(() => {
  13. if (cutoff) {
  14. chimeAudio.play();
  15. }
  16. }, [cutoff]);
  17. if (!cutoff) {
  18. return <></>;
  19. }
  20. return (
  21. <div className={`${styles.cutoff} ${faded ? styles.hidden : ""}`}>
  22. <div className={styles.cutoffMessage}>
  23. You were cut off by {first}! Only {ms(cutoffTime * 1000)} left!
  24. </div>
  25. </div>
  26. );
  27. };
  28. export default RaceMode;