Commit Graph

242 Commits

Author SHA1 Message Date
Brian Fertig 8f1e3faaec Labyrinth Initial framework and basic animation. 2026-06-06 16:00:49 -06:00
Brian Fertig ab84b32f1d Polish on Forbidden Island 2026-06-06 14:24:54 -06:00
Brian Fertig 88dcaf8e15 Refine audio feedback and add AI intro speech for Forbidden Island
- Replace generic card/place SFX with thematic water sounds (splash, sink, raise, dry)
- Preload new water sound effects in PreloadScene
- Introduce AI character speech via SpeechQueue on character reveal
- Clear speech queue when advancing past character selection
2026-06-06 12:45:26 -06:00
Brian Fertig 9d8366ac5b Improve trade modal layout and card draw animations
- Make trade modal panel height dynamic; wrap hand cards to second row if >4
- Refactor card fly animations to use Containers for correct border scaling
- Animate AI partner card placement to HUD thumbnails
- Add Waters Rise animation: card flies to meter, triggers water rise with segment fade and marker slide
2026-06-06 12:12:45 -06:00
Brian Fertig 49761bf264 feat(forbiddenisland): overhaul UI, animations, and card trading mechanics
- Introduce animated intro sequence, player role intros, and deck count displays.
- Replace direct treasure giving with a new Trade Modal for swapping cards between players.
- Add smooth Phaser animations for pawn movement, shore-ups, flood/treasure card draws, and card swaps.
- Improve state management during animations using immutable cloning and peek functions (`peekFloodDraw`, `peekTreasureDraw`).
- Update role definitions with detailed descriptions and remove 'messenger' from `ROLE_KEYS`.
- Change default difficulty to 'novice'.
2026-06-06 11:47:45 -06:00
Brian Fertig 9cb05f5f44 Crossword Changes and added Tectonic 2026-06-05 23:24:11 -06:00
Brian Fertig e07f48a85c profile location adjustments in Ticket to Ride. 2026-06-05 11:53:57 -06:00
Brian Fertig 25ccdb5da9 feat(splendor): add noble claiming animations, token interactions, and UI polish
- Implement cinematic noble claiming animation with fireworks and sound, shrinking to panel thumbnails
- Add hover ring highlight and gem sound effects for token selection zones
- Render claimed noble thumbnails in player panels with dynamic positioning
- Trigger happy emotion on player portraits when purchasing point cards
- Relocate Leave button to bottom-right and remove unused playIntro flag
- Exclude Splendor from card back selection in OpponentSelectScene
2026-06-04 22:32:33 -06:00
Brian Fertig aa6fce0f6c feat(splendor): improve reserve card hover preview, dynamic control bar, and sound effects
- Add 500ms hover-intent preview for reserve cards, temporarily hiding player portraits
- Dynamically calculate control bar panel height based on player count
- Adjust reserve button positioning and increase control bar background opacity
- Reposition turn label and remove redundant win condition subtitle
- Integrate audio feedback for card interactions (ui-attach) and achievement animations (firework)
2026-06-04 21:11:04 -06:00
Brian Fertig 6abcbfa32b feat(splendor): add buy/reserve card animations and bought-card thumbnails
- Implement card fly-to-center animation with fireworks for buy and reserve actions
- Add persistent bought-card thumbnails in player panels with automatic wrapping
- Build full card containers (costs, points, gem badges) for smooth scaling transitions
- Suppress reserve pills and buy animations in UI until transitions complete
- Apply animation triggers consistently for both human and AI turns
2026-06-04 20:02:42 -06:00
Brian Fertig 5eb5c71ebf refine ui rendering and gem token layout
- Add `regMaskedImg` helper for rounded-rectangle image masking
- Update card, noble, and deck rendering to layer masks and borders correctly
- Adjust gem token sizing, spacing, and positioning for improved alignment
- Standardize visual constants and improve overall UI polish
2026-06-04 19:21:17 -06:00
Brian Fertig e2b28b6c0e feat(splendor): add player portraits and refine panel UI
- Introduce portrait rendering for players and opponents via `buildPortraits`.
- Compact and right-align gem cells with updated sizing, spacing, and smaller fonts.
- Add divider and total row displaying combined bonus and token counts.
- Increase panel background opacity and fix reserved card interactivity checks.
2026-06-04 18:55:01 -06:00
Brian Fertig 9b7bbe55c4 Updated Splendor Cards 2026-06-04 17:26:17 -06:00
Brian Fertig 4e30e75987 feat(splendor): animate gem takes and refine bank UI layout
- Add a dark background panel behind the token bank for better visual contrast.
- Introduce `animGemToSelection` and `animAITake` to animate gems flying from the bank to the selection bar and player panels.
- Update `onTokenClick` and `confirmTake` to trigger gem animations for human players.
- Integrate gem take animations into the AI turn sequence.
- Add `playerGemPos`/`humanGemPos` helpers for dynamic gem coordinate calculation.
- Adjust token count text, alignment, and depth layers in `drawBank` for cleaner rendering.
2026-06-02 22:18:34 -06:00
Brian Fertig dd607a5815 feat(splendor): integrate gem spritesheet for polished token and badge rendering
- Add `splendor-gems` spritesheet (6 frames, 64×64) for gem icons.
- Introduce `gemFrame` helper to map gem colors to spritesheet indices.
- Update gem rendering in player bars, card badges, and cost pips to use sprites when available.
- Add `hasGems` flag to gracefully fallback to vector circles when art is missing.
- Register new asset in PreloadScene.
2026-06-02 21:56:03 -06:00
Brian Fertig e60387ec7c feat(blokus/splendor): refine tray UI and upgrade splendor spritesheet rendering
- Blokus: Adjust tray coordinates and add a background panel for improved layout separation.
- Splendor: Integrate a 28-frame spritesheet for development cards, nobles, and deck backs.
- Refactor frame mapping to calculate indices dynamically based on tier and bonus color.
- Unify card rendering pipeline: draw tinted background, overlay spritesheet art (when available), then render vector overlays.
- Add hover preview panel for reserved cards.
- Document spritesheet layout and update preload scene asset comments.
2026-06-02 21:35:14 -06:00
Brian Fertig 04a32cebcd Background and playfield changes 2026-06-02 14:30:13 -06:00
Brian Fertig 2f7b2e183e feat(blokus): animate AI piece placement from portrait to board
Introduce a visual transition where AI pieces fly from their opponent
portrait to the board upon placement. Human player placements remain
instant with a flash effect. Implemented animateAIPiece to handle the
tweening and temporary graphics rendering.
2026-06-02 14:25:13 -06:00
Brian Fertig 5c88ab7986 feat(blokus): add player and opponent portraits to score panels
Integrate portrait avatars into the Blokus score panels by increasing
panel height and adjusting the layout. Added portrait graphics with
colored strokes and repositioned text elements to accommodate the new
visual components.
2026-06-02 14:17:40 -06:00
Brian Fertig aa920fddfb ui: reposition control buttons in BlokusGame
Adjust button coordinates in buildControls() to update the control tray layout.
Pass, Rotate, and Flip buttons are moved lower and centered relative to the tray,
while New and Leave buttons are positioned at the bottom right.
2026-06-02 14:05:41 -06:00
Brian Fertig 6a33bf500b feat: add Splendor board game support
- Register Splendor in server game registry with metadata
- Import and register SplendorGame in frontend main.js
- Map 'splendor' slug to SplendorGame in GameRoomScene
- Preload splendor-cards spritesheet in PreloadScene
- Update game-icons assets for the new game
2026-06-02 12:12:20 -06:00
Brian Fertig 7858263c22 feat(solitaire): add card deal/flip animations and auto-finish for Klondike
- Animate initial card deal with staggered fly-in effect and block input during playback
- Replace instant card placement with flip-and-fly animation for stock draws across variants
- Add automatic foundation completion when Klondike is effectively won (stock empty, all face-up, foundation-only path exists)
- Adjust Sudoku notebook spiral binding to top-only and refine title positioning
2026-06-02 11:32:13 -06:00
Brian Fertig 6fb924eb23 feat: refactor Solitaire Tour drag-and-drop and implement Three Shuffles variant
- Extract generic drag-and-drop logic to support both Klondike and new Three Shuffles leg
- Implement "Three Shuffles and a Draw" game rules: build tableau down in suit, shuffle up to 2x, then draw one buried card
- Update Three Shuffles engine to handle pile-based tableau and foundation clearing
- Add UI controls for shuffle and draw actions in the new leg
2026-06-02 00:14:40 -06:00
Brian Fertig efb8842368 feat: add Forbidden Island card spritesheet and register Solitaire Tour game
- Implement visual card rendering for Forbidden Island using a new spritesheet with procedural fallback
- Register and wire up the new "Solitaire Tour" game across client, server, and preload scenes
- Update game icon and card asset bundles
2026-06-02 00:02:12 -06:00
Brian Fertig 6705f6bd15 `chore: update game icons sprite sheet and source file` 2026-06-01 21:35:50 -06:00
Brian Fertig 4c6fd9166c fix: correct tile hitbox alignment in ForbiddenIslandGame
Switch tile interaction from a manual container hit area to an invisible
centered child rectangle. This resolves a hitbox offset issue where the
previous implementation caused the hit area to be misaligned up and left.

