Commit Graph

182 Commits

Author SHA1 Message Date
Brian Fertig 53db492c83 feat(gofish): add animated card dealing and pair collection effects
- Implement round-robin card dealing animation from the pool to player hands.
- Add visual feedback for collecting pairs with card placement animations.
- Integrate fireworks particle effects when new pairs are formed.
- Update game logic to track paired cards for animation purposes.
- Improve game flow with staggered animations and delayed state updates.
2026-05-18 22:58:10 -06:00
Brian Fertig dcb8503219 refactor GoFishGame: align portrait/chip positions and add status text background 2026-05-18 22:32:19 -06:00
Brian Fertig d46de05b48 feat: add Go Fish card game with AI and UI
- Implement Go Fish game logic in GoFishLogic.js with state management, turn handling, and pair scoring
- Create GoFishAI.js with memory-based opponent that tracks card distribution and makes strategic decisions
- Build GoFishGame.js scene with Phaser UI including card rendering, seat layouts, animations, and game flow
- Register Go Fish in gameRegistry with 'cards' category and multiplayer support (1-4 players)
- Update GameMenuScene to display 'Cards' column for card games
- Wire up GoFishGame in GameRoomScene slug dispatch and main.js scene registry
2026-05-17 20:56:40 -06:00
Brian Fertig 356a2e98c5 feat: add Chinese Checkers game with 6-player AI and Phaser rendering
- Implement complete game logic (ChineseCheckersLogic.js) with hex board,
  move generation (steps/jump chains), and rule enforcement.
- Add single-ply heuristic AI (ChineseCheckersAI.js) that prioritizes pulling
  laggard pegs forward and entering the target triangle.
- Build Phaser-based UI (ChineseCheckersGame.js) with radial portraits,
  animated peg moves, and turn indicators.
