feat: Implement draft and game phases with client views, dedicated managers, and server-side card image caching.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Draft & Deck Building Phase
|
||||
|
||||
## Objective
|
||||
Implement the "Draft Phase" (Pack Passing) and "Deck Building Phase" (Pool + Lands) logic and UI, bridging the gap between Lobby and Game.
|
||||
|
||||
## Changes
|
||||
1. **Backend - Draft Logic (`src/server/managers/DraftManager.ts`)**:
|
||||
* Implemented `DraftManager` class.
|
||||
* Handles pack distribution (3 packs per player).
|
||||
* Implements `pickCard` logic with queue-based passing (Left-Right-Left).
|
||||
* Manages pack rounds (Wait for everyone to finish Pack 1 before opening Pack 2).
|
||||
* Transitions to `deck_building` status upon completion.
|
||||
|
||||
2. **Server Integration (`src/server/index.ts`)**:
|
||||
* Added handlers for `start_draft` and `pick_card`.
|
||||
* Broadcasts `draft_update` events.
|
||||
|
||||
3. **Frontend - Draft UI (`src/client/src/modules/draft/DraftView.tsx`)**:
|
||||
* Displays active booster pack.
|
||||
* Timer (visual only for now).
|
||||
* Click-to-pick interaction.
|
||||
* Preview of drafted pool.
|
||||
|
||||
4. **Frontend - Deck Builder UI (`src/client/src/modules/draft/DeckBuilderView.tsx`)**:
|
||||
* **Split View**: Card Pool vs. Current Deck.
|
||||
* **Drag/Click**: Click card to move between pool and deck.
|
||||
* **Land Station**: Add basic lands (Plains, Island, Swamp, Mountain, Forest) with unlimited supply.
|
||||
* **Submit**: Sends deck to server (via `player_ready` - *Note: Server integration for deck storage pending final game start logic*).
|
||||
|
||||
5. **Integration (`GameRoom.tsx`)**:
|
||||
* Added routing based on room status: `waiting` -> `drafting` -> `deck_building` -> `game`.
|
||||
* Added "Start Real Draft" button to lobby.
|
||||
|
||||
## Status
|
||||
- **Drafting**: Fully functional loop. Players pick cards, pass packs, and proceed through 3 rounds.
|
||||
- **Deck Building**: UI is ready. Players can filter, build, and add lands.
|
||||
- **Next**: Need to finalize the "All players ready" logic in `deck_building` to trigger the actual `start_game` using the submitted decks. Currently, submitting triggers a placeholder event.
|
||||
|
||||
## To Verify
|
||||
- Check passing direction (Left/Right).
|
||||
- Verify Basic Land addition works correctly in the final deck object.
|
||||
Reference in New Issue
Block a user