def decode_player(command: str): parts = command.split(ASSIGNMENT) if parts[0] == PLAYER: construction_arguments = parts[1].split(LIST_DELIMITER) if len(construction_arguments) == 2: try: return Result.get_positive((construction_arguments[0], int(construction_arguments[1]))) except ValueError as error: # WARNING Invalid argument return Result.get_negative(error) return Result.get_negative()
def _construct_player(self, command): result = P.decode_player(command) if not result.success: return Result.get_negative() name, number_of_players = result.result return Result.get_positive(Player(self.player.get_connection, name, number_of_players))
def _add_to_group(self): result = self._check_available_groups() if not result.success: return Result.get_negative() self._add_player_to_queue() result.result.add([self.player]) return Result.get_positive()
def _check_available_groups(self): for group in self.groups: if group.count + 1 <= group.min_players and group.count + 1 <= self.player.preferred_players: return Result.get_positive(group) return Result.get_negative()
def _send_invalid_input(self): try: self.player.tell(P.INVALID_INPUT) return Result.get_positive() except S.error as error: return Result.get_negative(error)