- Register the game in the server registry and frontend routing.
2026-05-17 20:22:19 -06:00
Brian Fertig d9bf0432a6 Button Fix 2026-05-17 19:13:48 -06:00
Brian Fertig e171be7c10 fix: ensure modal buttons render above overlay and add Yatzi playfield background 2026-05-17 18:35:07 -06:00
Brian Fertig 366a6b095b feat: add background music system and improve card game interactions
- Introduce `MusicPlayer` class for in-game music with shuffle, skip, and mute controls
- Add `MenuMusic` utility for background music in menu scenes
- Load music tracks and metadata via `music.json`
- Implement drag-and-drop for SkipBo cards with visual feedback
- Add card flight animations for Phase 10 AI actions and player draws
- Update Phase 10 AI turn timing and reduce delays for smoother gameplay
2026-05-17 16:38:36 -06:00
Brian Fertig 731937bb82 refactor(Phase10Game): remove trailing whitespace and align object properties
- Remove trailing whitespace throughout the file.
- Align object properties and ternary operators for improved readability.
- Adjust button positioning offset in staging laydown UI.
2026-05-17 14:53:01 -06:00
Brian Fertig 238c744e93 refactor(phase10): manage staging buttons via dedicated lifecycle methods
- Extract button creation and destruction into `_createStagingButtons` and `_destroyStagingButtons`.
- Ensure buttons are properly destroyed when staging is cleared, submitted, or when turn conditions change.
- Prevent memory leaks and stale UI state by centralizing button lifecycle management.
- Add piece click sound effect in Backgammon on landing.
2026-05-17 14:44:45 -06:00
Brian Fertig 208645246c feat(phase10): replace static "Lay Down" button with interactive staging area
- Remove the hardcoded "Lay Down Phase" button and `findLaydown` auto-complete.
- Add a dynamic staging area at the bottom of the screen that renders empty slots for each phase group.
- Enable drag-and-drop of hand cards into staging slots to manually build phases.
- Add "Submit Phase" and "Clear" buttons to commit or reset the staged layout.
- Implement validation using `validateLaydown` before submitting.
- Fix Button hit area coordinates to ensure reliable click detection.
- Update status text rendering with a background graphic for better visibility.
2026-05-17 14:37:42 -06:00
Brian Fertig 3e64c2dafd refactor: adjust laid card positions for all players in Phase 10
- Update `laidStart` coordinates for top, bottom, left, and right slots to reposition laid cards
- Changes aim to improve card visibility and spacing during gameplay
2026-05-17 13:33:52 -06:00
Brian Fertig 7b817ea3a4 refactor: reposition player UI elements and add chip rotation for Phase 10
- Update portrait and nameLabel coordinates for top, bottom, left, and right slots to improve layout alignment
- Adjust chip positions for left and right slots to better fit the new UI design
- Add chipRotation property to left and right slot layouts to rotate phase chips appropriately
- Apply chip rotation in makeSeatChip when layout.chipRotation is defined
2026-05-17 13:27:21 -06:00
Brian Fertig a4c8f659ee feat: enable drag-to-discard and drag-to-hit in Phase10
- Allow dragging local hand cards to discard pile or valid hit targets.
- Add visual feedback with action highlights for discard (red) and hit (gold) zones.
- Handle drag state transitions, including settling cards and animating to target.
- Support 'skip' card drag with immediate modal opening.
- Refactor drop target detection and group center calculation for reuse.
- Adjust portrait and button positions for better layout alignment.
2026-05-17 13:15:51 -06:00
Brian Fertig d5a12ae559 feat: add drag-and-drop reordering for Phase10 hand cards
- Implement pointer-based drag handlers for Phase10 player hand.
- Add visual feedback including card scaling, rotation tilt, shadow, and slot indicators during drag.
- Reorder hand array and animate cards to new positions on drop.
- Prevent conflicts by ending active drags during scene transitions or state updates.
2026-05-17 12:59:57 -06:00
Brian Fertig 83ada10456 feat: add drag-and-drop reordering for Phase10 hand cards
- Implement pointer-based drag handlers for Phase10 player hand.
- Add visual feedback including card scaling, rotation tilt, shadow, and slot indicators during drag.
- Reorder hand array and animate cards to new positions on drop.
- Prevent conflicts by ending active drags during scene transitions or state updates.
2026-05-17 12:51:31 -06:00
Brian Fertig 5b65134ecc fix: reposition player chips in Phase10 slot layouts
- Update chip coordinates for bottom, top, left, and right slots to improve visual alignment and prevent overlap with other UI elements.
2026-05-17 12:35:02 -06:00
Brian Fertig fcfff62a15 feat: add sound effects, backgrounds, and enhance OpponentSelect UI
- Introduce `Sounds.js` utility and load new audio assets (dice, cards, chips, casino).
- Play appropriate sound effects in Backgammon, Blackjack, Holdem, Parchisi, Phase10, SkipBo, and Yatzi.
- Add `background-casino.png` and `background-room.png` to PreloadScene.
- Update OpponentSelectScene with new backgrounds, styled title/subtitle pills, and improved Start/Back buttons.
- Enhance opponent selection with gradient backgrounds and shadows via `applyOpponentStyle`.
- Implement `highlightTile` for better visual feedback in option selectors.
- Randomly select a card back for card games in OpponentSelectScene.
2026-05-17 12:34:46 -06:00
Brian Fertig 792fd35fd4 feat: implement auto-pass and draw handling for SkipBo
- Add `isPlayerStuck` and `applyAutoPass` logic to SkipBoLogic.
- Handle stuck players by automatically passing their turn.
- Detect draw conditions when all players are stuck consecutively.
- Update UI to display appropriate messages for auto-passes and draws.
- Pass subtitle text to `showGameOverPanel` for clearer win/loss/draw context.
2026-05-17 11:33:01 -06:00
Brian Fertig 70573a8ddd feat: deselect card on empty space click in SkipBo
- Add pointerdown listener to clear selectedSource and highlights when clicking empty space.
- Improves UX by allowing players to easily cancel card selection.
2026-05-17 11:23:07 -06:00
Brian Fertig a397302942 fix: refine card back rendering and update SkipBo layout coordinates
- Clip diagonal stripes in Phase10 and SkipBo card backs to prevent overflow.
- Adjust slot coordinates for stock, discards, hand, and labels in SkipBo.
- Add background rectangle to SkipBo stock count badge.
- Apply consistent code formatting (spacing) across SkipBoGame.
2026-05-17 11:12:55 -06:00
Brian Fertig 639b37c354 fix: adjust SkipBo slot coordinates for improved layout alignment
- Shift stock, discard, hand, portrait, and label positions for 'bottom' and 'top' slots in `slotLayout`.
- Ensures elements are correctly centered and spaced on the game board.
2026-05-17 10:49:16 -06:00
Brian Fertig 7c564ff629 feat: enhance card rendering with sprite fallbacks and outline rotation
- Update Phase10Game and SkipBoGame to use sprite textures for card backs when available, falling back to graphics drawing otherwise.
- Add outline rotation to SkipBo stock and discard piles for better visual alignment with card orientation.
2026-05-17 10:45:30 -06:00
Brian Fertig 84b5ada639 Added Data 2026-05-17 09:34:54 -06:00
Brian Fertig 1996e255c3 Added Skip Bo and Phase 10 and Yatzi. Updated Read Me. Added some sound effects. 2026-05-17 09:24:30 -06:00
Brian Fertig 56f1cdd752 feat: overhaul visual theme to vintage gold and update UI components
- Update color palette to warm vintage tones (gold, cream, dark brown) in config.js
- Apply 'Righteous' and 'Julius Sans One' fonts across all game scenes and UI components
- Redesign Parchisi game logic: switch to counter-clockwise movement, update entry/home positions, and add bonus chip indicator
- Improve Parchisi UI: reposition dice and buttons, add turn indicator movement with callbacks, and fix AI turn timing
- Enhance LandingScene with animated logo, avatar support, and improved layout
- Update Button component with rounded corners, shadow effects, and hover states
- Add background image and main title asset loading in PreloadScene
- Extend auth service to include displayName and avatarPath in session user data
- Update CSS to match new theme and load custom fonts
2026-05-16 21:04:16 -06:00
Brian Fertig d206cf6e5b feat: add single-player Parchisi game with AI
- Implement core Parchisi logic (ParchisiLogic.js) including board rules,
  move validation, and state management.
