revisions / additions / GOD DAMN IT

This commit is contained in:
2024-09-19 20:20:16 -04:00
parent 6265342393
commit a4d9fa797c
3 changed files with 242 additions and 34 deletions

View File

@@ -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

View File

@@ -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