From cb5375586144f6ed9cb3d9007dc571b74931dd32 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Bergstr=C3=B6m?= <davbe125@student.liu.se>
Date: Fri, 24 Aug 2018 14:24:08 +0200
Subject: [PATCH] Add ability to manually specify the path for the SC2 binary

---
 python-api-src/library.cpp |  1 +
 python-api-src/library.h   | 22 ++++++++++++++++++----
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/python-api-src/library.cpp b/python-api-src/library.cpp
index efa1fe9..1ce12d9 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 ec250c5..fb671e1 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());
+
     }
 };
 
-- 
GitLab