function receiveHandEvent(eventData) { //Data const dog = eventData.dog; const hand = eventData.hand; const handElement = $('#card-slide'); handElement.addClass('ingame-cards-slide') let newHtml = ''; //Build Hand Container hand.forEach((card) => { //Data const idx = card.idx const cardS = card.card; const cardHtml = `
${cardS}
`; newHtml += cardHtml; }); //Build dog if needed if (dog) { newHtml += `
`; } handElement.html(newHtml); } function receiveGameStateChange(eventData) { const content = eventData.content; const title = eventData.title || 'Knockout Whist'; const url = eventData.url || null; exchangeBody(content, title, url); } function receiveCardPlayedEvent(eventData) { const firstCard = eventData.firstCard; const playedCards = eventData.playedCards; const trickCardsContainer = $('#trick-cards-container'); const firstCardContainer = $('#first-card-container') let trickHTML = ''; playedCards.forEach(cardCombo => { trickHTML += `
${cardCombo.cardId}
${cardCombo.player}
`; }); trickCardsContainer.html(trickHTML); let altText; let imageSrc; if (firstCard === "BLANK") { imageSrc = "/assets/images/cards/1B.png"; altText = "Blank Card"; } else { imageSrc = `/assets/images/cards/${firstCard}.png`; altText = `Card ${firstCard}`; } const newFirstCardHTML = ` ${altText} `; firstCardContainer.html(newFirstCardHTML); } function receiveTurnEvent(eventData) { const currentPlayer = eventData.currentPlayer; const nextPlayers = eventData.nextPlayers; const currentPlayerNameContainer = $('#current-player-name'); const nextPlayersContainer = $('#next-players-container'); const nextPlayerText = $('#next-players-section'); let currentPlayerName = currentPlayer.name; if (currentPlayer.dog) { currentPlayerName += " 🐶"; } currentPlayerNameContainer.text(currentPlayerName); if (nextPlayers.length === 0) { nextPlayerText.hide(); nextPlayersContainer.html(''); } else { nextPlayerText.show(); let nextPlayersHtml = ''; nextPlayers.forEach((player) => { let playerName = player.name; if (player.dog) { playerName += " 🐶"; } nextPlayersHtml += `

${playerName}

`; }); nextPlayersContainer.html(nextPlayersHtml); } } function receiveLobbyUpdateEvent(eventData) { const host = eventData.host; const maxPlayers = eventData.maxPlayers; const players = eventData.players; const lobbyPlayersContainer = $('#players'); const playerAmountBox = $('#playerAmount'); let newHtml = '' if (host) { players.forEach(user => { const inner = user.self ? `
${user.name} (You)
Remove` : `
${user.name}
Remove
` newHtml += `
Profile
${inner}
` }) } else { players.forEach(user => { const inner = user.self ? `
${user.name} (You)
` : `
${user.name}
` newHtml += `
Profile
${inner}
` }) } lobbyPlayersContainer.html(newHtml); playerAmountBox.text(`Players: ${players.length} / ${maxPlayers}`); } function receiveKickEvent(eventData) { $('#kickedModal').modal({ backdrop: 'static', keyboard: false }).modal('show'); setTimeout(() => { receiveGameStateChange(eventData) }, 5000); } function receiveSessionClosedEvent(eventData) { $('#sessionClosed').modal({ backdrop: 'static', keyboard: false }).modal('show'); setTimeout(() => { receiveGameStateChange(eventData) }, 5000); } function receiveTurnEvent(eventData) { const currentPlayer = eventData.currentPlayer; const nextPlayers = eventData.nextPlayers; const currentPlayerNameContainer = $('#current-player-name'); const nextPlayersContainer = $('#next-players-container'); const nextPlayerText = $('#next-players-section'); let currentPlayerName = currentPlayer.name; if (currentPlayer.dog) { currentPlayerName += " 🐶"; } currentPlayerNameContainer.text(currentPlayerName); if (nextPlayers.length === 0) { nextPlayerText.hide(); nextPlayersContainer.html(''); } else { nextPlayerText.show(); let nextPlayersHtml = ''; nextPlayers.forEach((player) => { let playerName = player.name; if (player.dog) { playerName += " 🐶"; } nextPlayersHtml += `

${playerName}

`; }); nextPlayersContainer.html(nextPlayersHtml); } } onEvent("ReceivedHandEvent", receiveHandEvent) onEvent("GameStateChangeEvent", receiveGameStateChange) onEvent("CardPlayedEvent", receiveCardPlayedEvent) onEvent("LobbyUpdateEvent", receiveLobbyUpdateEvent) onEvent("LeftEvent", receiveGameStateChange) onEvent("KickEvent", receiveKickEvent) onEvent("SessionClosed", receiveSessionClosedEvent) onEvent("TurnEvent", receiveTurnEvent)