- Add Minimax-based AI (ParchisiAI.js) with heuristic evaluation for move
  selection, supporting up to 3 AI opponents.
- Create full Phaser game scene (ParchisiGame.js) with animated board,
  pawns, dice, and UI elements.
- Register new game assets (fonts, images, video animations).
- Update game registry to support 1-4 players with 3 AI opponents.
- Integrate Parchisi into the main scene loader and game room dispatch.
2026-05-16 18:45:41 -06:00
Brian Fertig 1f1897c8fe feat(blackjack): enhance betting UI with prompts and fix button interactions
- Add animated betting prompts with pulsing chip buttons and text overlay
- Implement delayed start for betting animations after 5 seconds
- Refactor chip buttons to use containers for proper hit detection
- Update Button component to ensure interactive events work on all child objects
- Improve betting UI visibility management with proper show/hide states
- Add depth management for betting prompts and chip buttons
2026-05-16 16:57:15 -06:00
Brian Fertig 48f7ade241 refactor blackjack hit animation to use individual card rendering
Refactors `animateSingleCard` to accept a specific card object instead of seat/index parameters, simplifying the logic for determining hand position and card index. Updates hit actions for both player and AI to animate the new card individually, revealing its face-up state at the destination upon completion. This replaces the previous bulk `renderSeatCards` call with a more granular visual update.
2026-05-16 16:14:46 -06:00
Brian Fertig 712956a841 feat: add Blackjack game and update game registration
- Introduce BlackjackGame as a new playable game in the client
- Register Blackjack in the server game registry with updated player limits (1-5 players, 0-4 opponents)
- Wire up Blackjack in main.js and GameRoomScene for routing
- Fix OpponentSelectScene to handle games with minOpponents=0
- Remove incomplete ParchisiLogic.js implementation
2026-05-16 15:54:39 -06:00
Brian Fertig 1d28f27a7d feat: update holdem logic and add parchisi game logic
- Update HoldemLogic.js: reduce blind level interval to 5 minutes, fix single-pot split logic, and apply minor formatting/whitespace changes.
- Add new ParchisiLogic.js file implementing pure game logic for the Parchisi board game, including path definition, player entry points, safe squares, and home columns.
- Add new assets: gerome.png, ethel video animations (happy/idle/upset), gerome/jeff video animations (happy/idle/upset), and update opponents.png/psd.
2026-05-16 14:15:10 -06:00
Brian Fertig 2c136e0567 Added several opponents and Texas Hold Em 2026-05-16 11:59:33 -06:00
Brian Fertig 96f4cedd3e First Commit 2026-05-15 19:35:16 -06:00