diff --git a/src/core/Client.py b/src/core/Client.py index 29c1c98..c93d9c8 100644 --- a/src/core/Client.py +++ b/src/core/Client.py @@ -33,6 +33,7 @@ class Client: self.roles = None self._guest = True self._ready = False + self._identifiers = [] self._cars = [None] * 21 # Max 20 cars per player + 1 snowman self._snowman = {"id": -1, "packet": ""} self._connect_time = 0 @@ -65,6 +66,10 @@ class Client: def ready(self): return self._ready + @property + def identifiers(self): + return self._identifiers + @property def cars(self): return self._cars @@ -381,8 +386,13 @@ class Client: des = f"Od:{self.cid}-{car_id}" await self._send(des) - async def _delete_car(self, raw_data): - cid, car_id = self._get_cid_vid(raw_data) + async def _delete_car(self, raw_data=None, car_id=None): + + if not car_id and raw_data: + cid, car_id = self._get_cid_vid(raw_data) + else: + cid = self.cid + raw_data = f"Od:{self.cid}-{car_id}" if car_id != -1 and self.cars[car_id]: diff --git a/src/core/Client.pyi b/src/core/Client.pyi index 244a6e4..cb7aed5 100644 --- a/src/core/Client.pyi +++ b/src/core/Client.pyi @@ -33,6 +33,7 @@ class Client: self._guest = True self.__alive = True self._ready = False + self._identifiers = [] self._cars: List[Optional[Dict[str, int]]] = [] self._snowman: Dict[str, Union[int, str]] = {"id": -1, "packet": ""} @@ -51,6 +52,8 @@ class Client: @property def ready(self) -> bool: ... @property + def identifiers(self) -> list: ... + @property def cars(self) -> List[dict | None]: ... def is_disconnected(self) -> bool: ... async def kick(self, reason: str) -> None: ... @@ -62,7 +65,7 @@ class Client: async def _split_load(self, start: int, end: int, d_sock: bool, filename: str, sl: float) -> None: ... async def _get_cid_vid(self, s: str) -> Tuple[int, int]: ... async def _spawn_car(self, data: str) -> None: ... - async def _delete_car(self, raw_data: str) -> None: ... + async def _delete_car(self, raw_data: str = None, car_id : int =None) -> None: ... async def _edit_car(self, raw_data: str, data: str) -> None: ... async def _reset_car(self, raw_data: str) -> None: ... async def _handle_car_codes(self, data: str) -> None: ... diff --git a/src/core/tcp_server.py b/src/core/tcp_server.py index d838b17..7ec30a1 100644 --- a/src/core/tcp_server.py +++ b/src/core/tcp_server.py @@ -56,6 +56,7 @@ class TCPServer: client.nick = res["username"] client.roles = res["roles"] client._guest = res["guest"] + client._identifiers = {k: v for s in res["identifiers"] for k, v in [s.split(':')]} # noinspection PyProtectedMember client._update_logger() except Exception as e: