var canPlayCard = false; function alertMessage(message) { let newHtml = ''; const alertId = `alert-${Date.now()}`; const fadeTime = 500; const duration = 5000; newHtml += `
`; $('#main-body').prepend(newHtml); const $notice = $(`#${alertId}`); $notice.fadeIn(fadeTime); setTimeout(function() { $notice.fadeOut(fadeTime, function() { $(this).parent().remove(); }); }, duration); } 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 newRoundEvent(eventData) { const trumpsuit = eventData.trumpsuit; const players = eventData.players; const tableElement = $('#score-table-body'); let tablehtml = `

Tricks Won

PLAYER
TRICKS
`; players.forEach( tablehtml += `
'${players}'
0
` ); tableElement.html(tablehtml); const trumpsuitClass = $('#trumpsuit'); trumpsuitClass.html(trumpsuit); } function trickEndEvent(eventData) { const winner = eventData.playerwon; const players = eventData.playersin; const tricklist = eventData.tricklist; let newHtml = ''; let tricktable = $('#score-table-body'); newHtml += `

Tricks Won

PLAYER
TRICKS
`; let playercounts = new Map(); players.forEach( player => { playercounts.set(player, 0) }); tricklist.forEach( player => { if ( player !== "Trick in Progress" && playercounts.has(player)) { playercounts.set(player, playercounts.get(player) + 1) } } ) const playerorder = players.sort((playerA, playerB) => { const countA = playercounts.get(playerA.name) || 0; const countB = playercounts.get(playerB.name) || 0; return countB - countA; }); playerorder.forEach( player => { newHtml += `
${player}
${playercounts.get(player)}
` }); tricktable.html(newHtml); } function newTrickEvent() { const firstCardContainer = $('#first-card-container'); const emptyHtml = ''; let newHtml = ''; newHtml += ` Blank Card `; firstCardContainer.html(newHtml); const playedCardsContainer = $('#trick-cards-container') playedCardsContainer.html(emptyHtml) } function requestCardEvent(eventData) { const player = eventData.player; const handElement = $('#card-slide') handElement.removeClass('inactive'); canPlayCard = true; } 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 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-text'); let currentPlayerName = currentPlayer.name; if (currentPlayer.dog) { currentPlayerName += " 🐶"; } currentPlayerNameContainer.text(currentPlayerName); if (nextPlayers.length === 0) { nextPlayerText.hide(); nextPlayersContainer.html(''); } else { console.log("Length"+nextPlayers.length); 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("NewRoundEvent", newRoundEvent) onEvent("TrickEndEvent", trickEndEvent) onEvent("NewTrickEvent", newTrickEvent) onEvent("RequestCardEvent", requestCardEvent) onEvent("CardPlayedEvent", receiveCardPlayedEvent) onEvent("LobbyUpdateEvent", receiveLobbyUpdateEvent) onEvent("LeftEvent", receiveGameStateChange) onEvent("KickEvent", receiveKickEvent) onEvent("SessionClosed", receiveSessionClosedEvent) onEvent("TurnEvent", receiveTurnEvent) globalThis.alertMessage = alertMessage