Files
mtg-online-drafter/docs/development/devlog/2025-12-17-162500_test_deck_feature.md

1.6 KiB

Test Deck Feature Implementation

Requirements

  • Allow users to "Test Deck" directly from the Cube Manager (Pack Generator).
  • Create a randomized deck from the generated pool (approx. 23 spells + 17 lands).
  • Start a solo game immediately.
  • Enable return to lobby.

Implementation Details

Client-Side Updates

  • App.tsx: Passed availableLands to CubeManager to allow for proper basic land inclusion in randomized decks.
  • CubeManager.tsx:
    • Added handleStartSoloTest function.
    • Logic: Flattens generated packs, separates lands/spells, shuffles and picks 23 spells, adds 17 basic lands (using availableLands if available).
    • Emits start_solo_test socket event with the constructed deck.
    • On success, saves room ID to localStorage and navigates to the Lobby tab using onGoToLobby.
    • Added "Test Solo" button to the UI next to "Play Online".
  • LobbyManager.tsx: Existing rejoin_room logic (triggered on mount via localStorage) handles picking up the active session.

Server-Side Updates

  • src/server/index.ts:
    • Updated rejoin_room handler to emit game_update if the room status is playing. This ensures that when the client navigates to the lobby and "rejoins" the solo session, the game board is correctly rendered.

User Flow

  1. User generates packs in Cube Manager.
  2. User clicks "Test Solo".
  3. System builds a random deck and creates a solo room on the server.
  4. UI switches to "Online Lobby" tab.
  5. Lobby Manager detects the active session and loads the Game Room.
  6. User plays the game.
  7. User can click "Leave Room" icon in the sidebar to return to the Lobby creation screen.