def start_crawl(self, game_id): if config.dgl_mode and game_id not in config.games: self.go_lobby() return if config.dgl_mode: game_params = dict(config.games[game_id]) if self.username == None: if self.watched_game: self.stop_watching() self.send_message("login_required", game=game_params["name"]) return if self.process: # ignore multiple requests for the same game, can happen when # logging in with cookies if self.game_id != game_id: self.go_lobby() return self.game_id = game_id # invalidate cached save info for lobby # TODO: invalidate for other sockets of the same player? self.invalidate_saveslot_cache(game_id) import process_handler if config.dgl_mode: game_params["id"] = game_id args = (game_params, self.username, self.logger) self.process = process_handler.CrawlProcessHandler(*args) else: self.process = process_handler.DGLLessCrawlProcessHandler( self.logger) self.process.end_callback = self._on_crawl_end self.process.add_watcher(self) try: self.process.start() except Exception: self.logger.warning("Exception starting process!", exc_info=True) self.process = None self.go_lobby() else: if self.process is None: # Can happen if the process creation fails self.go_lobby() return self.send_message("game_started") self.restore_mutelist() if config.dgl_mode: if self.process.where == {}: # If location info was found, the lobbys were already # updated by set_where_data update_all_lobbys(self.process) update_global_status()
def start_crawl(self, game_id): if config.dgl_mode and game_id not in config.games: self.go_lobby() return if config.dgl_mode: game_params = dict(config.games[game_id]) if self.username == None: if self.watched_game: self.stop_watching() self.send_message("login_required", game=game_params["name"]) return if self.process: # ignore multiple requests for the same game, can happen when # logging in with cookies if self.game_id != game_id: self.go_lobby() return self.game_id = game_id import process_handler if config.dgl_mode: game_params["id"] = game_id args = (game_params, self.username, self.logger, self.ioloop) if (game_params.get("compat_mode") or "client_prefix" in game_params): self.process = process_handler.CompatCrawlProcessHandler(*args) else: self.process = process_handler.CrawlProcessHandler(*args) else: self.process = process_handler.DGLLessCrawlProcessHandler( self.logger, self.ioloop) self.process.end_callback = self._on_crawl_end self.process.add_watcher(self) try: self.process.start() except Exception: self.logger.warning("Exception starting process!", exc_info=True) self.process = None self.go_lobby() else: if self.process is None: # Can happen if the process creation fails self.go_lobby() return self.send_message("game_started") if config.dgl_mode: if self.process.where == {}: # If location info was found, the lobbys were already # updated by set_where_data update_all_lobbys(self.process) update_global_status()