def get_players_locations(playroom) -> Dict[str, str]: all_players = Player.objects.filter( playroom=playroom).prefetch_related('location') return { get_player_id(player): get_location_id(player.location) for player in all_players }
def start_game(self): self.players = controller.players.get_players(self.playroom) self.player_roles = controller.players.get_player_roles(self.playroom) self.player_locations = controller.players.get_players_locations(self.playroom) self.player_hands = controller.cards.get_players_hands(self.playroom) self.locations_disease_count = controller.maplocations.get_disease_count(self.playroom) self.locations_research_center = controller.maplocations.get_research_center(self.playroom) self.disease_status = controller.maplocations.get_disease_status(self.playroom) self.location_deck = controller.cards.get_location_deck(self.playroom) self.infection_deck = controller.cards.get_infection_deck(self.playroom) self.location_dump = controller.cards.get_location_dump(self.playroom) self.infection_dump = controller.cards.get_infection_dump(self.playroom) self.epidemics = self.playroom.epidemics self.outbreaks = self.playroom.outbreaks self.phase = PlayPhases.player_action.value self.epidemics_to_solve = self.playroom.epidemics_to_solve self.player_actions = self.playroom.player_actions self.location_network = get_location_graph(self.playroom) self.locations_types = get_location_types(self.playroom) self.current_player = get_player_id(self.playroom.current_player) self.nuit_tranquille = self.playroom.nuit_tranquille return self.serialize()
def get_players_hands(playroom) -> Dict[str, List[str]]: hands = defaultdict(list) all_player = playroom.players.all() cards = CardLocation.objects.filter(position=CardPosition.hand.value, player__in=all_player) \ .prefetch_related('player', 'card') for card in cards: hands[get_player_id(card.player)].append(get_card_id(card.card)) return hands
def get_players(playroom) -> List: all_players = Player.objects.filter(playroom=playroom).order_by('order') return [get_player_id(player) for player in all_players]
def get_player_roles(playroom) -> Dict[str, int]: all_players = Player.objects.filter(playroom=playroom) return {get_player_id(player): player.role for player in all_players}
def apply_action(self, player, game_action): dict_game_state_changes = game_action.apply_to_game_state(get_player_id(player), self.game_state) dict_game_state_changes['cancellable'] = game_action.cancellable return dict_game_state_changes
def get_next_infections(self, player, n, need_card): next_infections = self.game_state.get_next_infections(get_player_id(player), n, need_card) self.actions = [] return next_infections