diff --git a/client/public/index.html b/client/public/index.html
index aa069f2..5bcff27 100644
--- a/client/public/index.html
+++ b/client/public/index.html
@@ -25,6 +25,8 @@
Learn how to configure a non-root public URL by running `npm run build`.
-->
React App
+
diff --git a/client/src/components/Game.js b/client/src/components/Game.js
index 2ec17e0..406db10 100644
--- a/client/src/components/Game.js
+++ b/client/src/components/Game.js
@@ -67,6 +67,8 @@ const Game = (props) => {
const [drawCardPile, setDrawCardPile] = useState([])
const [isUnoButtonPressed, setUnoButtonPressed] = useState(false)
+ const [isSoundMuted, setSoundMuted] = useState(false)
+ const [isMusicMuted, setMusicMuted] = useState(false)
const [playUnoSound] = useSound(unoSound)
const [playShufflingSound] = useSound(shufflingSound)
@@ -135,6 +137,7 @@ const Game = (props) => {
socket.on('updateGameState', ({ gameOver, winner, turn, player1Deck, player2Deck, currentColor, currentNumber, playedCardsPile, drawCardPile }) => {
gameOver && setGameOver(gameOver)
+ gameOver===true && playGameOverSound()
winner && setWinner(winner)
turn && setTurn(turn)
player1Deck && setPlayer1Deck(player1Deck)
@@ -197,7 +200,7 @@ const Game = (props) => {
updatedPlayer1Deck.push(drawCard1)
updatedPlayer1Deck.push(drawCard2)
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player1Deck),
@@ -211,7 +214,7 @@ const Game = (props) => {
})
}
else {
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player1Deck),
@@ -243,7 +246,7 @@ const Game = (props) => {
updatedPlayer2Deck.push(drawCard1)
updatedPlayer2Deck.push(drawCard2)
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player2Deck),
@@ -257,7 +260,7 @@ const Game = (props) => {
})
}
else {
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player2Deck),
@@ -294,7 +297,7 @@ const Game = (props) => {
updatedPlayer1Deck.push(drawCard1)
updatedPlayer1Deck.push(drawCard2)
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player1Deck),
@@ -308,7 +311,7 @@ const Game = (props) => {
})
}
else {
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player1Deck),
@@ -339,7 +342,7 @@ const Game = (props) => {
updatedPlayer2Deck.push(drawCard1)
updatedPlayer2Deck.push(drawCard2)
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player2Deck),
@@ -353,7 +356,7 @@ const Game = (props) => {
})
}
else {
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player2Deck),
@@ -600,7 +603,7 @@ const Game = (props) => {
updatedPlayer1Deck.push(drawCard1X)
updatedPlayer1Deck.push(drawCard2X)
- playDraw2CardSound()
+ !isSoundMuted && playDraw2CardSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player1Deck),
@@ -614,7 +617,7 @@ const Game = (props) => {
})
}
else {
- playDraw2CardSound()
+ !isSoundMuted && playDraw2CardSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player1Deck),
@@ -651,7 +654,7 @@ const Game = (props) => {
updatedPlayer2Deck.push(drawCard1X)
updatedPlayer2Deck.push(drawCard2X)
- playDraw2CardSound()
+ !isSoundMuted && playDraw2CardSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player2Deck),
@@ -665,7 +668,7 @@ const Game = (props) => {
})
}
else {
- playDraw2CardSound()
+ !isSoundMuted && playDraw2CardSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player2Deck),
@@ -707,7 +710,7 @@ const Game = (props) => {
updatedPlayer1Deck.push(drawCard1X)
updatedPlayer1Deck.push(drawCard2X)
- playDraw2CardSound()
+ !isSoundMuted && playDraw2CardSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player1Deck),
@@ -721,7 +724,7 @@ const Game = (props) => {
})
}
else {
- playDraw2CardSound()
+ !isSoundMuted && playDraw2CardSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player1Deck),
@@ -758,7 +761,7 @@ const Game = (props) => {
updatedPlayer2Deck.push(drawCard1X)
updatedPlayer2Deck.push(drawCard2X)
- playDraw2CardSound()
+ !isSoundMuted && playDraw2CardSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player2Deck),
@@ -772,7 +775,7 @@ const Game = (props) => {
})
}
else {
- playDraw2CardSound()
+ !isSoundMuted && playDraw2CardSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player2Deck),
@@ -817,7 +820,7 @@ const Game = (props) => {
updatedPlayer1Deck.push(drawCard1)
updatedPlayer1Deck.push(drawCard2)
- playWildCardSound()
+ !isSoundMuted && playWildCardSound()
//send new state to server
socket.emit('updateGameState', {
gameOver: checkGameOver(player1Deck),
@@ -831,7 +834,7 @@ const Game = (props) => {
})
}
else {
- playWildCardSound()
+ !isSoundMuted && playWildCardSound()
//send new state to server
socket.emit('updateGameState', {
@@ -865,7 +868,7 @@ const Game = (props) => {
const updatedPlayer2Deck = [...player2Deck.slice(0, removeIndex), ...player2Deck.slice(removeIndex + 1)]
updatedPlayer2Deck.push(drawCard1)
updatedPlayer2Deck.push(drawCard2)
- playWildCardSound()
+ !isSoundMuted && playWildCardSound()
//send new state to server
socket.emit('updateGameState', {
@@ -880,7 +883,7 @@ const Game = (props) => {
})
}
else {
- playWildCardSound()
+ !isSoundMuted && playWildCardSound()
//send new state to server
socket.emit('updateGameState', {
@@ -926,7 +929,7 @@ const Game = (props) => {
updatedPlayer1Deck.push(drawCard1X)
updatedPlayer1Deck.push(drawCard2X)
- playDraw4CardSound()
+ !isSoundMuted && playDraw4CardSound()
//send new state to server
socket.emit('updateGameState', {
@@ -941,7 +944,7 @@ const Game = (props) => {
})
}
else {
- playDraw4CardSound()
+ !isSoundMuted && playDraw4CardSound()
//send new state to server
socket.emit('updateGameState', {
@@ -970,7 +973,7 @@ const Game = (props) => {
const drawCard3 = copiedDrawCardPileArray.pop()
const drawCard4 = copiedDrawCardPileArray.pop()
//then update currentColor and currentNumber - turn will remain same
- playDraw4CardSound()
+ !isSoundMuted && playDraw4CardSound()
//send new state to server
socket.emit('updateGameState', {
@@ -996,7 +999,7 @@ const Game = (props) => {
updatedPlayer2Deck.push(drawCard1X)
updatedPlayer2Deck.push(drawCard2X)
- playDraw4CardSound()
+ !isSoundMuted && playDraw4CardSound()
//send new state to server
socket.emit('updateGameState', {
@@ -1011,7 +1014,7 @@ const Game = (props) => {
})
}
else {
- playDraw4CardSound()
+ !isSoundMuted && playDraw4CardSound()
//send new state to server
socket.emit('updateGameState', {
@@ -1046,7 +1049,7 @@ const Game = (props) => {
let numberOfDrawnCard = drawCard.charAt(0)
if(colorOfDrawnCard === currentColor && (drawCard === 'skipR' || drawCard === 'skipG' || drawCard === 'skipB' || drawCard === 'skipY')) {
alert(`You drew ${drawCard}. It was played for you.`)
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
playedCardsPile: [...playedCardsPile.slice(0, playedCardsPile.length), drawCard, ...playedCardsPile.slice(playedCardsPile.length)],
@@ -1063,7 +1066,7 @@ const Game = (props) => {
//pull out last two elements from it
const drawCard1 = copiedDrawCardPileArray.pop()
const drawCard2 = copiedDrawCardPileArray.pop()
- playDraw2CardSound()
+ !isSoundMuted && playDraw2CardSound()
//send new state to server
socket.emit('updateGameState', {
playedCardsPile: [...playedCardsPile.slice(0, playedCardsPile.length), drawCard, ...playedCardsPile.slice(playedCardsPile.length)],
@@ -1077,7 +1080,7 @@ const Game = (props) => {
alert(`You drew ${drawCard}. It was played for you.`)
//ask for new color
const newColor = prompt('Enter first letter of new color in uppercase (R/G/B/Y)')
- playWildCardSound()
+ !isSoundMuted && playWildCardSound()
//send new state to server
socket.emit('updateGameState', {
turn: 'Player 2',
@@ -1099,7 +1102,7 @@ const Game = (props) => {
const drawCard2 = copiedDrawCardPileArray.pop()
const drawCard3 = copiedDrawCardPileArray.pop()
const drawCard4 = copiedDrawCardPileArray.pop()
- playDraw4CardSound()
+ !isSoundMuted && playDraw4CardSound()
//send new state to server
socket.emit('updateGameState', {
playedCardsPile: [...playedCardsPile.slice(0, playedCardsPile.length), drawCard, ...playedCardsPile.slice(playedCardsPile.length)],
@@ -1112,7 +1115,7 @@ const Game = (props) => {
//if not action card - check if drawn card is playable
else if(numberOfDrawnCard === currentNumber || colorOfDrawnCard === currentColor) {
alert(`You drew ${drawCard}. It was played for you.`)
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
turn: 'Player 2',
@@ -1124,8 +1127,7 @@ const Game = (props) => {
}
//else add the drawn card to player1's deck
else {
- alert(`You drew ${drawCard}.`)
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
turn: 'Player 2',
@@ -1145,7 +1147,7 @@ const Game = (props) => {
let numberOfDrawnCard = drawCard.charAt(0)
if(colorOfDrawnCard === currentColor && (drawCard === 'skipR' || drawCard === 'skipG' || drawCard === 'skipB' || drawCard === 'skipY')) {
alert(`You drew ${drawCard}. It was played for you.`)
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
playedCardsPile: [...playedCardsPile.slice(0, playedCardsPile.length), drawCard, ...playedCardsPile.slice(playedCardsPile.length)],
@@ -1162,7 +1164,7 @@ const Game = (props) => {
//pull out last two elements from it
const drawCard1 = copiedDrawCardPileArray.pop()
const drawCard2 = copiedDrawCardPileArray.pop()
- playDraw2CardSound()
+ !isSoundMuted && playDraw2CardSound()
//send new state to server
socket.emit('updateGameState', {
playedCardsPile: [...playedCardsPile.slice(0, playedCardsPile.length), drawCard, ...playedCardsPile.slice(playedCardsPile.length)],
@@ -1176,7 +1178,7 @@ const Game = (props) => {
alert(`You drew ${drawCard}. It was played for you.`)
//ask for new color
const newColor = prompt('Enter first letter of new color in uppercase (R/G/B/Y)')
- playWildCardSound()
+ !isSoundMuted && playWildCardSound()
//send new state to server
socket.emit('updateGameState', {
turn: 'Player 1',
@@ -1198,7 +1200,7 @@ const Game = (props) => {
const drawCard2 = copiedDrawCardPileArray.pop()
const drawCard3 = copiedDrawCardPileArray.pop()
const drawCard4 = copiedDrawCardPileArray.pop()
- playDraw4CardSound()
+ !isSoundMuted && playDraw4CardSound()
//send new state to server
socket.emit('updateGameState', {
playedCardsPile: [...playedCardsPile.slice(0, playedCardsPile.length), drawCard, ...playedCardsPile.slice(playedCardsPile.length)],
@@ -1211,7 +1213,7 @@ const Game = (props) => {
//if not action card - check if drawn card is playable
else if(numberOfDrawnCard === currentNumber || colorOfDrawnCard === currentColor) {
alert(`You drew ${drawCard}. It was played for you.`)
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
turn: 'Player 1',
@@ -1223,8 +1225,7 @@ const Game = (props) => {
}
//else add the drawn card to player2's deck
else {
- alert(`You drew ${drawCard}.`)
- playShufflingSound()
+ !isSoundMuted && playShufflingSound()
//send new state to server
socket.emit('updateGameState', {
turn: 'Player 1',
@@ -1242,6 +1243,10 @@ const Game = (props) => {