|
@@ -1,5 +1,10 @@
|
|
|
import { useEffect, useState } from "react";
|
|
|
-import { dispatch, useGameId, usePlayerName } from "../../../domain/gameStore";
|
|
|
+import {
|
|
|
+ dispatch,
|
|
|
+ useGameId,
|
|
|
+ useIsMuted,
|
|
|
+ usePlayerName,
|
|
|
+} from "../../../domain/gameStore";
|
|
|
import { usePlayers } from "../../../hooks/useGameInfo";
|
|
|
import styles from "./KillFeed.module.css";
|
|
|
import hitmarker from "../../../assets/hitmarker.svg";
|
|
@@ -12,6 +17,7 @@ import hitsound from "../../../assets/hitsound.wav";
|
|
|
const shownItems = new Set();
|
|
|
|
|
|
const KillFeed = () => {
|
|
|
+ const muted = useIsMuted();
|
|
|
const playerName = usePlayerName();
|
|
|
const gameId = useGameId();
|
|
|
const players = usePlayers();
|
|
@@ -49,19 +55,21 @@ const KillFeed = () => {
|
|
|
};
|
|
|
}, [shownItemsState, gameId, players, playerName]);
|
|
|
useEffect(() => {
|
|
|
- display.forEach(() => {
|
|
|
- const audio = new Audio(hitsound);
|
|
|
- audio.volume = 0.5;
|
|
|
- // delay up to half a second so overlapping sounds better
|
|
|
- const delayedPlay = () =>
|
|
|
- setTimeout(() => audio.play(), Math.random() * 500);
|
|
|
- audio.addEventListener("canplaythrough", delayedPlay);
|
|
|
- // clean up after ourselves in the hopes that the browser actually deletes this audio element
|
|
|
- audio.addEventListener("ended", () =>
|
|
|
- audio.removeEventListener("canplaythrough", delayedPlay)
|
|
|
- );
|
|
|
- });
|
|
|
- }, [display]);
|
|
|
+ if (!muted) {
|
|
|
+ display.forEach(() => {
|
|
|
+ const audio = new Audio(hitsound);
|
|
|
+ audio.volume = 0.5;
|
|
|
+ // delay up to half a second so overlapping sounds better
|
|
|
+ const delayedPlay = () =>
|
|
|
+ setTimeout(() => audio.play(), Math.random() * 500);
|
|
|
+ audio.addEventListener("canplaythrough", delayedPlay);
|
|
|
+ // clean up after ourselves in the hopes that the browser actually deletes this audio element
|
|
|
+ audio.addEventListener("ended", () =>
|
|
|
+ audio.removeEventListener("canplaythrough", delayedPlay)
|
|
|
+ );
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, [display, muted]);
|
|
|
return (
|
|
|
<>
|
|
|
{display.map(() => (
|