core: fix: matchmaking and game
This commit is contained in:
@ -13,29 +13,44 @@ class Waiter(AbstractRoomMember):
|
||||
|
||||
class WaitingRoom(AbstractRoom):
|
||||
|
||||
def __init__(self, room_manager, gamemode: str, mode: int):
|
||||
def __init__(self, room_manager, game_type: str, mode: int):
|
||||
|
||||
super().__init__(room_manager)
|
||||
self.mode = mode
|
||||
self.gamemode = gamemode
|
||||
self._member_list: set[Waiter]
|
||||
|
||||
self.mode: int = mode
|
||||
self.game_type: str = game_type
|
||||
|
||||
def append(self, waiter: Waiter):
|
||||
tmp: Waiter = self.get_member_by_user_id(waiter.user_id)
|
||||
|
||||
tmp: Waiter = self.get_member_by_user(waiter.user)
|
||||
if (tmp is not None):
|
||||
tmp.send("Connection close: Another connection open with the same user id.")
|
||||
self.remove(tmp)
|
||||
|
||||
waiter.socket.accept()
|
||||
self._member_list.append(waiter)
|
||||
|
||||
super().append(waiter)
|
||||
|
||||
class WaitingRoomManager(AbstractRoomManager):
|
||||
|
||||
def get(self, gamemode: str, mode: int):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
self._room_list: set[WaitingRoom]
|
||||
|
||||
|
||||
def get(self, game_type: str, mode: int) -> WaitingRoom:
|
||||
|
||||
for waiting_room in self._room_list:
|
||||
waiting_room: WaitingRoom
|
||||
if (waiting_room.mode == mode and waiting_room.gamemode == gamemode):
|
||||
if (waiting_room.mode == mode and waiting_room.game_type == game_type):
|
||||
return waiting_room
|
||||
tmp: WaitingRoom = WaitingRoom(self, gamemode, mode)
|
||||
|
||||
tmp: WaitingRoom = WaitingRoom(self, game_type, mode)
|
||||
|
||||
super().append(tmp)
|
||||
|
||||
return tmp
|
||||
|
||||
normal: WaitingRoomManager = WaitingRoomManager()
|
||||
waiting_room_manager: WaitingRoomManager = WaitingRoomManager()
|
Reference in New Issue
Block a user