diff --git a/python-api-src/library.cpp b/python-api-src/library.cpp index efa1fe9a2a2529f53f14dadcedf2341fc9d89a2b..1ce12d9bfb1abc2ca68c438d8041326664721bd0 100644 --- a/python-api-src/library.cpp +++ b/python-api-src/library.cpp @@ -19,6 +19,7 @@ PYBIND11_MODULE(library, m) py::class_<Coordinator>(m, "Coordinator") .def(py::init()) + .def(py::init<std::string>()) .def("set_participants", &sc2::Coordinator::SetParticipants, "participants"_a) .def("launch_starcraft", &sc2::Coordinator::LaunchStarcraft) .def("start_game", &sc2::Coordinator::StartGame, "map_path"_a) diff --git a/python-api-src/library.h b/python-api-src/library.h index ec250c5bdc1fc2f474f88fbf2577866a970d355f..fb671e11555b6bfad74f8fc45baf7093a3b89e6c 100644 --- a/python-api-src/library.h +++ b/python-api-src/library.h @@ -14,12 +14,26 @@ using namespace pybind11::literals; class Coordinator : public sc2::Coordinator { public: - // TODO: We might not always want default value when we run on Linux Coordinator() : sc2::Coordinator() { - char *argv[] = { "executable", NULL}; - int argc = sizeof(argv) / sizeof(char*) - 1; - LoadSettings(argc, argv); + std::vector<std::string> arguments = { "pycommandcenter" }; + CustomLoadSettings(arguments); + } + + Coordinator(std::string path) : sc2::Coordinator() + { + std::vector<std::string> arguments = { "pycommandcenter", "-e", path }; + CustomLoadSettings(arguments); + } + + void CustomLoadSettings(std::vector<std::string> arguments) + { + std::vector<char*> argv; + for (const auto& arg : arguments) + argv.push_back((char*)arg.data()); + argv.push_back(nullptr); + LoadSettings(argv.size() - 1, argv.data()); + } };