mirror of
https://github.com/rommapp/romm.git
synced 2026-02-19 07:50:57 +01:00
add join_room funct
This commit is contained in:
@@ -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"])
|
||||
|
||||
Reference in New Issue
Block a user