diff --git a/backend/__init__.py b/backend/__init__.py index dc5c098..20ebcee 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -42,18 +42,21 @@ def connect(sid, environ): @sio.event def set_username(sid, username): - if not isinstance(sio.get_session(sid), Player): + ses = sio.get_session(sid) + if not isinstance(ses, Player): sio.save_session(sid, Player(username, sid, sio)) print(f'{sid} is now {username}') advertise_lobbies() - elif sio.get_session(sid).game == None or not sio.get_session(sid).game.started: + elif ses.game == None or not ses.game.started: print(f'{sid} changed username to {username}') - if len([p for p in sio.get_session(sid).game.players if p.name == username]) > 0: - sio.get_session(sid).name = f'{username}_{random.randint(0,100)}' + prev = ses.name + if len([p for p in ses.game.players if p.name == username]) > 0: + ses.name = f"{username}_{random.randint(0,100)}" else: - sio.get_session(sid).name = username - sio.emit('me', data=sio.get_session(sid).name, room=sid) - sio.get_session(sid).game.notify_room() + ses.name = username + sio.emit('chat_message', room=ses.game.name, data=f'_change_username|{prev}|{ses.name}') + sio.emit('me', data=ses.name, room=sid) + ses.game.notify_room() @sio.event def get_me(sid, room): @@ -96,6 +99,7 @@ def get_me(sid, room): if room['username'] == None or any([p.name == room['username'] for p in sio.get_session(sid).game.players]): sio.emit('change_username', room=sid) else: + sio.emit('chat_message', room=sio.get_session(sid).game.name, data=f"_change_username|{sio.get_session(sid).name}|{room['username']}") sio.get_session(sid).name = room['username'] sio.emit('me', data=sio.get_session(sid).name, room=sid) if not sio.get_session(sid).game.started: diff --git a/backend/bang/game.py b/backend/bang/game.py index 738d4ee..df2840f 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -368,7 +368,7 @@ class Game: print(f'player {player.name} left the game {self.name}') if player in self.spectators: self.spectators.remove(player) - return + return False if player.is_bot and not self.started: player.game = None if self.disconnect_bot and self.started: @@ -381,7 +381,7 @@ class Game: # player.lives = 0 # self.players.remove(player) if len([p for p in self.players if not p.is_bot]) == 0: - print(f'no players left in game {self.name}') + print(f'no players left in game {self.name}, shutting down') self.shutting_down = True self.players = [] self.spectators = [] @@ -445,7 +445,9 @@ class Game: p.win_status = p in winners self.sio.emit('chat_message', room=self.name, data=f'_won|{p.name}') p.notify_self() - eventlet.sleep(5.0) + for i in range(5): + self.sio.emit('chat_message', room=self.name, data=f'_lobby_reset|{5-i}') + eventlet.sleep(1) return self.reset() vulture = [p for p in self.get_alive_players() if p.character.check(self, characters.VultureSam)] diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 446e391..af02d4c 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -93,7 +93,9 @@ "guess_wrong": "{0} was wrong.", "fratelli_sangue": "{0} gave one of his lives to {1}.", "doctor_heal": "{0} was healed by the doctor.", - "respond": "{0} responded with {1}." + "respond": "{0} responded with {1}.", + "change_username": "{0} is now {1}.", + "lobby_reset": "Going back to lobby in {0} seconds..." }, "foc": { "leggedelwest": "He must play this card on this turn if possible." diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index 2b24ca6..1716ce9 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -93,7 +93,9 @@ "guess_wrong": "{0} ha sbagliato.", "fratelli_sangue": "{0} ha donato una delle sue vite a {1}.", "doctor_heal": "{0} è stato curato dal dottore.", - "respond": "{0} ha risposto con {1}." + "respond": "{0} ha risposto con {1}.", + "change_username": "{0} ha cambiato nome in {1}.", + "lobby_reset": "Si ritora all stanza in {0} secondi..." }, "foc": { "leggedelwest": "Ed è obbligato a usarla nel suo turno, se possibile"