revisions / additions / GOD DAMN IT
This commit is contained in:
@@ -6,21 +6,22 @@ class CAHClient:
|
||||
platform: str,
|
||||
csid: str,
|
||||
connected_at: int,
|
||||
current_game: str | None):
|
||||
players: list):
|
||||
self.resource: str = resource
|
||||
self.platform: str = platform
|
||||
self.csid: str = csid
|
||||
self.connected_at: int = connected_at
|
||||
self.current_game: str | None = current_game
|
||||
self.players: list = players
|
||||
|
||||
def __iter__(self):
|
||||
return [value for value in self.__dict__.values() if isinstance(value, int) or isinstance(value, float)].__iter__()
|
||||
|
||||
|
||||
class CAHGame:
|
||||
|
||||
def __init__(self,
|
||||
id: str,
|
||||
rounds: int,
|
||||
resources: list[dict],
|
||||
players: list[dict],
|
||||
created_at: int,
|
||||
state: int,
|
||||
@@ -29,6 +30,7 @@ class CAHGame:
|
||||
):
|
||||
self.id: str = id
|
||||
self.rounds: int = rounds
|
||||
self.resources: list[dict] = resources
|
||||
self.players: list[dict] = players
|
||||
self.created_at: int = created_at
|
||||
self.state: int = state
|
||||
@@ -37,4 +39,21 @@ class CAHGame:
|
||||
|
||||
def __iter__(self):
|
||||
return [value for value in self.__dict__.values() if isinstance(value, int) or isinstance(value, float)].__iter__()
|
||||
|
||||
class CAHPlayer:
|
||||
def __init__(self,
|
||||
id: str,
|
||||
current_game: CAHGame,
|
||||
platform: str,
|
||||
related_resource: str,
|
||||
joined_at: str,
|
||||
handle: str):
|
||||
self.id = id
|
||||
self.current_game = current_game
|
||||
self.platform = platform
|
||||
self.related_resource = related_resource
|
||||
self.joined_at = joined_at
|
||||
self.handle = handle
|
||||
|
||||
|
||||
|
@@ -29,7 +29,6 @@ class ConnectionManager:
|
||||
'resource': _client.resource,
|
||||
'platform': _client.platform,
|
||||
'connected_at': _client.connected_at,
|
||||
'current_game': _client.current_game if _client.current_game else None,
|
||||
})
|
||||
|
||||
await websocket.send_json({
|
||||
@@ -62,6 +61,8 @@ class ConnectionManager:
|
||||
csid: str,
|
||||
handshakedClient: CAHClient):
|
||||
|
||||
if websocket in self.active_connections:
|
||||
self.active_connections.pop(websocket)
|
||||
self.active_connections[websocket] = {
|
||||
'websocket': websocket,
|
||||
'csid': csid,
|
||||
@@ -80,12 +81,26 @@ class ConnectionManager:
|
||||
await self.send_client_and_game_lists(state,
|
||||
websocket)
|
||||
|
||||
def disconnect(self, websocket: WebSocket, csid: str = None):
|
||||
async def disconnect(self, state, websocket: WebSocket, csid: str = None):
|
||||
disconnected = self.get_connection_by_ws(websocket)
|
||||
disconnected_client = disconnected.get('client')
|
||||
disconnected_resource = disconnected_client.resource
|
||||
await self.broadcast({
|
||||
"event": "client_disconnected",
|
||||
"ts": int(time.time()),
|
||||
"data": {
|
||||
"disconnected_resource": disconnected_resource,
|
||||
}
|
||||
})
|
||||
self.active_connections.pop(websocket)
|
||||
|
||||
|
||||
async def send(self, message: str, websocket: WebSocket):
|
||||
await websocket.send_json(message)
|
||||
|
||||
async def broadcast(self, message: str):
|
||||
for connection in self.active_connections:
|
||||
await connection.send_json(message)
|
||||
try:
|
||||
await connection.send_json(message)
|
||||
except:
|
||||
continue
|
Reference in New Issue
Block a user