fs::path GetPath(PathType path_type) { switch (path_type) { case PATH_BINARY: return GetBinDir(); case PATH_RESOURCE: return GetResourceDir(); case PATH_DATA_ROOT: return GetRootDataDir(); case PATH_DATA_USER: return GetUserDataDir(); case PATH_CONFIG: return GetUserConfigDir(); case PATH_SAVE: return GetSaveDir(); case PATH_TEMP: return fs::temp_directory_path(); case PATH_PYTHON: #if defined(FREEORION_MACOSX) || defined(FREEORION_WIN32) return GetPythonHome(); #endif case PATH_INVALID: default: ErrorLogger() << "Invalid path type " << path_type; return fs::temp_directory_path(); } }
void HumanClientApp::StartServer() { std::string SERVER_CLIENT_EXE = ServerClientExe(); DebugLogger() << "HumanClientApp::StartServer: " << SERVER_CLIENT_EXE; #ifdef FREEORION_MACOSX // On OSX set environment variable DYLD_LIBRARY_PATH to python framework folder // bundled with app, so the dynamic linker uses the bundled python library. // Otherwise the dynamic linker will look for a correct python lib in system // paths, and if it can't find it, throw an error and terminate! // Setting environment variable here, spawned child processes will inherit it. setenv("DYLD_LIBRARY_PATH", GetPythonHome().string().c_str(), 1); #endif std::vector<std::string> args; std::string ai_config = GetOptionsDB().Get<std::string>("ai-config"); std::string ai_path = GetOptionsDB().Get<std::string>("ai-path"); args.push_back("\"" + SERVER_CLIENT_EXE + "\""); args.push_back("--resource-dir"); args.push_back("\"" + GetOptionsDB().Get<std::string>("resource-dir") + "\""); args.push_back("--log-level"); args.push_back(GetOptionsDB().Get<std::string>("log-level")); if (GetOptionsDB().Get<bool>("test-3d-combat")) args.push_back("--test-3d-combat"); if (ai_path != GetOptionsDB().GetDefaultValueString("ai-path")) { args.push_back("--ai-path"); args.push_back(ai_path); DebugLogger() << "ai-path set to '" << ai_path << "'"; } if (!ai_config.empty()) { args.push_back("--ai-config"); args.push_back(ai_config); DebugLogger() << "ai-config set to '" << ai_config << "'"; } else { DebugLogger() << "ai-config not set."; } m_server_process = Process(SERVER_CLIENT_EXE, args); }