From a6e1d05a52f7e4a7b39e343c81393fd8f7eb2ac5 Mon Sep 17 00:00:00 2001 From: Ben Date: Mon, 19 Aug 2019 02:27:14 +0100 Subject: [PATCH] General improvements to _client_disconnected This isn't staying. Potential decorator for individual (and multiple) disconnect (and connect?) handlers to be used within the handler modules. --- houdini/penguin.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/houdini/penguin.py b/houdini/penguin.py index bf2a7f0..a027957 100644 --- a/houdini/penguin.py +++ b/houdini/penguin.py @@ -292,11 +292,17 @@ class Penguin(Spheniscidae): '{} removed their background item'.format( self.data.username)) - async def _client_connected(self): - if self.room is not None: - return await self.room.remove_penguin(self) + async def _client_disconnected(self): + if self.joined_world: + if self.room is not None: + await self.room.remove_penguin(self) - await super()._client_connected() + del self.server.penguins_by_id[self.data.id] + del self.server.penguins_by_username[self.data.username] + + await self.server.redis.hincrby('population', self.server.server_config['Id'], -1) + + await super()._client_disconnected() def __repr__(self): if self.data is not None: