def as_omniscient_game(self, for_username): """ Return an omniscient game data object copy of this game. """ game = Game.from_dict(self.to_dict()) game.message_history = self.get_message_history( strings.OMNISCIENT_TYPE) game.messages = self.get_messages(strings.OMNISCIENT_TYPE) game.phase_abbr = game.current_short_phase for power in game.powers.values(): # type: Power power.role = strings.OMNISCIENT_TYPE power.tokens.clear() game.role = strings.OMNISCIENT_TYPE game.controlled_powers = self.get_controlled_power_names(for_username) game.observer_level = self.get_observer_level(for_username) game.daide_port = self.server.get_daide_port( self.game_id) if self.server else None return game
def as_power_game(self, power_name): """ Return a player game data object copy of this game for given power name. """ for_username = self.get_power(power_name).get_controller() game = Game.from_dict(self.to_dict()) game.error = [] game.message_history = self.get_message_history(power_name) game.messages = self.get_messages(power_name) game.phase_abbr = game.current_short_phase related_power_names = self.get_related_power_names(power_name) for power in game.powers.values(): # type: Power power.role = power.name power.tokens.clear() if power.name not in related_power_names: power.vote = strings.NEUTRAL power.orders.clear() game.role = power_name game.controlled_powers = self.get_controlled_power_names(for_username) game.observer_level = self.get_observer_level(for_username) game.daide_port = self.server.get_daide_port( self.game_id) if self.server else None return game