29 lines
1.4 KiB
Markdown
29 lines
1.4 KiB
Markdown
# Fix Submit Deck Button
|
|
|
|
## Issue
|
|
Users reported that "Submit Deck" button was not working.
|
|
|
|
## Root Causes
|
|
1. **Missing Event Handler**: The server was not listening for the `player_ready` event emitted by the client.
|
|
2. **Incomplete Payload**: The client was sending `{ roomId, deck }` but the server needed `playerId` to identify who was ready, which was missing from the payload.
|
|
3. **Missing State Logic**: The `RoomManager` did not have a concept of "Ready" state or "Playing" status, meaning the transition from Deck Building to Game was not fully implemented.
|
|
|
|
## Fixes
|
|
1. **Client (`DeckBuilderView.tsx`)**: Updated `player_ready` emission to include `playerId`.
|
|
2. **Server (`RoomManager.ts`)**:
|
|
- Added `ready` and `deck` properties to `Player` interface.
|
|
- Added `playing` to `Room` status.
|
|
- Implemented `setPlayerReady` method.
|
|
3. **Server (`index.ts`)**:
|
|
- Implemented `player_ready` socket handler.
|
|
- Added logic to check if *all* active players are ready.
|
|
- If all ready, automatically transitions room status to `playing` and initializes the game using `GameManager`, loading the submitted decks.
|
|
- ensured deck loading uses cached images (`card.image`) if available.
|
|
|
|
## Verification
|
|
1. Draft cards.
|
|
2. Build deck.
|
|
3. Click "Submit Deck".
|
|
4. Server logs should show "All players ready...".
|
|
5. Client should automatically switch to `GameView` (Battlefield).
|