From 23657f6b0c3bb6f03dbe3be2611885f4252421d1 Mon Sep 17 00:00:00 2001 From: "Aaron D. Lee" Date: Mon, 26 Jan 2026 17:03:30 -0500 Subject: [PATCH] More host UI refinements, fun logo animations, etc. --- client/app.js | 50 ++++++++++++++++++++++++++++++++++++++-------- client/index.html | 4 ++-- client/style.css | 44 ++++++++++++++++++++++++++++++---------- server/games.db | Bin 17678336 -> 17903616 bytes 4 files changed, 78 insertions(+), 20 deletions(-) diff --git a/client/app.js b/client/app.js index 768386b..25fdc1b 100644 --- a/client/app.js +++ b/client/app.js @@ -840,6 +840,33 @@ class GolfGame { const previousPlayerId = oldState.current_player_id; const wasOtherPlayer = previousPlayerId && previousPlayerId !== this.playerId; + // Detect which pile opponent drew from and pulse it + if (wasOtherPlayer && discardChanged) { + const oldPlayer = oldState.players.find(p => p.id === previousPlayerId); + const newPlayer = newState.players.find(p => p.id === previousPlayerId); + + if (oldPlayer && newPlayer && oldDiscard) { + // Check if any of their cards now matches the old discard top + // This means they took from discard pile + let tookFromDiscard = false; + for (let i = 0; i < 6; i++) { + const newCard = newPlayer.cards[i]; + if (newCard?.face_up && + newCard.rank === oldDiscard.rank && + newCard.suit === oldDiscard.suit) { + tookFromDiscard = true; + break; + } + } + + // Pulse the appropriate pile + this.pulseDrawPile(tookFromDiscard ? 'discard' : 'deck'); + } else { + // No old discard or couldn't detect - assume deck + this.pulseDrawPile('deck'); + } + } + if (discardChanged && wasOtherPlayer) { // Check if the previous player actually SWAPPED (has a new face-up card) // vs just discarding the drawn card (no hand change) @@ -886,6 +913,17 @@ class GolfGame { // The swap animation handles showing the card at the correct position } + // Pulse animation on deck or discard pile to show where opponent drew from + pulseDrawPile(source) { + const pile = source === 'discard' ? this.discard : this.deck; + pile.classList.remove('draw-pulse'); + // Trigger reflow to restart animation + void pile.offsetWidth; + pile.classList.add('draw-pulse'); + // Remove class after animation completes + setTimeout(() => pile.classList.remove('draw-pulse'), 600); + } + // Fire animation for discard without swap (card goes deck -> discard) fireDiscardAnimation(discardCard) { const deckRect = this.deck.getBoundingClientRect(); @@ -1546,14 +1584,10 @@ class GolfGame { // Update player name in header (truncate if needed) const displayName = me.name.length > 12 ? me.name.substring(0, 11) + '…' : me.name; const checkmark = me.all_face_up ? ' ✓' : ''; - // Remove old crown if exists - const existingCrown = this.playerHeader.querySelector('.winner-crown'); - if (existingCrown) existingCrown.remove(); - // Set content - crown goes at the start - this.playerHeader.firstChild.textContent = displayName + checkmark; - if (isRoundWinner) { - this.playerHeader.insertAdjacentHTML('afterbegin', '👑'); - } + // Update player name span with crown if winner + const playerNameSpan = this.playerHeader.querySelector('.player-name'); + const crownHtml = isRoundWinner ? '👑' : ''; + playerNameSpan.innerHTML = crownHtml + displayName + checkmark; } // Update discard pile (skip if holding a drawn card) diff --git a/client/index.html b/client/index.html index 2e08275..20a6e04 100644 --- a/client/index.html +++ b/client/index.html @@ -11,7 +11,7 @@

🏌️ Golf

-

6-Card Golf Card Game

+

6-Card Golf Card Game

@@ -247,7 +247,7 @@
-

You0

+

You0

diff --git a/client/style.css b/client/style.css index 231fbbc..c771b78 100644 --- a/client/style.css +++ b/client/style.css @@ -985,6 +985,24 @@ input::placeholder { box-shadow: none; } +/* Pulse animation when opponent draws from a pile */ +#deck.draw-pulse, +#discard.draw-pulse { + animation: draw-pulse 0.6s ease-out; +} + +@keyframes draw-pulse { + 0% { + box-shadow: 0 0 0 0 rgba(244, 164, 96, 0.8); + } + 50% { + box-shadow: 0 0 0 12px rgba(244, 164, 96, 0.4); + } + 100% { + box-shadow: 0 0 0 20px rgba(244, 164, 96, 0); + } +} + /* Card flip animation for discard pile */ .card-flip-in { animation: cardFlipIn 0.5s ease-out; @@ -2555,19 +2573,25 @@ input::placeholder { color: rgba(255, 255, 255, 0.85); } -/* Rules link button in lobby */ -.btn-link { - background: transparent; - border: none; - color: #f4a460; - text-decoration: underline; +/* Rules button in lobby */ +.btn-rules { + background: rgba(244, 164, 96, 0.2); + border: 1px solid #f4a460; + color: #ffb366; cursor: pointer; - font-size: 0.95rem; - margin-bottom: 15px; + font-size: 0.65rem; + padding: 2px 8px; + margin-left: 8px; + vertical-align: middle; + border-radius: 3px; + font-weight: 600; + transition: background 0.2s, border-color 0.2s; } -.btn-link:hover { - color: #fbbf24; +.btn-rules:hover { + background: rgba(244, 164, 96, 0.35); + border-color: #ffb366; + color: #ffc880; } /* Select option styling in advanced options */ diff --git a/server/games.db b/server/games.db index 112acbbca43beea379ba2cf38e2a7a43fcc2aca5..b6df76a2a83ba9d66211f986b227b8c93c30e036 100644 GIT binary patch delta 57970 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 R@p%DyDhRvFPOB)E{Xg6pht&W8