Update game-icons assets.
2026-06-01 21:33:57 -06:00
Brian Fertig 7eaf0183e2 Forbidden Island Initial Commit 2026-06-01 20:36:18 -06:00
Brian Fertig 9dda7f4487 feat: add Mini Crossword game (5x5 curated puzzles, single-player)
- Frontend: Phaser scene for grid/clue rendering, keyboard navigation, win detection, and difficulty selection.
- Logic: Pure helpers for slot mapping, cell validation, and answer checking.
- Backend: Puzzle engine, JSON bank of 15 puzzles across 3 difficulties, API route, and game registry.
- Integrates into existing game menu and routing.
2026-06-01 18:27:50 -06:00
Brian Fertig 3e975521fb Blokus UI adjustments 2026-05-31 21:10:41 -06:00
Brian Fertig 50292b4a69 feat: add Spelling Bee solo word puzzle game
- Implement client-side Phaser scene and pure scoring/rank logic for the honeycomb-style word game.
- Add server-side puzzle generation engine with difficulty bands (easy/normal/hard) and dictionary pre-filtering.
- Register game metadata, frontend scene routing, and backend API endpoint (`/words/spellingbee/start`).
- Implements NYT-style rules: 7 letters (1 required center), 4+ length words, pangram bonus, and tiered rank progression.
2026-05-31 21:00:18 -06:00
Brian Fertig d6d7bc818b Game Icon Update 2026-05-31 20:39:55 -06:00
Brian Fertig df976b572a Added glow effect on Mastermind pegs 2026-05-31 20:28:40 -06:00
Brian Fertig aa9a3a0f6c feat: add Blokus board game with heuristic AI and Phaser UI
- Implement pure state engine for Blokus rules, move generation, and scoring
- Add board geometry, polyomino definitions, and orientation transforms
- Integrate heuristic single-ply AI with 5 skill levels (configurable noise/blunders)
- Create Phaser scene for board rendering, piece tray, ghost placement, and HUD
- Register game in server registry and update client routing/dispatch
2026-05-31 20:16:21 -06:00
Brian Fertig 2c0c7d7145 Icons and Old Maid Updates 2026-05-31 19:41:57 -06:00
Brian Fertig 57c0a55710 feat: use sprite sheet for Old Maid card rendering
- Replace custom-drawn Old Maid card with sprite frame (frame 13)
- Load oldmaid-cards.png spritesheet in PreloadScene
- Rename GOFISH_CARD_FRAME to OLDMAID_CARD_FRAME for clarity
2026-05-31 19:21:09 -06:00
Brian Fertig 2bb4d14c97 feat: add Old Maid card game
- Implement core game logic, AI opponent with skill scaling, and Phaser UI
- Register game in server registry and wire into app routing
- Add card assets and sprites
2026-05-31 19:14:30 -06:00
Brian Fertig da0dc25cdd feat: add game icons to menu and animated dock arrows to Battleship
- Replace `gameicons` spritesheet with `game-icons` and load it in PreloadScene
- Add `iconFrame` support to game registry and render icons next to menu buttons
- Introduce animated dock arrows in Battleship to improve ship placement UI
- Clean up arrow lifecycle management in Battleship scene
2026-05-31 18:25:32 -06:00
Brian Fertig 63df39442c feat: add Boggle word game with AI opponents and board solver
- Implement full Boggle frontend using Phaser, featuring a wooden tray UI, player word sheet, opponent cards, and an animated hourglass timer.
- Add AI scheduling system that simulates opponent word finds based on configurable skill levels and word length/rarity weighting.
- Introduce pure game logic for adjacency validation, path checking, and classic scoring with duplicate-word resolution.
- Add backend board generation and exhaustive solver using a dictionary trie, exposing `/api/words/boggle/start` for board setup.
- Register Boggle in the game registry, scene router, and opponent selection UI.
- Include tutorial assets for Parchisi.
2026-05-31 15:17:00 -06:00
Brian Fertig f5e74d7970 Tutorials 2026-05-31 13:54:32 -06:00
Brian Fertig 588925e564 feat: add Connect 4 game and image support to tutorial modal
- Register Connect 4 in server registry and frontend game config
- Add Connect 4 to slug dispatch and opponent select skill controls
- Update TutorialModal markdown parser to render embedded images
2026-05-31 13:39:00 -06:00
Brian Fertig f83b8e72e9 Text alignment 2026-05-31 13:11:22 -06:00
Brian Fertig 651ef51633 fix: adjust Battleship UI layout and positioning
Repositions ship pips and placement buttons to prevent overlap and improve visual alignment. Updates Y-coordinates for Randomize, Clear, and Ready buttons to fit within the game area, and shifts ship labels left for better spacing.
2026-05-31 13:01:05 -06:00
Brian Fertig 81d3a28195 fix: exclude Mastermind and Battleship from playfield selection
Prevents the playfield option section from appearing for Mastermind and Battleship games, which do not utilize playfield tiles in the same way as other games.
2026-05-31 12:52:16 -06:00
Brian Fertig 0bb32359b2 feat(mastermind): add Exact Placement scoring mode
Introduces a per-peg feedback system where each marker corresponds to the specific slot's result (exact, partial, or none) instead of aggregate counts. Added `scoreGuessPerPeg` logic, updated UI rendering and sound triggers to handle per-peg data, and added a scene toggle for switching between Standard and Exact Placement modes.
2026-05-31 12:44:38 -06:00
Brian Fertig 2c5bcbd478 Backgammon Tutorial 2026-05-31 12:22:51 -06:00
Brian Fertig 99497e19fa Backgammon Tutorial 2026-05-31 11:53:40 -06:00
Brian Fertig 0c416f362b feat(mastermind): improve UI layout and enhance peg reveal animation
- Relocate Leave button to the bottom of the game screen
- Extend peg reveal animation duration to 2.3s with smoother tick timing
- Introduce MASTERMIND_CALCULATE sound effect to play during the reveal
- Update audio preload and SFX registry to support the new sound
2026-05-31 10:19:42 -06:00
Brian Fertig 13b9d0d1cc Turn arrow placement 2026-05-31 10:01:18 -06:00
Brian Fertig 676a4d3106 feat: add Mastermind decryption duel game with 5 AI skill levels
- Introduce core game logic, AI engine, and Phaser UI for a cyberpunk-themed Mastermind implementation.
- AI features 5 difficulty tiers using random, consistent, and Knuth minimax strategies.
- Implement turn-based duel mechanics where player and AI race to crack each other's secret codes.
- Add neon visuals, peg-fly animations, staggered feedback reveals, and 7 custom sound effects.
- Register game in server registry, update menu/room scenes, preload assets, and include tutorial docs.
2026-05-31 09:53:37 -06:00
Brian Fertig b0d6817c54 Rounded Tutorial Buttons 2026-05-31 08:24:35 -06:00