feat: 5 categorías rotativas por partida + pool de 200 preguntas + mejoras UI
Cambios principales: - Tablero ahora muestra 5 categorías aleatorias (de 8 disponibles) - Pool de 200 preguntas (8 cats × 5 diffs × 5 opciones) - Preguntas rotan aleatoriamente entre partidas - Diseño mejorado estilo Jeopardy con efectos visuales - Socket singleton para conexión persistente - Nuevos sonidos: game_start, player_join, question_reveal, hover, countdown - Control de volumen vertical - Barra de progreso del timer en modal de preguntas - Animaciones mejoradas con Framer Motion Backend: - question_service: selección aleatoria de 5 categorías - room_manager: fix retorno de create_room - game_events: carga board desde DB, await en enter_room Frontend: - Game.tsx: tablero dinámico, efectos hover, mejor scoreboard - useSocket: singleton service, eventos con sonidos - SoundControl: slider vertical - soundStore: 5 nuevos efectos de sonido Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -50,7 +50,7 @@ def register_socket_events(sio: socketio.AsyncServer):
|
||||
await room_manager.init_player_stats(room["code"], player_name)
|
||||
|
||||
# Join socket room
|
||||
sio.enter_room(sid, room["code"])
|
||||
await sio.enter_room(sid, room["code"])
|
||||
|
||||
await sio.emit("room_created", {"room": room}, to=sid)
|
||||
|
||||
@@ -75,7 +75,7 @@ def register_socket_events(sio: socketio.AsyncServer):
|
||||
await room_manager.init_player_stats(room_code, player_name)
|
||||
|
||||
# Join socket room
|
||||
sio.enter_room(sid, room_code)
|
||||
await sio.enter_room(sid, room_code)
|
||||
|
||||
# Notify all players
|
||||
await sio.emit("player_joined", {"room": room}, room=room_code)
|
||||
@@ -147,13 +147,18 @@ def register_socket_events(sio: socketio.AsyncServer):
|
||||
)
|
||||
return
|
||||
|
||||
# Get board from data or generate
|
||||
board = data.get("board", {})
|
||||
|
||||
updated_room = await game_manager.start_game(room_code, board)
|
||||
# Load board from database and start game
|
||||
async with await get_db_session() as db:
|
||||
updated_room = await game_manager.start_game_with_db(db, room_code)
|
||||
|
||||
if updated_room:
|
||||
await sio.emit("game_started", {"room": updated_room}, room=room_code)
|
||||
else:
|
||||
await sio.emit(
|
||||
"error",
|
||||
{"message": "No hay preguntas disponibles para hoy. Contacta al administrador."},
|
||||
to=sid
|
||||
)
|
||||
|
||||
@sio.event
|
||||
async def select_question(sid, data):
|
||||
|
||||
Reference in New Issue
Block a user