diff --git a/python-api-src/library.cpp b/python-api-src/library.cpp index 3ea3049b0e53224197f3f591fb14bd49c5bce094..11857558e9db3c08b4028d1441d9d5a77eba7fea 100644 --- a/python-api-src/library.cpp +++ b/python-api-src/library.cpp @@ -23,8 +23,12 @@ PYBIND11_MODULE(library, m) .def(py::init()); // IDABot is a specialization of Agent - py::class_<IDABot, sc2::Agent>(m, "IDABot") - .def(py::init()); + py::class_<IDABot, PyIDABot, sc2::Agent>(m, "IDABot") + .def(py::init()) + .def("OnGameStart", &IDABot::OnGameStart) + .def("OnStep", &IDABot::OnStep) + .def("OnStep_UpdateIDABot", &IDABot::OnStep_UpdateIDABot) + .def("GetMyUnits", &IDABot::GetMyUnits); py::class_<sc2::PlayerSetup>(m, "PlayerSetup"); diff --git a/python-api-src/library.h b/python-api-src/library.h index 3720542c51ff3e197b45a530223d9320dac83d97..c8bdb794a34492ccfbd2f67a01eded7801d6e9db 100644 --- a/python-api-src/library.h +++ b/python-api-src/library.h @@ -19,5 +19,34 @@ public: } }; -// Defined +class PyIDABot : public IDABot +{ +public: + using IDABot::IDABot; + void OnGameStart() override + { + PYBIND11_OVERLOAD( + void, + IDABot, + OnGameStart + ); + } + void OnStep() override + { + PYBIND11_OVERLOAD( + void, + IDABot, + OnStep + ); + } + void OnStep_UpdateIDABot() override + { + PYBIND11_OVERLOAD( + void, + IDABot, + OnStep_UpdateIDABot + ); + } +}; + void define_typeenums(pybind11::module & m); \ No newline at end of file diff --git a/src/IDABot.h b/src/IDABot.h index 090c96b7e97bfeb445b185018049bd7e0984b5b0..902134d9c209a35d59e5db33c4814a4aad0e00c3 100644 --- a/src/IDABot.h +++ b/src/IDABot.h @@ -36,7 +36,7 @@ public: void OnGameStart() override; void OnStep() override; - void OnStep_UpdateIDABot(); + virtual void OnStep_UpdateIDABot(); /* My stuff