feat: Pause/resume draft timers on host disconnect/reconnect and enable explicit player room departure.
This commit is contained in:
@@ -15,4 +15,5 @@
|
||||
- [Reconnection & Auto-Pick](./devlog/2025-12-16-191500_reconnection_and_autopick.md): Completed. Implemented session persistence, seamless reconnection, and 30s auto-pick on disconnect.
|
||||
- [Draft Interface UI Polish](./devlog/2025-12-16-195000_draft_ui_polish.md): Completed. Redesigned the draft view for a cleaner, immersive, game-like experience with no unnecessary scrolls.
|
||||
- [Resizable Draft Interface](./devlog/2025-12-16-200500_resizable_draft_ui.md): Completed. Implemented user-resizable pool panel and card sizes with persistence.
|
||||
- [Card Zoom (Dedicated Zone)](./devlog/2025-12-16-203000_zoom_zone.md): Completed. Refactored layout to show zoomed card in a dedicated side panel.
|
||||
- [Draft UI Zoom Zone](./devlog/2025-12-16-203000_zoom_zone.md): Completed. Implemented dedicated zoom zone for card preview.
|
||||
- [Host Disconnect Pause](./devlog/2025-12-16-213500_host_disconnect_pause.md): Completed. Specific logic to pause game when host leaves.
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# Host Disconnect Pause Logic
|
||||
|
||||
## Objective
|
||||
Ensure the game pauses for all players when the Host disconnects, preventing auto-pick logic from advancing the game state. enable players to leave cleanly.
|
||||
|
||||
## Changes
|
||||
1. **Server (`src/server/index.ts`)**:
|
||||
* Refactored socket handlers.
|
||||
* Implemented `startAutoPickTimer` / `stopAllRoomTimers` helpers.
|
||||
* Updated `disconnect` handler: Checks if disconnected player is passed host. If true, pauses game (stops all timers).
|
||||
* Updated `join_room` / `rejoin_room`: Resumes game (restarts timers) if Host reconnects.
|
||||
* Added `leave_room` event handler to properly remove players from room state.
|
||||
|
||||
2. **Frontend (`src/client/src/modules/lobby/LobbyManager.tsx`)**:
|
||||
* Updated `handleExitRoom` to emit `leave_room` event, preventing "ghost" connections.
|
||||
|
||||
3. **Frontend (`src/client/src/modules/lobby/GameRoom.tsx`)**:
|
||||
* Fixed build error (unused variable `setGameState`) by adding `game_update` listener.
|
||||
* Verified "Game Paused" overlay logic exists and works with the new server state (`isHostOffline`).
|
||||
|
||||
## Result
|
||||
Host disconnection now effectively pauses the draft flow. Reconnection resumes it. Players can leave safely.
|
||||
Reference in New Issue
Block a user