static bool game_configure(GameParams *game_params, const Settings &cmd_args) { game_configure_port(game_params, cmd_args); if (!game_configure_world(game_params, cmd_args)) { errorstream << "No world path specified or found." << std::endl; return false; } game_configure_subgame(game_params, cmd_args); return true; }
static bool get_world_from_cmdline(GameParams *game_params, const Settings &cmd_args) { std::string commanded_world = ""; // World name std::string commanded_worldname = ""; if (cmd_args.exists("worldname")) commanded_worldname = cmd_args.get("worldname"); // If a world name was specified, convert it to a path if (commanded_worldname != "") { // Get information about available worlds std::vector<WorldSpec> worldspecs = getAvailableWorlds(); bool found = false; for (u32 i = 0; i < worldspecs.size(); i++) { std::string name = worldspecs[i].name; if (name == commanded_worldname) { dstream << _("Using world specified by --worldname on the " "command line") << std::endl; commanded_world = worldspecs[i].path; found = true; break; } } if (!found) { std::string fullpath = porting::path_user + DIR_DELIM + "worlds" DIR_DELIM + commanded_worldname; game_configure_subgame(game_params, cmd_args); if (!loadGameConfAndInitWorld(fullpath, game_params->game_spec)) { dstream << _("World") << " '" << commanded_worldname << _("' not available. Available worlds:") << std::endl; print_worldspecs(worldspecs, dstream); return false; } else { commanded_world = fullpath; } } game_params->world_path = get_clean_world_path(commanded_world); return commanded_world != ""; } if (cmd_args.exists("world")) commanded_world = cmd_args.get("world"); else if (cmd_args.exists("map-dir")) commanded_world = cmd_args.get("map-dir"); else if (cmd_args.exists("nonopt0")) // First nameless argument commanded_world = cmd_args.get("nonopt0"); game_params->world_path = get_clean_world_path(commanded_world); return commanded_world != ""; }