add join_room funct

This commit is contained in:
Georges-Antoine Assi
2025-11-21 13:23:01 -05:00
parent 0967df7789
commit 2d247dc6dc

View File

@@ -56,15 +56,14 @@ async def open_room(sid: str, data: RoomData):
max_players=data.get("maxPlayers") or DEFAULT_MAX_PLAYERS,
)
stored_session = await socket_handler.socket_server.get_session(sid)
await socket_handler.socket_server.enter_room(sid, session_id)
await socket_handler.socket_server.save_session(
sid,
{
"session_id": session_id,
"player_id": player_id,
"environ": (await socket_handler.socket_server.get_session(sid)).get(
"environ"
),
"environ": stored_session.get("environ"),
},
)
await socket_handler.socket_server.emit(
@@ -72,3 +71,43 @@ async def open_room(sid: str, data: RoomData):
)
return None
@socket_handler.socket_server.on("join-room") # type: ignore
async def join_room(sid: str, data: RoomData):
extra_data = data["extra"]
session_id = extra_data["sessionid"]
player_id = extra_data["userid"] or extra_data["playerId"]
if not session_id or not player_id:
return "Invalid data: sessionId and playerId required"
if session_id not in netplay_rooms:
return "Room not found"
room = netplay_rooms[session_id]
if room["password"] and room["password"] != extra_data.get("room_password"):
return "Incorrect password"
if len(room["players"].keys()) >= room["max_players"]:
return "Room is full"
room["players"][player_id] = NetplayPlayerInfo(
socket_id=sid,
player_name=extra_data.get("player_name") or f"Player {player_id}",
user_id=extra_data.get("userid"),
player_id=extra_data.get("playerId"),
)
stored_session = await socket_handler.socket_server.get_session(sid)
await socket_handler.socket_server.enter_room(sid, session_id)
await socket_handler.socket_server.save_session(
sid,
{
"session_id": session_id,
"player_id": player_id,
"environ": stored_session.get("environ"),
},
)
await socket_handler.socket_server.emit("users-updated", room["players"])