matchmaking support multigame

This commit is contained in:
2024-03-25 14:53:15 +01:00
parent 09e7476127
commit c232f03c17
5 changed files with 79 additions and 47 deletions

View File

@ -18,17 +18,27 @@ class MatchMaking(WebsocketConsumer):
def connect(self):
user: User = self.scope["user"]
if (user.is_anonymous or not user.is_authenticated):
return
self.channel_layer.group_add(self.group_name, self.channel_name)
self.mode: int = int(self.scope['url_route']['kwargs']['mode'])
self.gamemode: str = self.scope['url_route']['kwargs']['gamemode']
self.group_name = self.mode
waiting_room: WaitingRoom = normal.get(self.mode)
waiting_room: WaitingRoom = normal.get(self.gamemode, self.mode)
waiting_room.append(Waiter(user.pk, self))
if (self.mode < 2 or self.mode > 4):
data: dict = {
"detail": "The mode must be > 1 and < 4.",
}
self.send(json.dumps(data))
self.disconnect(1000)
return
if (self.mode < 2 or self.mode > 4):
data: dict = {
"detail": "The mode must be > 1 and < 4.",
@ -45,7 +55,7 @@ class MatchMaking(WebsocketConsumer):
def disconnect(self, close_code):
super().close(close_code)
waiting_room: WaitingRoom = normal.get(self.mode)
waiting_room: WaitingRoom = normal.get(self.gamemode, self.mode)
waiter: Waiter = waiting_room.get_member_by_socket(self)
if (waiter is not None):
waiting_room.remove(waiter, close_code)