feat: Implement deck builder magnified card view, land advice, basic land integration, and unlimited time for deck construction.
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# Basic Lands Handling
|
||||
|
||||
## Requirements
|
||||
- Upon draft room creation, basic lands from the selected sets must be cached and loaded.
|
||||
- During deck building, players must have access to an infinite number of these basic lands matching the selected sets.
|
||||
|
||||
## Implementation Details
|
||||
|
||||
### Server-Side
|
||||
- **Pack Generation**: Updated `/api/packs/generate` to extract unique basic lands from the processed card pool and return them in the response: `{ packs, basicLands }`.
|
||||
- **Room Management**: Updated `RoomManager` and `Room` interface to store `basicLands` array.
|
||||
- **Socket Events**: Updated `create_room` event handler to accept `basicLands` and pass them to the room creation logic.
|
||||
|
||||
### Client-Side
|
||||
- **State Management**: Added `availableLands` state to `App.tsx` with local storage persistence to persist lands between generation and lobby creation.
|
||||
- **Cube Manager**: Updated `handleGenerate` to parse the new API response and update specific state.
|
||||
- **Lobby Manager**:
|
||||
- Enhanced `handleCreateRoom` to include basic lands in the server-side image caching request.
|
||||
- Updated `create_room` socket emission to send the basic lands to the server.
|
||||
- **Deck Builder**:
|
||||
- Added a "Land Station" UI component.
|
||||
- If specific basic lands are available, it displays a horizontal scrollable gallery of the unique land arts.
|
||||
- Clicking a land adds a unique copy (with a specific ID) to the deck, allowing for infinite copies.
|
||||
- Preserved fallback to generic land counters if no specific lands are available.
|
||||
|
||||
## Verification
|
||||
- Verified flow from pack generation -> lobby -> room -> deck builder.
|
||||
- Validated that lands are deduplicated by Scryfall ID to ensure unique arts are offered.
|
||||
Reference in New Issue
Block a user