game: add: defeated by forfeit
This commit is contained in:
@ -106,17 +106,11 @@ class Game(AbstractRoom):
|
||||
def _send_game_data(self, member: Spectator | Player):
|
||||
member.send("init_game", self.to_dict())
|
||||
|
||||
def everbody_is_here(self):
|
||||
for player in self.players:
|
||||
if not player.is_connected():
|
||||
return False
|
||||
return True
|
||||
def _everbody_is_here(self):
|
||||
return len(self.players) == len(self.get_players_connected())
|
||||
|
||||
def nobody_is_here(self):
|
||||
for player in self.players:
|
||||
if player.is_connected():
|
||||
return False
|
||||
return len(self.spectators) == 0
|
||||
def _nobody_is_here(self):
|
||||
return len(self.get_players_connected()) == 0
|
||||
|
||||
def _player_join(self, user_id: int, socket: WebsocketConsumer):
|
||||
|
||||
@ -130,7 +124,7 @@ class Game(AbstractRoom):
|
||||
|
||||
player.socket = socket
|
||||
|
||||
if (self.everbody_is_here()):
|
||||
if (self._everbody_is_here()):
|
||||
self.start()
|
||||
|
||||
self._update_player(player)
|
||||
@ -141,13 +135,22 @@ class Game(AbstractRoom):
|
||||
self._updated_players.append(player)
|
||||
|
||||
def finish(self, winner: Player):
|
||||
print("yo")
|
||||
self.broadcast("finish", {"winner": winner.to_dict()})
|
||||
self.model.finish(winner.user_id)
|
||||
|
||||
def _player_leave(self, player: Player):
|
||||
if (self.nobody_is_here()):
|
||||
if (self.model.started):
|
||||
self.finish(player)
|
||||
|
||||
connected_players: list[Player] = self.get_players_connected()
|
||||
|
||||
if (self.model.started):
|
||||
print(len(connected_players))
|
||||
if (len(connected_players) == 1):
|
||||
last_player: Player = connected_players[0]
|
||||
print("finish")
|
||||
self.finish(last_player)
|
||||
return
|
||||
|
||||
self._update_player(player)
|
||||
|
||||
def _spectator_join(self, user_id: int, socket: WebsocketConsumer):
|
||||
@ -178,7 +181,7 @@ class Game(AbstractRoom):
|
||||
self._player_leave(member)
|
||||
elif (isinstance(member, Spectator)):
|
||||
self._spectator_leave(member)
|
||||
if (self.nobody_is_here()):
|
||||
if (self._nobody_is_here()):
|
||||
self.stopped = True
|
||||
self.thread.join(10)
|
||||
self.game_manager.remove(self)
|
||||
|
Reference in New Issue
Block a user