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))
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))