diff --git a/backend/game.py b/backend/game.py
index b0e2ffd..857aea1 100644
--- a/backend/game.py
+++ b/backend/game.py
@@ -108,6 +108,18 @@ class Game:
print('scrap')
self.sio.emit('scrap', room=self.name, data=self.deck.peek_scrap_pile().__dict__)
+ def player_death(self, player: players.Player):
+ print(f'player {player.name} died')
+ self.players.pop(self.players.index(player))
+ if len(self.players) == 0:
+ print(f'no players left in game {self.name}')
+ return True
+ self.sio.emit('room', room=self.name, data={'name': self.name, 'started': self.started, 'players': [p.name for p in self.players]})
+ self.sio.emit('chat_message', room=self.name, data=f'{player.name} è morto.')
+ for p in self.players:
+ p.notify_self()
+ self.players_map = {c.name: i for i, c in enumerate(self.players)}
+
# game = Game()
# p1 = players.Player('p1')
diff --git a/backend/players.py b/backend/players.py
index 99f2c9c..2ebad5d 100644
--- a/backend/players.py
+++ b/backend/players.py
@@ -69,6 +69,8 @@ class Player:
self.sio.emit('characters', room=self.sid, data=json.dumps(available, default=lambda o: o.__dict__))
def notify_self(self):
+ if self.lives <= 0 and self.max_lives > 0:
+ self.game.player_death(self)
ser = self.__dict__.copy()
ser.pop('game')
ser.pop('sio')
@@ -80,6 +82,8 @@ class Player:
self.sio.emit('self_vis', room=self.sid, data=json.dumps(self.game.get_visible_players(self), default=lambda o: o.__dict__))
def play_turn(self):
+ if self.lives == 0:
+ self.end_turn(forced=True)
print(f'I {self.name} was notified that it is my turn')
self.was_shot = False
self.is_my_turn = True
diff --git a/frontend/src/components/Player.vue b/frontend/src/components/Player.vue
index 57d1c72..cc7f0b0 100644
--- a/frontend/src/components/Player.vue
+++ b/frontend/src/components/Player.vue
@@ -9,6 +9,10 @@
{{hint}}