Ejemplo n.º 1
0
 def _show_game_over_notification(self, game):
     game_over_notification = game.current_game.game_over_notification
     if game_over_notification is None:
         return
     if game.number_of_teams != 2:
         return
     winner_sims = tuple(game.winning_team.players)
     loser_sims = tuple(game.losing_team.players)
     for selectable_sim in itertools.chain(winner_sims, loser_sims):
         if selectable_sim.is_selectable:
             break
     else:
         return
     winning_score = game.winning_team.score
     losing_score = game.losing_team.score
     if len(winner_sims) == 1 and len(loser_sims) == 1:
         notification_type = game_over_notification.one_v_one
         winner_token = winner_sims[0]
         loser_token = loser_sims[0]
     elif len(winner_sims) == 1:
         notification_type = game_over_notification.one_v_many_winner
         winner_token = winner_sims[0]
         loser_token = LocalizationHelperTuning.get_comma_separated_sim_names(
             *loser_sims)
     elif len(loser_sims) == 1:
         notification_type = game_over_notification.one_v_many_loser
         winner_token = LocalizationHelperTuning.get_comma_separated_sim_names(
             *winner_sims)
         loser_token = loser_sims[0]
     else:
         notification_type = game_over_notification.many_v_many
         winner_token = LocalizationHelperTuning.get_comma_separated_sim_names(
             *winner_sims)
         loser_token = LocalizationHelperTuning.get_comma_separated_sim_names(
             *loser_sims)
     notification = notification_type(selectable_sim,
                                      resolver=SingleObjectResolver(
                                          game.owner))
     notification.show_dialog(additional_tokens=(winner_token, loser_token,
                                                 winning_score,
                                                 losing_score))
Ejemplo n.º 2
0
 def _show_game_over_winner_only_notification(self, game):
     game_over_winner_only_notification = game.current_game.game_over_winner_only_notification
     if game_over_winner_only_notification is None:
         return
     for selectable_sim in itertools.chain.from_iterable(
         [team.players for team in game._teams]):
         if selectable_sim.is_selectable:
             break
     else:
         return
     game.winning_team = max(game._teams, key=operator.attrgetter('score'))
     winner_sims = tuple(game.winning_team.players)
     winning_score = game.winning_team.score
     if game.number_of_players == 1:
         notification_type = game_over_winner_only_notification.play_alone
         if winner_sims:
             winner_token = winner_sims[0]
         else:
             all_players = [
                 player for team in game._teams for player in team.players
             ]
             winner_token = all_players[0]
             logger.error('Winner Sims {} is empty',
                          winner_sims,
                          owner='mkartika')
     else:
         notification_type = game_over_winner_only_notification.winner
         if len(winner_sims) == 1:
             winner_token = winner_sims[0]
         else:
             winner_token = LocalizationHelperTuning.get_comma_separated_sim_names(
                 *winner_sims)
     notification = notification_type(selectable_sim,
                                      resolver=SingleObjectResolver(
                                          game.owner))
     notification.show_dialog(additional_tokens=(winner_token,
                                                 winning_score))